Ios 使用带AVFoundation的前置摄像头时,闪光灯不工作
我有一个使用AVFoundation的摄像头应用程序。当用户拍照时,他们可以按下按钮来打开和关闭闪光灯。现在这对后向摄像头非常有效,但我无法让它对前向摄像头起作用 无论我做什么,前置摄像头都不会使用闪光灯 下面是我用来在按下按钮时打开和关闭flash的代码:Ios 使用带AVFoundation的前置摄像头时,闪光灯不工作,ios,objective-c,avfoundation,avcapturedevice,ios-camera,Ios,Objective C,Avfoundation,Avcapturedevice,Ios Camera,我有一个使用AVFoundation的摄像头应用程序。当用户拍照时,他们可以按下按钮来打开和关闭闪光灯。现在这对后向摄像头非常有效,但我无法让它对前向摄像头起作用 无论我做什么,前置摄像头都不会使用闪光灯 下面是我用来在按下按钮时打开和关闭flash的代码: -(IBAction)toggleFlash { NSLog(@"Toggle flash button has been pressed"); NSArray *devices = [AVCaptureDevice devicesWi
-(IBAction)toggleFlash {
NSLog(@"Toggle flash button has been pressed");
NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
for (AVCaptureDevice *device in devices) {
if ([device hasFlash] == YES) {
NSLog(@"Current Device Flash Mode: %d", device.flashMode);
[device lockForConfiguration:nil];
if(device.flashMode == 0) {
[device setFlashMode:AVCaptureFlashModeOn];
NSLog(@"New device flash mode: %d", device.flashMode);
} else if (device.flashMode == 1) {
[device setFlashMode:AVCaptureFlashModeOff];
NSLog(@"New device flash mode: %d", device.flashMode);
} else if (device.flashMode == 2) {
[device setFlashMode:AVCaptureFlashModeOn];
}
[device unlockForConfiguration];
}
}
}
没有正面带有闪光灯的iOS设备。如果像您所说的,对于前置摄像头,
hasFlash
方法返回YES
,那么这是一个bug。考虑把A提交给苹果公司。您有说明该问题的示例代码,因此您可以附加它。您确定调试正确吗?如果我在iPhone上运行您的代码的缩短版本:
- (IBAction)button:(id)sender
{
NSLog(@"Toggle flash button has been pressed");
NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
int i = 0;
for (AVCaptureDevice *device in devices)
{
if ([device hasFlash] == YES)
NSLog(@"Device %d has flash!", i);
else
NSLog(@"Device %d has no flash!", i);
++i;
}
}
我得到这个结果:
2014-03-08 09:45:48.551 test[12162:60b] Toggle flash button has been pressed
2014-03-08 09:45:48.597 test[12162:60b] Device 0 has flash!
2014-03-08 09:45:48.600 test[12162:60b] Device 1 has no flash!
因此,苹果没有前置摄像头闪光灯,也没有bug。尽管这是一条老线索,但对于那些目前想在前置摄像头上用切换白屏“模仿”闪光灯并与设备的hasFlash属性相混淆的人来说: iPhone 6s和6s Plus前置摄像头是第一款 前向iOS摄像头对-hasFlash属性响应YES
资料来源:(段落:视网膜闪光)前向摄像头的
AVCaptureDevice
是否实际返回YES
用于hasplash
?据我所知,没有一款iOS设备有正面闪光灯。@robmayoff是的,所有的东西都包含在代码中:如果([device hasFlash]==YES),它正在成功切换并记录设备。当你一直按按钮时,flashMode为“0”,然后为“1”。也许它真的没有闪光灯。我想我只是假设它会。我百分之百肯定,没有iOS设备的正面有闪光灯。