我在寻找一种方法来区分在运行时间的设备,配备了新的手臂处理(如iPhone3GS和一些ipod的3G)和配备装置的旧臂处理器。我知道我可以使用uname()来确定设备的模型,但作为唯一些iPod接触3G收到一个提高他们的手臂处理器,这是不够的。

因此,我在找一个这些:

  1. 一的方式检测模型处理器-我想没有.
  2. 一种方式确定是否臂霓虹灯说明的支持,从这,我可以得出一个答案。
  3. 一种方法确定设备总储存的大小-这结合已经知道的设备的模型可以hackishly引导我找到答案。
  4. < 输入随机的想法>

在此先感谢:)

有帮助吗?

解决方案

一个解决方法我可以认为,检测如果载ES2.0是可用的,因为较新的处理器启用。

这里有一个 文章在mobileorchard 在如何做到这一点。

其他提示

不正是你要求,但是一个简单的解决方案是建立自己的应用程序的脂肪,因此,它包含可执行代码都ARMv6和ARMv7.如果你这么做的适当代码将运行在处理自动的,你不需要做任何运行的检查。有效的,你让的加载程序做的运行检测。

要做到这一点,改变体系结构设置你的工业化项目"标准(armv6)"到"优化(armv6armv7)"

然后,在你执行你这么做:

#if defined __ARM_NEON__
    // Code that uses NEON goes here
#else  // defined __ARM_NEON__
    // Fallback code without NEON goes here
#endif // defined __ARM_NEON__

还有一个类似的宏观,可以用来检查(非霓虹灯)ARMv7特,我可不记得掉我的头顶。

如果你真的想要做的运行时分派,看一看 sysctlbyname 功能在libc.具体地说,我认为这看起来的 HW_MACHINE_ARCH 参数可能证明对你有用。

编辑:我撤回这个答案,因为它左出的一个明显的孔后来我意识到:什么做的时候,我们得到一个未知型在一些未来的硬件?这不是面向未来。还有,不确定性的记录状态,API没有帮助,给予苹果公司的零容忍使用情况的无证Api。

你应该使用Stephen佳能的答案和生成应用程序的脂肪。可靠的、面向未来的运行的检测是不可行的,在这个时候(对我的沮丧,我向你保证).

我知道这很糟糕,但是最佳的进入我的头脑是如果检测设备支持以视频记录。目前只有ARM7基础的iPhone和iPod的设备支持它,因此它是一个合法的方式,我猜。

这样做可以使用UIImagePickerController的availableMediaTypesForSourceType结合isSourceTypeAvailable在kUTTypeMovie.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top