我正在尝试制作一个应用程序,每次收到远程蓝牙自拍杆之类的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()语句以阻止蓝牙在后台运行。
谢谢!