收到LE蓝牙信号时如何使用takePicture()(Selfie Stick App)

时间:2019-03-02 14:12:06

标签: swift xcode bluetooth uiimagepickercontroller core-bluetooth

我正在尝试制作一个应用程序,每次收到远程蓝牙自拍杆之类的LE蓝牙信号时,都可以使用UIImagepickerController()中的takePicture()函数制作照片。

我已经在AppDelegate内对CoreBluetooh进行了编程,可以正常工作,并且无论我在应用程序中的哪个视图,我都可以多次接收到蓝牙信号类型字符串“ c”。

然后,我创建了一个带有名为“ CameraButton”的Button的ViewController,以打开像这样的相机:

@IBAction func CameraButton(_ sender: UIButton) {


    ImagePicker.delegate  = self
    ImagePicker.sourceType = .camera
    ImagePicker.showsCameraControls = false
    self.present(ImagePicker, animated: true, completion: nil)       
}

此按钮可以正常工作并打开相机,但是每次收到“ c”时我都无法从AppDelegate发送ImagePicker.takePicture()命令,因为我打印了“蓝牙值”,所以蓝牙不是问题已发送”。

func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) {

    let stringValue = String(data: characteristic.value!, encoding: String.Encoding.utf8)!

    if (stringValue == "c") {

          print("bluetooth value sent")

            ImagePicker.takePicture()

            }
        }

到目前为止,我通过在func外设内部声明一个布尔值来完成一幅图片,然后使用if()语句将函数ImagePicker.takePicture()移至按钮代码。但这只能制作一张照片,我想使其能够继续制作照片。你推荐我做什么?我的想法是按照说明将ImagePicker.takePicture()移至功能外围设备,或者在按钮内执行while()语句以阻止蓝牙在后台运行。

谢谢!

0 个答案:

没有答案