如何确定IOS中是否有相机分辨率?

时间:2014-07-14 14:16:38

标签: objective-c ios7

我有一个允许用户激活相机的功能。现在我想让该用户选择他们选择的分辨率。问题是在我向他们提供解决方案之前,如何检查它是否可用。

UIImagePickerController *cameraUI = [[UIImagePickerController alloc] init];
cameraUI.sourceType = UIImagePickerControllerSourceTypeCamera;
cameraUI.mediaTypes =  [NSArray arrayWithObject:(NSString *)kUTTypeMovie];

/// Different Options If Avalaible
cameraUI.videoQuality = UIImagePickerControllerQualityType640x480;
cameraUI.videoQuality = UIImagePickerControllerQualityTypeIFrame960x540;
cameraUI.videoQuality = UIImagePickerControllerQualityTypeIFrame1280x720;

1 个答案:

答案 0 :(得分:1)

我不相信有一种已定义的方法来确定iOS SDK中的这种行为...

两种替代方法是使用现有密钥或使用检查当前设备的条件语句。

第一种选择: 使用现有的UIImagePickerControllerQualityTypeHigh, UIImagePickerControllerQualityTypeMedium and UIImagePickerControllerQualityTypeLow,您可以指定质量而不确切知道它是什么。这允许用户始终拥有可用的最佳选项

第二种选择: 使用条件语句检查当前设备版本,并将其与具有相机分辨率的硬核设备列表进行比较

#include <sys/types.h>
#include <sys/sysctl.h>

- (NSString *) currentPlatform { // get current device
    size_t size;
    sysctlbyname("hw.machine", NULL, &size, NULL, 0);
    char *machine = malloc(size);
    sysctlbyname("hw.machine", machine, &size, NULL, 0);
    NSString *platform = [NSString stringWithUTF8String:machine];
    free(machine);

    return platform;
}

// conditional statement 
NSString *device = [self currentPlatform];

if (device isEqualToString@"iPhone6,2") { // iPhone 5s 
    // return quality...
    // best bet is to look on Apple device spec and Wiki for deivce camera resolutions supported

}

有关设备的完整列表,请参阅此glist