打開(kāi)相機(jī):

創(chuàng)新互聯(lián)公司專注于企業(yè)營(yíng)銷型網(wǎng)站建設(shè)、網(wǎng)站重做改版、納溪網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5、商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為納溪等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。
[cpp] view plain copy
//先設(shè)定sourceType為相機(jī),然后判斷相機(jī)是否可用(ipod)沒(méi)相機(jī),不可用將sourceType設(shè)定為相片庫(kù)
UIImagePickerControllerSourceType sourceType = UIImagePickerControllerSourceTypeCamera;
// if (![UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera]) {
// sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
// }
//sourceType = UIImagePickerControllerSourceTypeCamera; //照相機(jī)
//sourceType = UIImagePickerControllerSourceTypePhotoLibrary; //圖片庫(kù)
//sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum; //保存的相片
UIImagePickerController *picker = [[UIImagePickerController alloc] init];//初始化
picker.delegate = self;
picker.allowsEditing = YES;//設(shè)置可編輯
picker.sourceType = sourceType;
[self presentModalViewController:picker animated:YES];//進(jìn)入照相界面
[picker release];
打開(kāi)相冊(cè):(區(qū)分pad和iphone)
for iphone:
[cpp] view plain copy
UIImagePickerController *pickerImage = [[UIImagePickerController alloc] init];
if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {
pickerImage.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
//pickerImage.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
pickerImage.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:pickerImage.sourceType];
}
pickerImage.delegate = self;
pickerImage.allowsEditing = NO;
[self presentModalViewController:pickerImage animated:YES];
[pickerImage release];
for ipad:
[cpp] view plain copy
UIImagePickerControllerSourceType sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
//sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum; //保存的相片
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.allowsEditing = NO;//是否允許編輯
picker.sourceType = sourceType;
/*
如果從一個(gè)導(dǎo)航按鈕處呈現(xiàn),使用:
presentPopoverFromBarButtonItem:permittedArrowDirections:animated:;
如果要從一個(gè)視圖出呈現(xiàn),使用:
presentPopoverFromRect:inView:permittedArrowDirections:animated:
如果設(shè)備旋轉(zhuǎn)以后,位置定位錯(cuò)誤需要在父視圖控制器的下面方法里面重新定位:
didRotateFromInterfaceOrientation:(在這個(gè)方法體里面重新設(shè)置rect)
然后再次調(diào)用:
- (void)presentPopoverFromRect:(CGRect)rect inView:(UIView *)view permittedArrowDirections:(UIPopoverArrowDirection)arrowDirections animated:(BOOL)animated
*/
//UIPopoverController只能在ipad設(shè)備上面使用;作用是用于顯示臨時(shí)內(nèi)容,特點(diǎn)是總是顯示在當(dāng)前視圖最前端,當(dāng)單擊界面的其他地方時(shí)自動(dòng)消失。
UIPopoverController *popover = [[UIPopoverController alloc]initWithContentViewController:picker];
self.imagePicker = popover;
//permittedArrowDirections 設(shè)置箭頭方向
[self.imagePicker presentPopoverFromRect:CGRectMake(0, 0, 300, 300) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
[picker release];
[popover release];
點(diǎn)擊相冊(cè)中的圖片 貨照相機(jī)照完后點(diǎn)擊use 后觸發(fā)的方法
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary
*)info
點(diǎn)擊cancel 調(diào)用的方法
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
我是在做一個(gè)藍(lán)牙項(xiàng)目遇到這種問(wèn)題的,需求是藍(lán)牙連接后按設(shè)備按鈕調(diào)用相機(jī)并且控制相機(jī)拍照,因此我選擇使用自定義相機(jī),設(shè)備發(fā)送的參數(shù)都是在一個(gè)cordova插件中實(shí)現(xiàn)的,它的父類是NSObject類型的。當(dāng)我實(shí)現(xiàn)跳轉(zhuǎn)到自定義的相機(jī)控制器里面時(shí),一直出現(xiàn)whose view is not in the window hierarchy 這個(gè)錯(cuò)誤,最后,我把在 viewDidLoad 里面的方法轉(zhuǎn)移到 viewDidAppear 方法里面,然后就解決了。
該錯(cuò)誤簡(jiǎn)單的說(shuō),是由于 "ViewController" 還沒(méi)有被加載,就調(diào)用該 ViewController 或者 ViewController 內(nèi)的方法時(shí),就會(huì)報(bào)這個(gè)錯(cuò)誤。在不同地方調(diào)用 ViewController,解決的方法也不太一樣。
該錯(cuò)誤一般是由于在 viewDidLoad 里面調(diào)用引起的,解決辦法是轉(zhuǎn)移到 viewDidAppear 方法里面
解決辦法1:
解決辦法2:
參考地址:
使用UIImagePickerController來(lái)實(shí)現(xiàn)在項(xiàng)目中添加視頻和圖片的功能。
+ (BOOL)isSourceTypeAvailable:(UIImagePickerControllerSourceType)sourceType
指定的源類型是否可用,sourceType是枚舉類型:
UIImagePickerControllerSourceTypePhotoLibrary:照片庫(kù)
UIImagePickerControllerSourceTypeCamera:攝像頭
UIImagePickerControllerSourceTypeSavedPhotosAlbum:相簿
+ (NSArray *)availableMediaTypesForSourceType:(UIImagePickerControllerSourceType)sourceType
指定的源設(shè)備上可用的媒體類型,一般就是圖片和視頻
+ (BOOL)isSourceTypeAvailable:(UIImagePickerControllerSourceType)sourceType;
指定來(lái)源是否支持:
UIImagePickerControllerSourceTypePhotoLibrary:來(lái)自圖庫(kù)
UIImagePickerControllerSourceTypeCamera:來(lái)自相機(jī)
UIImagePickerControllerSourceTypeSavedPhotosAlbum:來(lái)自相冊(cè)
+ (BOOL)isCameraDeviceAvailable:(UIImagePickerControllerCameraDevice)cameraDevice
指定的攝像頭是否可用,cameraDevice是枚舉類型:
UIImagePickerControllerCameraDeviceRear:前置攝像頭
UIImagePickerControllerCameraDeviceFront:后置攝像頭
+ (BOOL)isFlashAvailableForCameraDevice:(UIImagePickerControllerCameraDevice)cameraDevice
指定攝像頭的閃光燈是否可用
+ (NSArray *)availableCaptureModesForCameraDevice:(UIImagePickerControllerCameraDevice)cameraDevice
獲得指定攝像頭上的可用捕獲模式,捕獲模式是枚舉類型:
UIImagePickerControllerCameraCaptureModePhoto:拍照模式
UIImagePickerControllerCameraCaptureModeVideo:視頻錄制模式
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
代理 - 拍攝或錄制完成 這里獲取圖片或視頻信息
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
代理 - 用戶取消拍攝
UIImageWriteToSavedPhotosAlbum(UIImage *image, id completionTarget, SEL completionSelector, void *contextInfo)
保存圖片到本地?相冊(cè)
UIVideoAtPathIsCompatibleWithSavedPhotosAlbum(NSString *videoPath)
能否將視頻保存到相簿 更安全的判斷
void UISaveVideoAtPathToSavedPhotosAlbum(NSString *videoPath, id completionTarget, SEL completionSelector, void *contextInfo)
保存視頻到本地?相冊(cè)
感謝崔大大的博客:iOS開(kāi)發(fā)系列--音頻播放、錄音、視頻播放、拍照、視頻錄制
感謝張大大的博客:AVFoundation Programming Guide(官方文檔翻譯)完整版中英對(duì)照
直接調(diào)用和間接調(diào)用。
1、ios相機(jī)拍照調(diào)用的是fuction方法直接調(diào)用相機(jī)啟動(dòng)程序,在啟動(dòng)和使用初期,同步識(shí)別其他功能及喚醒插件。
2、Android相機(jī)拍照調(diào)用的是user方法,下一步調(diào)用photo方法,再啟動(dòng)phoneP程序,逐步喚醒,流程式啟動(dòng)。
3、所以ios相機(jī)啟動(dòng)要比Android相機(jī)快,而且獲取圖片精度也高。
設(shè)置了UIImagePicker的allowEditing屬性為YES后,會(huì)出現(xiàn)一個(gè)方框,如果在其代理方法中通過(guò)
[info objectForKey:@"UIImagePickerControllerEditedImage"];
是獲取編輯框區(qū)域的圖片。如果想要獲取整個(gè)圖片的話,你需要使用下面的方法
[info objectForKey:@"UIImagePickerControllerOriginalImage"];
文章名稱:ios開(kāi)發(fā)拍照,iOS開(kāi)發(fā)拍照禁用麥克風(fēng)權(quán)限
分享URL:http://chinadenli.net/article47/dsedohj.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開(kāi)發(fā)、自適應(yīng)網(wǎng)站、云服務(wù)器、網(wǎng)站設(shè)計(jì)公司、、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)