使用BLE Itag控制Gopro的拍摄

背景

gopro可以用语音控制。
在人流攒动的地方,说一句”gopro开始录像”,保不准你成为万众瞩目的焦点。况且,其实在室外亲测gopro有时候很难听到你说了什么,你得凑近了,大声说。

那么可不可以用手机去控制gopro通断呢? 手机上有gopro官方的app,直接可以控制gopro的各种配置以及摄影,但是一手gopro,一手手机,都得单手操作,还是十分不方便。

仔细一想,我们其实只想要一个开关按钮,当我们想要摄影时候,按下开关,gopro开始摄影,当我们想停止,再按一下,gopro停止摄影。

于是我找到了一个叫做Itag的纽扣蓝牙设备,这个设备自带一个按钮,当按下这个按钮,就会向连接这个itag的设备发送通知。

思路

按下itag按钮之后, 我们只需要在接受到这个通知的时候告诉gopro开启摄影或者停止摄影,那么我们的需求就满足了。

gopro官方最近几年推出了BLE的API,所以控制gopro的工作也不是大问题。

我们可以在IOS上用corebluetooth建立两个连接,一个连接itag,一个连接gopro,并且订阅itag上的按钮消息,当接受到按钮消息,我们发送gopro摄影的通断命令给gopro。

官方demo

只需要修改官方demo的一部分地方,增加开始摄影,停止摄影,切换摄影模式,以及监听itag按钮通知的方法。

随便建立一个新的swiftui界面,初始化两个CentralManager,在onAppear中分别扫描gopro设备和itag设备。

在ui界面上建立两个按钮,分别对应按下之后连接gopro和itag设备,同时连接完gopro切换到摄影模式,连接完itag设备开始监听button的事件,同时注册handler,如果有button事件就控制gopro进行摄影和停止摄影。

注意点

注意一定要初始化两个CentralManger,一个CenteralManger是无法同时连接两个设备的。

注意在info.plist中添加background功能,并添加”use ble accessories”,否则可能我们屏幕锁了itag的按钮就失效了。