Question

Dans mon application j'ai l'option pour une lampe de poche.Howevver, que l'iPhone 4 et l'iPhone 4S ont lampes torches.D'autres dispositifs n'ont pas le flambeau de la lumière.Comment puis-je trouver de l'actuel modèle de l'appareil?S'il vous plaît aider moi.Merci à l'avance.

Était-ce utile?

La solution

Vous ne devez pas utiliser le modèle de périphérique comme indicateur de la présente fonctionnalité.Au lieu de cela, utilisez l'API qui vous indique exactement si la fonctionnalité est présente.

Dans votre cas, vous souhaitez utiliser la propriété AVCaptureDevice de -hasTorch:

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);

Plus d'informations est disponible dans le Guide de programmation de la Fondation AV et AvcaptureDevice Classe Référence

Autres conseils

Vous pouvez avoir moins de code et utiliser moins de mémoire que le code ci-dessus:

NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
BOOL hasTorch = NO;

for (AVCaptureDevice *device in devices) {
    if ([device hasTorch]) {
        hasTorch = YES;
        break;
    }
}

Hastorch contient maintenant la valeur correcte

Ce code donnera à votre appareil la possibilité d'allumer la lampe de poche.Mais il détectera également si la lampe de poche est allumée ou éteinte et fait le contraire.

- (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];
}

}

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)
}

devicesWithMediaType: est maintenant obsolète.

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

func deviceHasTorch() -> Bool {
    return AVCaptureDevice.default(for: AVMediaType.video)?.hasTorch == true
}

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top