c# - How do I get the iOS Device and Version in Monotouch -
how can determine iphone, ipod, ipad model using application? output like: iphone, iphone 3g, iphone 3gs etc
like answer plain objective c: answer question in objective c
took example , updated current list of ios devices , simulators of march 24th 3pm pst. enjoy.
using system; using system.runtime.interopservices; using monotouch.foundation; using monotouch.uikit; namespace yournamespace { public class iosdevicehardware { public const string hardwareproperty = "hw.machine"; public enum ioshardware { iphone, iphone3g, iphone3gs, iphone4, iphone4reva, iphone4cdma, iphone4s, iphone5gsm, iphone5cdmagsm, ipodtouch1g, ipodtouch2g, ipodtouch3g, ipodtouch4g, ipodtouch5g, ipad, ipad3g, ipad2, ipad2gsm, ipad2cdma, ipad2reva, ipadmini, ipadminigsm, ipadminicdmagsm, ipad3, ipad3cdma, ipad3gsm, ipad4, ipad4gsm, ipad4cdmagsm, iphonesimulator, iphoneretinasimulator, ipadsimulator, ipadretinasimulator, 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 ioshardware version { { var plen = marshal.allochglobal(sizeof(int)); sysctlbyname(iosdevicehardware.hardwareproperty, intptr.zero, plen, intptr.zero, 0); var length = marshal.readint32(plen); if (length == 0) { marshal.freehglobal(plen); return ioshardware.unknown; } var pstr = marshal.allochglobal(length); sysctlbyname(iosdevicehardware.hardwareproperty, pstr, plen, intptr.zero, 0); var hardwarestr = marshal.ptrtostringansi(pstr); marshal.freehglobal(plen); marshal.freehglobal(pstr); if (hardwarestr == "iphone1,1") return ioshardware.iphone; if (hardwarestr == "iphone1,2") return ioshardware.iphone3g; if (hardwarestr == "iphone2,1") return ioshardware.iphone3gs; if (hardwarestr == "iphone3,1") return ioshardware.iphone4; if (hardwarestr == "iphone3,2") return ioshardware.iphone4reva; if (hardwarestr == "iphone3,3") return ioshardware.iphone4cdma; if (hardwarestr == "iphone4,1") return ioshardware.iphone4s; if (hardwarestr == "iphone5,1") return ioshardware.iphone5gsm; if (hardwarestr == "iphone5,2") return ioshardware.iphone5cdmagsm; if (hardwarestr == "ipad1,1") return ioshardware.ipad; if (hardwarestr == "ipad1,2") return ioshardware.ipad3g; if (hardwarestr == "ipad2,1") return ioshardware.ipad2; if (hardwarestr == "ipad2,2") return ioshardware.ipad2gsm; if (hardwarestr == "ipad2,3") return ioshardware.ipad2cdma; if (hardwarestr == "ipad2,4") return ioshardware.ipad2reva; if (hardwarestr == "ipad2,5") return ioshardware.ipadmini; if (hardwarestr == "ipad2,6") return ioshardware.ipadminigsm; if (hardwarestr == "ipad2,7") return ioshardware.ipadminicdmagsm; if (hardwarestr == "ipad3,1") return ioshardware.ipad3; if (hardwarestr == "ipad3,2") return ioshardware.ipad3cdma; if (hardwarestr == "ipad3,3") return ioshardware.ipad3gsm; if (hardwarestr == "ipad3,4") return ioshardware.ipad4; if (hardwarestr == "ipad3,5") return ioshardware.ipad4gsm; if (hardwarestr == "ipad3,6") return ioshardware.ipad4cdmagsm; if (hardwarestr == "ipod1,1") return ioshardware.ipodtouch1g; if (hardwarestr == "ipod2,1") return ioshardware.ipodtouch2g; if (hardwarestr == "ipod3,1") return ioshardware.ipodtouch3g; if (hardwarestr == "ipod4,1") return ioshardware.ipodtouch4g; if (hardwarestr == "ipod5,1") return ioshardware.ipodtouch5g; if (hardwarestr == "i386" || hardwarestr=="x86_64") { if (uidevice.currentdevice.model.contains("iphone")) { if(uiscreen.mainscreen.scale > 1.5f) return ioshardware.iphoneretinasimulator; else return ioshardware.iphonesimulator; } else { if(uiscreen.mainscreen.scale > 1.5f) return ioshardware.ipadretinasimulator; else return ioshardware.ipadsimulator; } } return ioshardware.unknown; } } } }
Comments
Post a Comment