Tasker入门(2):扫一扫,连接至蓝牙音箱
本文最后更新于 805 天前,其中的信息可能已经有所发展或是发生改变。

0x00 写在前面

家里购入了一台小爱音箱,但是小爱音箱只提供了 QQ 音乐服务,而当我想要听网易云的时候,就必须手动连接到小爱音箱,然后再播放音乐。这样显然非常麻烦。

而前段时间,小米提供了一个解决方案,就是使用一个 NFC 标签贴在音箱上,手机扫描这个 NFC 标签时,就会自动连接到音响并播放歌曲。

就是这个小米碰碰贴
就是这个小米碰碰贴

但是这个解决方案存在限制,只有部分机型才能够实现这样的功能。于是本文尝试利用 Tasker 来实现类似的功能,当手机扫描到某个 NFC 标签时,自动连接至小爱音箱。

0x01 制作 NFC 标签

为了实现预期的功能,首先需要准备一些空白的 NFC 贴纸。这种贴纸在淘宝上很多,也非常便宜,一般一张也才一块钱左右。我买的是 NFC 芯片为 NTAG213 的纯白色的贴纸。因为小爱音箱也是白色的,贴上去不会那么违和。

这种白色圆形的NFC贴纸一般1块钱一张
这种白色圆形的NFC贴纸一般1块钱一张

有了贴纸,就可以让手机扫描到 NFC 贴纸中的内容了。但是刚买来的贴纸里面都是空白的,所以要写入一些内容,这样方便手机分辨不同的贴纸。

这里我们使用 NFC Tools 这款应用向 NFC 贴纸写入内容。

可以在 Google Play 下载安装 NFC Tools
可以在 Google Play 下载安装 NFC Tools

下载并安装了 NFC Tools 这款应用后,打开应用就能看到如下图所示的界面。制作 NFC 标签主要用到「读」和「写」这两个选项卡。当应用处于「读」选项,且手机扫描到 NFC 标签时,就会看到下图中间所示的 NFC 标签界面。

NFC Tool应用界面
NFC Tool应用界面

不过现在「读」是没什么意义的,只是检测一下 NFC 标签正不正常。一般看到「可写」的值为「是」的话就行。现在把 NFC 标签挪开,点击进入应用中的「写」选项卡,点击界面中的「添加记录」。

添加记录的类型非常多,不过这里选择最简单的「文本」就行。在输入框中输入「小爱同学」,点击 OK,这时就可以准备写入了。

选择「文本」,输入「小爱音箱」
选择「文本」,输入「小爱音箱」

点击应用界面中的「写 / 19字节」按钮,就会弹出下图所示的界面。这时候扫描一下 NFC 标签,就成功实现写入了。

靠近 NFC 标签就会自动写入标签内容
靠近 NFC 标签就会自动写入标签内容

现在看看写入的内容,切换回「读」选项卡,拉到最下面,可以看到多出了一个「记录0」,内容就是刚刚设置的「小爱同学」。这样,一张用于扫描的 NFC 标签就做好了。

最下面多出了一个「记录0」
最下面多出了一个「记录0」

0x02 实现连接与断开蓝牙音箱的功能

接下来要通过 Tasker 实现连接与断开蓝牙音箱的功能。我不光希望扫描标签后可以连接,我还希望当处于连接状态时再扫描一次标签就自动断开连接。所以,就需要先想办法判断是否连接到了蓝牙音箱,再由 NFC 触发,实现连接或断开蓝牙音箱的功能。

这样一来,就有了两种方案:

  • 在连接或断开蓝牙时,判断蓝牙音箱的连接状态。但是 Tasker 本身没有提供这样的功能,只能借助官方的一个名为 AutoTools 的插件。但这个插件是付费的,而且扫描蓝牙连接状态的速度很慢,要好几秒才能扫描出来;
  • 创建两个配置文件和两个任务,其中一个配置文件和任务负责检测是否连接到了蓝牙音箱,并记录手机和蓝牙音箱是否连接;另一个任务负责连接或断开蓝牙音箱,剩下来的那个配置文件则用来检测 NFC 标签。

我选择的方案为后者,因为这种方案速度比较快,而且不用多买一个应用,还能减少运行在后台的程序数量。

所以接下来就是创建两个配置文件和两个任务。再用图梳理一下这两个配置文件和两个任务之间的关系和作用:

两个配置文件和两个任务之间的关系与作用
两个配置文件和两个任务之间的关系与作用

第一个任务:标记蓝牙音箱连接状态

首先创建第一个任务,也就是标记连接状态为变量 %MIAI_CONN。第一步就是判断 %bt_connected 这个变量是否为 true。这个变量可以检测符合某个条件的蓝牙设备是否已经连接。如果已连接,这个变量的值就是 true,否则的话就是 false

判断 %bt_connected 是否为 true
判断 %bt_connected 是否为 true

这里多说一句,就是在 Tasker 中,变量名的大小写是有讲究的。大写的变量名属于「全局变量」,也就是说不管是哪个任务,统统都能读取到这个变量的值,比如上一篇文章中的 %SMSRB 变量就是由 Tasker 提供的全局变量,这样所有任务都能读取到最近一条短信;而小写的变量是「局部变量」,这种变量就只能在某个任务内读取,不能被其他任务读取。

这里创建的 %MIAI_CONN 也是一个全局变量。正是因为它是全局变量,所以可以让两个任务之间传递信息,一个任务负责写入蓝牙连接状态,另一个任务则读取蓝牙连接状态。

第二步是将 %MIAI_CONN 的值设为 1,这样就表示已经连接到了蓝牙音箱;

第三步是「Else If」;

第四步是将 %MIAI_CONN 的值设为 0,这样就表示已经断开与蓝牙音箱的连接;

第五步是「End If」。

完整的步骤如下图所示。

第一个任务的完整步骤
第一个任务的完整步骤

第一个配置文件:检测蓝牙音箱是否连接

创建一个配置文件,触发的条件选择「事件」→「网络」→「BT Connection」,拉到页面最底下,在「名称」中填入蓝牙音箱的设备名称。比如我的蓝牙音箱设备名就叫「小爱音箱-3078」。

选择「事件」→「网络」→「BT Connection」
选择「事件」→「网络」→「BT Connection」

点击返回,就会弹出配置文件对应的任务列表,选择刚才创建的任务就行。这样就实现了检测蓝牙音箱是否已经与手机连接,并且会将连接状态保存到变量 %MIAI_CONN 这个变量中。如果连接了,这个变量值就是 1,否则就是 0

第二个任务:根据连接状态连接到蓝牙音箱

再创建一个任务,这个任务就是根据 %MIAI_CONN 变量的值来连接或断开连接。

第一步是「If」,判断 %MIAI_CONN 的值是否为 0,也就是没有连接到蓝牙音箱;

第二步就是连接到蓝牙音箱,选择「网络」→「Bluetooth Connection」,操作选择「Connect」,Device 填蓝牙音箱的设备名即可;

第三步是「Else If」;

第四步是断开与蓝牙音箱的连接,和第二步基本相同,但是把操作改为「Disconnect」;

第五步是「End If」。

连接到蓝牙音箱或断开连接
连接到蓝牙音箱或断开连接

完整的步骤如下:

完整步骤

这时可以试着点击左下角的三角形按钮「▶︎」,如果运行正常的话,点一下,蓝牙音箱会提示「蓝牙已连接」;再点一下,又提示「蓝牙已断开」;再点一下,又提示「蓝牙已连接」……如此循环。

0x03 将 NFC 贴纸作为触发条件

现在就是创建最后一个配置文件了,这个配置文件选择「事件」→「网络」→「NFC Tag」,然后在「内容」中填上 NFC 标签中的内容。如果不记得 NFC 标签里的内容或者不确定的话,也可以点击右边的「?」搜索符号,然后扫描一下 NFC 标签,就会自动填入该标签的内容了。

选择「事件」→「网络」→「NFC Tag」
选择「事件」→「网络」→「NFC Tag」

将配置文件的对应任务设置为上面的第二个任务,现在再测试一下,应该就能扫描 NFC 标签连接蓝牙音箱,再扫描一次断开连接了。

0xFF 写在后面

这一篇文章要比上一篇简单不少,毕竟不用涉及多少网络服务的操作以及代码相关的内容,但是通过这一篇文章,可以基本了解如何实现跨任务的信息传递以及蓝牙、NFC 的使用。

除了实现主动连接至蓝牙音箱以外,其实也可以稍微改进一下,比如可以实现一个简单的蓝牙报警器——当断开了某个蓝牙设备的连接时发出提醒,例如手环啊耳机啊电脑等等,都可以通过检测蓝牙连接状态来实现。甚至于可以在断开连接时记录下当前的时间、地理位置等信息。

以上就是本文的全部内容。

暂无评论

发送评论 编辑评论

上一篇
下一篇