2017-03-04 3 views
0

Ich stieß auf dieses Problem, wo ich Swift 3 in iOS9 kodieren, denn das ist etwa so alt, wie ich es erwarte die meisten nützlichen Geräte werden jetzt. Nicht jeder hat ein Upgrade durchgeführt - oder kann auf iOS10 aktualisieren. Mein iPad Mini kann nicht aktualisiert werden. Ich brauchte den Namen der Kamera und stieß auf abgeschriebenen Code, wenn ich in iOS 10 auf meinem iPhone lief. Ich fand die Antwort in Objective-C und führte sie durch Swiftify. Presto.Swift 3 und AVCaptureDevice Abschreibung, beim Versuch, Kameraname zu finden

Device name: Optional("Back Camera") 
Device name: Optional("Back Camera") 
Capture device found 
Capture session running 
Device name: Optional("Front Camera") 
Device name: Optional("iPhone Microphone") 

Antwort

1

Ok, das ist die Antwort auf beide bekommen Der Code auf ios9 ausgeführt wird, und 10 bis zu vermeiden Abwertung des Gerätes Bit, und den Namen der eingebauten Geräte zurückzukehren.

Dies ist in 10.

AVCaptureDevice.devices abgeschrieben()

So ist der Editor schlug ich den Code, den Sie hier beginnen zu sehen hinzufügen.

wenn #available ....

und Drucken der Vorrichtung lokalisierten Namen Ich kann nicht‘überall dokumentiert finden. So fand ich das, und änderte es zu Swift 3 mit Swiftify

NSLog (@ "Gerätename:% @", [device LocalizedName]);

Der Code gezeigt erzeugt diese

Device name: Optional("Back Camera") 
Device name: Optional("Back Camera") 
Capture device found 
Capture session running 
Device name: Optional("Front Camera") 
Device name: Optional("iPhone Microphone") 

Sorry, wenn dies verwirrend ist - aber der Code folgende ist ziemlich geradlinig. Ich hoffe es hilft.

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
    //======================= 

    captureSession.sessionPreset = AVCaptureSessionPresetHigh 

    if #available(iOS 10.0, *) { 
     if let devices = AVCaptureDevice.defaultDevice(withDeviceType: .builtInWideAngleCamera, mediaType: AVMediaTypeVideo, position: .back) { 

      print("Device name: \(devices.localizedName)") 

     } 
    } else { 
     // Fallback on earlier versions 
    } 

    if let devices = AVCaptureDevice.devices() as? [AVCaptureDevice] { 
     // Loop through all the capture devices on this phone 
     for device in devices { 

      print("Device name: \(device.localizedName)") 

      // Make sure this particular device supports video 
      if (device.hasMediaType(AVMediaTypeVideo)) { 
       // Finally check the position and confirm we've got the back camera 
       if(device.position == AVCaptureDevicePosition.back) { 
        captureDevice = device 
        if captureDevice != nil { 
         print("Capture device found") 
         beginSession() 
        } 
       } 
      } 
     } 
    } 
} 
Verwandte Themen