1
A
답변
1
이 the Link에서 답을 찾기 쉽게 액세스 할 수 있도록 나 또한 여기에 그 코드를 게시 있어요.
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;
}
}
}
}
0
다음은 빠른 Google 검색에서 찾은 스 니펫입니다. 최신 하드웨어 업데이트를 위해 사소한 작업을 수행해야합니다.
출처 : http://www.bscheiman.org/2010/08/30/detecting-hardware-type-monotouch/
using System;
using System.Runtime.InteropServices;
using MonoTouch.Foundation;
using MonoTouch.UIKit;
namespace YourNamespace
{
public class DeviceHardware
{
public const string HardwareProperty = "hw.machine";
public enum HardwareVersion
{
iPhone,
iPhone3G,
iPhone3GS,
iPhone4,
iPod1G,
iPod2G,
iPod3G,
iPad,
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 == "iPad1,1")
ret = HardwareVersion.iPad;
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 == "i386")
{
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;
}
}
}
}
+0
아이폰 5는 어떨까요? – dimka87il
+0
"최신 하드웨어 라운드 업데이트가 쉬워야합니다." – tomfanning
관련 문제
- 1. Android 플랫폼 개발을위한 크로스 플랫폼은 MonoTouch/Mono입니다.
- 2. MonoTouch - 크로스 플랫폼 API 추상화 레이어?
- 3. Monotouch ABAdressBook GetPhones Null 확인
- 4. Monotouch 두 프레임의 충돌 확인
- 5. 현재 도메인 확인
- 6. JavaScript 현재 URL 확인
- 7. 현재 활동 확인 Android
- 8. 현재 응답자를 확인 하시겠습니까?
- 9. 확인 현재 URL
- 10. 플랫폼 독립적 JavaScript : DOM의 존재 확인
- 11. monotouch -
- 12. Monotouch iPad 3G와 WiFi의 차이점을 알려주십시오. (GPS 확인)
- 13. 현재 도메인 컨트롤러 이름 확인
- 14. Railstutorial.org 현재 테스트 유효성 확인
- 15. CCMenuItemImage의 현재 이미지를 확인 하시겠습니까?
- 16. 현재 역할에 대한 회원 확인
- 17. avaudioplayer의 현재 재생 시점 확인
- 18. 날짜 시간이 현재 날짜인지 확인
- 19. Joomla 2.5 현재 페이지 확인
- 20. 현재 시스템 시간을 확인 하시겠습니까?
- 21. 포인터가 현재 프로세스에 매핑되는지 확인
- 22. 목록에서 현재 가리키는 항목 확인
- 23. 현재 파일이 주 파일인지 확인
- 24. MonoTouch/Objective-C - UIImageView가 현재 얼마나 많이 볼 수 있습니까?
- 25. 한 번 더 : LNK2005 (현재 확인) 및 LNK2019 (확인)
- 26. 크로스 플랫폼 모바일 게임?
- 27. Monotouch UITableView 또는 MonoTouch.Dialog
- 28. Monotouch UIImage에서 선 그리기
- 29. MongoDB 현재 진행 상황을 확인 하시겠습니까?
- 30. 현재 방문객이 Joomla의 백엔드에 로그인했는지 확인
내 게시물이 중복되었습니다. – tomfanning
복제 안 함 다른 답변으로 이동하면 링크를 참조하십시오. http://stackoverflow.com/questions/10889695/how-do-i-get-the-ios-device-and-version-in-monotouch/10889966 # 10889966 –
의견을 편집 한 후 질문을 편집했습니다. 또한 원본 소스를 인용하지 않습니다. – tomfanning