gpt4 book ai didi

ipad - 在 Monotouch 中寻找 iPad 一代

转载 作者:行者123 更新时间:2023-12-01 04:43:52 24 4
gpt4 key购买 nike

在设置 openGl 表面之前,我需要确定我的应用运行的 iPad 版本。

如果它在旧 iPad 1 上运行,启用抗锯齿太慢了,而在 iPad 2+3 上应该没有性能问题,所以我需要先检测一下。

关于如何使用 Monotouch 检测 iPad 一代有什么想法吗?

最佳答案

感谢 Joachim,您的提示使我得到了以下解决方案,我已经在 1-3 代物理 iPad 上进行了测试,它应该也能够检测到其他 Apple 设备:

public enum HardwareVersion
{
iPhone2G,
iPhone3G,
iPhone3Gs,
iPhone4,
iPod1G,
iPod2G,
iPod3G,
Simulator,
iPad1G,
iPad2G,
iPad3G,
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 getHardwareVersion()
{
string HardwareProperty = "hw.machine";

// get the length of the string that will be returned
var pLen = Marshal.AllocHGlobal (sizeof(int));
sysctlbyname (HardwareProperty, IntPtr.Zero, pLen, IntPtr.Zero, 0);

var length = Marshal.ReadInt32 (pLen);

// check to see if we got a length
if (length == 0) {
Marshal.FreeHGlobal (pLen);
return HardwareVersion.Unknown;
}

// get the hardware string
var pStr = Marshal.AllocHGlobal (length);
sysctlbyname (HardwareProperty, pStr, pLen, IntPtr.Zero, 0);

// convert the native string into a C# string
var hardwareStr = Marshal.PtrToStringAnsi (pStr);
var ret = HardwareVersion.Unknown;

// determine which hardware we are running
if (hardwareStr == "iPhone1,1")
ret = HardwareVersion.iPhone2G;
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 == "iPod1,1")
ret = HardwareVersion.iPod1G;
else if (hardwareStr == "iPod2,1")
ret = HardwareVersion.iPod2G;
else if (hardwareStr == "iPod3,1")
ret = HardwareVersion.iPod3G;
else if (hardwareStr == "iPad1,1")
ret = HardwareVersion.iPad1G;
else if (hardwareStr == "iPad2,1")
ret = HardwareVersion.iPad2G;
else if (hardwareStr == "iPad3,1")
ret = HardwareVersion.iPad3G;
else if (hardwareStr == "i386" || hardwareStr == "x86_64" || hardwareStr == "x86_32" )
ret = HardwareVersion.Simulator;

// cleanup
Marshal.FreeHGlobal (pLen);
Marshal.FreeHGlobal (pStr);

return ret;
}

关于ipad - 在 Monotouch 中寻找 iPad 一代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9963407/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com