2017-03-04 7 views
0

私はこの問題を遭遇しました。ここでは、iOS9でSwift 3をコーディングしています。誰もがアップグレードしていない、またはiOS10にアップグレードすることはできません。私のiPad Miniはアップグレードできません。 私はカメラの名前を知る必要があり、私のiPhoneのiOS 10で動いているときには償却されたコードを見つけました。 私はObjective-Cの答えを見つけ、それをSwiftifyで実行しました。プレスト。Swift 3とAVCaptureDeviceの減価償却、カメラ名を探すとき

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

答えて

1

[OK]を、これは、デバイスのビットの減価償却費を避けるために、ios9上で実行されている コード、および10アップの両方を得ることへの答えである およびデバイスに組み込まれたの名前を返すように。

これは、だから、エディタは、私はあなたがここに先頭を参照のコードを追加提案10

AVCaptureDevice.devices()

で減価償却されます。

#available ....

と私はカントデバイスローカライズされた名前を印刷するには」どこにも文書化さ見つけた場合。だから私はこれを見つけてSwift 3に変更した。Swiftify

NSLog(@ "デバイス名:%@"、[device localizedName]);

これが混乱した場合に示されているコードは、申し訳ありませんが、この

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

を生成 - しかし、次のコードは非常に単純です。それが役に立てば幸い。

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() 
        } 
       } 
      } 
     } 
    } 
} 
関連する問題