我的应用程序中有手电筒选项。然而,只有iPhone 4和iPhone 4S拥有手电筒灯。其他设备没有手电筒灯。如何找到当前设备型号?请帮我。谢谢。
我的应用程序中有手电筒选项。然而,只有iPhone 4和iPhone 4S拥有手电筒灯。其他设备没有手电筒灯。如何找到当前设备型号?请帮我。谢谢。
NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
NSMutableArray *torchDevices = [[NSMutableArray alloc] init];
BOOL hasTorch = NO;
for (AVCaptureDevice *device in devices) {
if ([device hasTorch]) {
[torchDevices addObject:device];
}
}
hasTorch = ([torchDevices count] > 0);
更多信息可在AV Foundation编程指南和AVCaptureDevice类参考中找到。
NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
BOOL hasTorch = NO;
for (AVCaptureDevice *device in devices) {
if ([device hasTorch]) {
hasTorch = YES;
break;
}
}
hasTorch现在将包含正确的值。
Swift 4
var deviceHasTorch: Bool {
return AVCaptureDevice.default(for: AVMediaType.video)?.hasTorch == true
}
这段代码将使您的设备具有打开手电筒的功能。但它也会检测手电筒是否已经打开或关闭,并执行相反的操作。
- (void)torchOnOff: (BOOL) onOff {
AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
if ([device hasTorch]) {
[device lockForConfiguration:nil];
if (device.torchMode == AVCaptureTorchModeOff) {
device.torchMode = AVCaptureTorchModeOn;
NSLog(@"Torch mode is on.");
} else {
device.torchMode = AVCaptureTorchModeOff;
NSLog(@"Torch mode is off.");
}
[device unlockForConfiguration];
}
}
devicesWithMediaType:
已被弃用。
Swift 4:
let discoverySession = AVCaptureDevice.DiscoverySession(deviceTypes: [.builtInWideAngleCamera], mediaType: .video, position: .back)
for device in discoverySession.devices {
if device.hasTorch {
return true
}
}
return false
Swift 4
if let device = AVCaptureDevice.defaultDevice(withMediaType: AVMediaTypeVideo) {
if (device.hasTorch) {
// Device has torch
} else {
// Device does not have torch
}
} else {
// Device does not support video type (and so, no torch)
}