DaffodilGirl 2012-11-27 05:55 采纳率: 0%
浏览 2061

Monotouch检测当前平台

我想知道怎么样知道现在设备的平台。请大家帮忙,谢谢……

  • 写回答

1条回答

  • ce_la_vie 2012-11-27 08:12
    关注

    参考一下

    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 == "iPhone1,1")
                    ret = HardwareVersion.iPhone;
                else if (hardwareStr == "iPhone1,2")
                    ret = HardwareVersion.iPhone3G;
                else if (hardwareStr == "iPhone2,1")
                    ret = HardwareVersion.iPhone3GS;
                else if (hardwareStr == "iPhone3,1")
                    ret = HardwareVersion.iPhone4;
                else if (hardwareStr == "iPhone3,3")
                    ret = HardwareVersion.VerizoniPhone4;
                else if(hardwareStr == "iPhone4,1")
                    ret = HardwareVersion.iPhone4S;
                else if (hardwareStr == "iPad1,1")
                    ret = HardwareVersion.iPad;
                else if (hardwareStr == "iPad2,1")
                    ret = HardwareVersion.iPad2WIFI;
                else if (hardwareStr == "iPad2,2")
                    ret = HardwareVersion.iPad2GSM;
                else if (hardwareStr == "iPad2,3")
                    ret = HardwareVersion.iPad2CDMA;
                else if (hardwareStr == "iPad2,4")
                    ret = HardwareVersion.iPad2WIFI24;
                else if (hardwareStr == "iPad3,1")
                    ret = HardwareVersion.iPad3WIFI;
                else if (hardwareStr == "iPad3,2")
                    ret = HardwareVersion.iPad3GSM;
                else if (hardwareStr == "iPad3,3")
                    ret = HardwareVersion.iPad3CDMA;
                else if (hardwareStr == "iPod1,1")
                    ret = HardwareVersion.iPod1G;
                else if (hardwareStr == "iPod2,1")
                    ret = HardwareVersion.iPod2G;
                else if (hardwareStr == "iPod3,1")
                    ret = HardwareVersion.iPod3G;
                else if (hardwareStr == "iPod4,1")
                    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;
            }
        }
    }
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)