确定iPhone的硬件

确定iPhone的硬件,iphone,cocoa-touch,iphone-sdk-3.0,ios4,iphone-4,Iphone,Cocoa Touch,Iphone Sdk 3.0,Ios4,Iphone 4,我如何判断该应用程序是否在iPhone4、iPhone3GS或iPad上运行 我想确定我使用的是哪种硬件,如果是iPhone4,我想提供额外的功能(比如使用视频灯或陀螺传感器) 任何帮助都将不胜感激 谢谢 PS:我希望通过编程来确定这一点,而不是根据物理外观来确定 如果所需的功能可用,则应查找并使用API检查,而不是确定设备型号。例如,用于闪存的AVCaptureDevice的hasFlash属性和用于陀螺仪的CMMotionManager的gyroAvailable属性 如果你的应用程序可以在

我如何判断该应用程序是否在iPhone4、iPhone3GS或iPad上运行

我想确定我使用的是哪种硬件,如果是iPhone4,我想提供额外的功能(比如使用视频灯或陀螺传感器)

任何帮助都将不胜感激

谢谢


PS:我希望通过编程来确定这一点,而不是根据物理外观来确定

如果所需的功能可用,则应查找并使用API检查,而不是确定设备型号。例如,用于闪存的AVCaptureDevice的
hasFlash
属性和用于陀螺仪的CMMotionManager的
gyroAvailable
属性


如果你的应用程序可以在iOS4之前在iOS上运行,你还应该执行额外的检查,如果上面列出的属性和类在运行时可用。

而不是确定设备型号如果需要功能可用,你应该查找并使用API检查。例如,用于闪存的AVCaptureDevice的
hasFlash
属性和用于陀螺仪的CMMotionManager的
gyroAvailable
属性


如果您的应用程序可以在iOS4之前的iOS上运行,您还应该执行额外的检查,以确定上述属性和类在运行时是否可用。

RE:检测闪存是否可用的示例代码

   for (AVCaptureDevice *cameraDevice in [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo]) {
        if ([cameraDevice hasFlash]) {
            NSLog(@" Yay! A flash!"):
        }
    }

但是说真的,伙计,Vladimir给了你类名和方法名。如果你打开了文档,你会在一瞬间找到它——肯定比等待别人粘贴你五行代码要快。

RE:检测flash是否可用的示例代码

   for (AVCaptureDevice *cameraDevice in [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo]) {
        if ([cameraDevice hasFlash]) {
            NSLog(@" Yay! A flash!"):
        }
    }

但是说真的,伙计,Vladimir给了你类名和方法名。如果你打开了文档,你会在一瞬间找到它-肯定比等待别人粘贴你的五行代码要快。

对不起,现在不能这样做-稍后再尝试,你仍然需要它。Cocoa Dev:请注意,Vladimir指的是相机上的闪光灯功能,而不是闪光灯播放器,这在iOS上不存在。是的,我知道目前任何iOS设备上都没有可用的Adobe Flash。我还提到了设备上的LED闪光灯。很抱歉,现在无法做到这一点-稍后会尝试做到。您仍然需要它。Cocoa Dev:请注意,Vladimir指的是摄像头上的闪光灯功能,而不是iOS上不存在的Flash播放器。是的,我知道目前任何iOS设备上都没有Adobe Flash可用。我还提到了设备上的LED闪光灯。我不能为模拟器编译这个。其他人也有类似的问题吗?这实际上是一个非常常见的问题-在SDK 4和更高版本中(可能在以前的版本中,但在此之前我没有使用过它,所以我不能确定)没有i386版本的AVFoundation,或者至少是其中的一部分。我找到的唯一解决方案是将所有AVFoundation代码包装在#if!TARGET\u IPHONE\u SIMULATORI无法为模拟器编译此文件。其他人也有类似的问题吗?这实际上是一个非常常见的问题-在SDK 4和更高版本中(可能在以前的版本中,但在此之前我没有使用过它,所以我不能确定)没有i386版本的AVFoundation,或者至少是其中的一部分。我找到的唯一解决方案是将所有AVFoundation代码包装在#if!TARGET_IPHONE_Simulator这看起来是这个问题的重复:Idon宏不会告诉我是IPHONE 4还是IPHONE 3GS,而是告诉我是在iPad上还是IPHONE上或iPod Touch上。在项目文件的构建设置下(右键单击项目并选择“获取信息”),查看目标设备系列。我相信你需要将它设置为iPhone/iPad(通用二进制)才能正常工作。这看起来是这个问题的重复:Idon宏不会告诉我它是iPhone 4还是iPhone 3GS,它会告诉我在项目文件的构建设置下我是在iPad还是iPhone或iPod Touch上(右键单击该项目并选择“获取信息”),查看目标设备系列。我相信您需要将其设置为iPhone/iPad(通用二进制)才能正常工作。