问题描述
- Monotouch检测当前平台
- 我想知道怎么样知道现在设备的平台。请大家帮忙,谢谢……
解决方案
参考一下
using System;using System.Runtime.InteropServices;using MonoTouch.Foundation;using MonoTouch.UIKit;namespace Playersync_iPhone_v2 {public class DeviceHardware { public const string HardwareProperty = ""hw.machine""; public enum HardwareVersion { iPhone iPhone3G iPhone3GS iPhone4 VerizoniPhone4 iPhone4S iPod1G iPod2G iPod3G iPod4G iPad iPad2WIFI iPad2WIFI24 iPad2GSM iPad2CDMA iPad3WIFI iPad3GSM iPad3CDMA iPhoneSimulator iPhone4Simulator iPadSimulator Unknown } [DllImport(MonoTouch.Constants.SystemLibrary)] static internal extern int sysctlbyname([MarshalAs(UnmanagedType.LPStr)] string property IntPtr output IntPtr oldLen IntPtr newp uint newlen); public static HardwareVersion Version { get { var pLen = Marshal.AllocHGlobal(sizeof(int)); sysctlbyname(DeviceHardware.HardwareProperty IntPtr.Zero pLen IntPtr.Zero 0); var length = Marshal.ReadInt32(pLen); if (length == 0) { Marshal.FreeHGlobal(pLen); return HardwareVersion.Unknown; } var pStr = Marshal.AllocHGlobal(length); sysctlbyname(DeviceHardware.HardwareProperty pStr pLen IntPtr.Zero 0); var hardwareStr = Marshal.PtrToStringAnsi(pStr); var ret = HardwareVersion.Unknown; if (hardwareStr == ""iPhone11"") ret = HardwareVersion.iPhone; else if (hardwareStr == ""iPhone12"") ret = HardwareVersion.iPhone3G; else if (hardwareStr == ""iPhone21"") ret = HardwareVersion.iPhone3GS; else if (hardwareStr == ""iPhone31"") ret = HardwareVersion.iPhone4; else if (hardwareStr == ""iPhone33"") ret = HardwareVersion.VerizoniPhone4; else if(hardwareStr == ""iPhone41"") ret = HardwareVersion.iPhone4S; else if (hardwareStr == ""iPad11"") ret = HardwareVersion.iPad; else if (hardwareStr == ""iPad21"") ret = HardwareVersion.iPad2WIFI; else if (hardwareStr == ""iPad22"") ret = HardwareVersion.iPad2GSM; else if (hardwareStr == ""iPad23"") ret = HardwareVersion.iPad2CDMA; else if (hardwareStr == ""iPad24"") ret = HardwareVersion.iPad2WIFI24; else if (hardwareStr == ""iPad31"") ret = HardwareVersion.iPad3WIFI; else if (hardwareStr == ""iPad32"") ret = HardwareVersion.iPad3GSM; else if (hardwareStr == ""iPad33"") ret = HardwareVersion.iPad3CDMA; else if (hardwareStr == ""iPod11"") ret = HardwareVersion.iPod1G; else if (hardwareStr == ""iPod21"") ret = HardwareVersion.iPod2G; else if (hardwareStr == ""iPod31"") ret = HardwareVersion.iPod3G; else if (hardwareStr == ""iPod41"") ret = HardwareVersion.iPod4G; else if (hardwareStr == ""i386"" || hardwareStr==""x86_64"") { if (UIDevice.CurrentDevice.Model.Contains(""iPhone"")) ret = UIScreen.MainScreen.Bounds.Height * UIScreen.MainScreen.Scale == 960 || UIScreen.MainScreen.Bounds.Width * UIScreen.MainScreen.Scale == 960 ? HardwareVersion.iPhone4Simulator : HardwareVersion.iPhoneSimulator; else ret = HardwareVersion.iPadSimulator; } Marshal.FreeHGlobal(pLen); Marshal.FreeHGlobal(pStr); return ret; } }}}
时间: 2024-11-17 11:51:44