首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何判断cameraDevice是否可用?

如何判断cameraDevice是否可用?
EN

Stack Overflow用户
提问于 2010-10-14 18:29:50
回答 4查看 2.2K关注 0票数 3

在我当前的应用程序中,我允许用户向在线图像服务提交图像。我允许用户从他们的相册中选择或者用相机拍照。

然而,我有一个问题。如果正在使用的设备没有摄像头,而用户选择拍照,应用程序就会崩溃。我需要能够确定设备是否能够使用cameraDevice。

下面是我当前的代码,用于呈现一个UIActionSheet,它允许用户选择不同的选项。

代码语言:javascript
复制
#pragma mark -
#pragma mark UIImagePickerController
- (IBAction)ImagePicker {
UIActionSheet *sheet = [[UIActionSheet alloc] 
                        initWithTitle:@"" delegate:self 
                        cancelButtonTitle:@"Cancel" 
                        destructiveButtonTitle:nil 
                        otherButtonTitles:@"Choose An Existing Photo", @"Take A Photo", nil];
sheet.actionSheetStyle = UIActionSheetStyleDefault;
[sheet showInView:self.view];
[sheet release];
}

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {

if (buttonIndex == 0) {
    //Okay the UIImagePickerControllerSourceTypeSavedPhotosAlbum displays the 
    NSLog(@"Album");
    UIImagePickerController *picker = [[UIImagePickerController alloc] init];
    picker.delegate = self;
    picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
    [self presentModalViewController:picker animated:YES];
    [picker release];

} else if (buttonIndex == 1) {
    NSLog(@"Camera");
    UIImagePickerController *picker = [[UIImagePickerController alloc] init];
    picker.delegate = self;
    picker.sourceType = UIImagePickerControllerSourceTypeCamera;
    [self presentModalViewController:picker animated:YES];
    [picker release];
}
}

提前感谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-10-14 18:42:18

代码语言:javascript
复制
if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { NSLog(@"No camera!"); }
票数 6
EN

Stack Overflow用户

发布于 2012-04-05 17:27:31

类似这样的东西也可以工作:

代码语言:javascript
复制
NSString* b1 = @"Get from album";
NSString* b2 = nil;

BOOL cameraAvailable = [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera];

if ( cameraAvailable ) {
     b2 = @"Take a photo";   
}

UIActionSheet * sheet = [[UIActionSheet alloc] initWithTitle: alertTitle
                                                    delegate: self
                                           cancelButtonTitle: @"Cancel"
                                      destructiveButtonTitle: nil
                                           otherButtonTitles: b1, b2, nil];         
[sheet showInView: self.view];
[sheet release];
票数 1
EN

Stack Overflow用户

发布于 2010-10-14 19:00:11

我不会忘记,我必须添加标签和一个新属性,一个名为UIActionSheet的工作表。下面的代码是我如何让一切都工作的,绝对无缝的。

代码语言:javascript
复制
#pragma mark -
#pragma mark UIImagePickerController
- (IBAction)ImagePicker {

if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
sheet = [[UIActionSheet alloc] 
                        initWithTitle:@"" delegate:self 
                        cancelButtonTitle:@"Cancel" 
                        destructiveButtonTitle:nil 
                        otherButtonTitles:@"Choose An Existing Photo", nil];
sheet.actionSheetStyle = UIActionSheetStyleDefault;
[sheet showInView:self.view];
sheet.tag = 0;
[sheet release];
}

else {
    sheet = [[UIActionSheet alloc] 
                            initWithTitle:@"" delegate:self 
                            cancelButtonTitle:@"Cancel" 
                            destructiveButtonTitle:nil 
                            otherButtonTitles:@"Choose An Existing Photo", @"Take A Photo", nil];
    sheet.actionSheetStyle = UIActionSheetStyleDefault;
    [sheet showInView:self.view];
    sheet.tag = 1;
    [sheet release];
}

}

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {

switch (sheet.tag) {
    case 0:
        if (buttonIndex == 0) {
            //Okay the UIImagePickerControllerSourceTypeSavedPhotosAlbum displays the 
            NSLog(@"Album");
            UIImagePickerController *picker = [[UIImagePickerController alloc] init];
            picker.delegate = self;
            picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
            [self presentModalViewController:picker animated:YES];
            [picker release];

        }
        break;
    case 1:
        if (buttonIndex == 0) {
            //Okay the UIImagePickerControllerSourceTypeSavedPhotosAlbum displays the 
            NSLog(@"Album");
            UIImagePickerController *picker = [[UIImagePickerController alloc] init];
            picker.delegate = self;
            picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
            [self presentModalViewController:picker animated:YES];
            [picker release];

        } else if (buttonIndex == 1) {
            NSLog(@"Camera");
            UIImagePickerController *picker = [[UIImagePickerController alloc] init];
            picker.delegate = self;
            picker.sourceType = UIImagePickerControllerSourceTypeCamera;
            [self presentModalViewController:picker animated:YES];
            [picker release];
        }
        break;
}
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3932216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档