-->

检查该相机目前在iOS的应用程序中使用(Check which camera is currentl

2019-10-28 20:05发布

我写这对于用相机,类似于苹果AVCam拍照定制的视图的应用程序。 在这里面,我想打一个按钮消失,每次打开相机时都将重新出现闪光图标。 IE浏览器在使用前置摄像头,闪光灯按钮不能使用回它应该在那里和!

我给这家目前的代码是:

  AVCaptureDevicePosition position = [[videoInput device] position];

    if (position == AVCaptureDevicePositionBack) {
  self.flashButton.hidden == YES;
}

但它在videoInput的错误出现,我不知道为什么...任何文档,你可以指点我或想法在我的代码更改,将不胜感激!

编辑

基本上只是具体为什么它想出的“使用未声明的标识符的”与此代码错误:

AVCaptureDevicePosition position = [[videoInput device] position];

Answer 1:

下面的代码可以帮助你:

AVCaptureDeviceInput *newVideoInput;
AVCaptureDevicePosition currentCameraPosition = [[videoInput device] position];

if (currentCameraPosition == AVCaptureDevicePositionBack)
{
    currentCameraPosition = AVCaptureDevicePositionFront;
}
else
{
    currentCameraPosition = AVCaptureDevicePositionBack;
}

AVCaptureDevice *backFacingCamera = nil;
NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
for (AVCaptureDevice *device in devices) 
{
    if ([device position] == currentCameraPosition)
    {
        backFacingCamera = device;
    }
}
newVideoInput = [[AVCaptureDeviceInput alloc] initWithDevice:backFacingCamera error:&error];


Answer 2:

我一直在寻找类似的问题的解决方案,并与该过来了,它可能会为你(只在iOS8上的测试,并写在斯威夫特)工作:

var captureDevice : AVCaptureDevice?

...

var currentDevice:String = captureDevice?.localizedName as String!

if currentDevice.rangeOfString("Back Camera") != nil {
   //hide flash icon
} else if currentDevice.rangeOfString("Front Camera") != nil {
   //show flash icon
}

此代码假定你已经安装了摄像头正常

注意:这可能不是最好的办法,因为如果苹果决定改变localizedName这将打破。 而且,我知道这个问题是一个古老,但它可能会帮助别人谁在它绊倒



文章来源: Check which camera is currently in use in iOS Application