Android 上如何主动断开蓝牙耳机?

2020-02-28 14:39:13 +08:00
 fansangg

昨天想写一个小工具,就是定时断开某个蓝牙设备的连接,直到今天,我翻遍了蓝牙相关的 api,都没找到可以断开蓝牙设备的方法

目前就

BluetoothA2dp::class.java.getMethod("disconnect",BluetoothDevice::class.java)

这个方法管点用,但是这个方法调用后系统又马上重连了。

想问问各位有没有什么妙招?

5026 次点击
所在节点    程序员
19 条回复
masker
2020-02-28 14:41:02 +08:00
tasker ?
fansangg
2020-02-28 14:48:07 +08:00
在 BluetoothA2dp 里还找到一个 hide 方法「 setPriority 」,本来想设置为 0 石狮的,但是在我的机器上反射调的时候报了 NoSuchMethodException
fansangg
2020-02-28 14:59:58 +08:00
@masker 和这个没有关系
ju5t4fun
2020-02-28 15:36:11 +08:00
反射调用 api 取消与耳机的配对,需要连接的时候再调用 api 重新配对?
fansangg
2020-02-28 15:57:12 +08:00
@ju5t4fun 这样就本末倒置了,我下次使用的时候还需要配对一把
ClarkAbe
2020-02-28 16:01:12 +08:00
@fansangg 关闭蓝牙
fansangg
2020-02-28 16:02:50 +08:00
@ClarkAbe 关闭蓝牙是最简单的,但是我蓝牙还连着手表,关闭蓝牙我手表也会断开
twttwt
2020-02-28 17:06:03 +08:00
BluetoothDevice 反射调用 cancelPairingUserInput 就行
fansangg
2020-02-28 17:24:32 +08:00
@twttwt 你这字面意思是取消配对输入啊,然后我试了一下 return 是 true,但是歌还是放着的。
Tuuure
2020-02-28 18:01:12 +08:00
断开蓝牙设备需要断开所有 Profile,蓝牙耳机一般需要调用 BluetoothA2dp 和 BluetoothHeadset 的 disconnect
also24
2020-02-28 18:02:48 +08:00
HangoX
2020-02-28 18:14:28 +08:00
@fansangg 关闭蓝牙好像不会关闭 ble
mgrddsj
2020-02-28 20:04:17 +08:00
我自用的方式:
Tasker + Secure Settings.
Secure Settings 里面有蓝牙连接 /断开管理。
Tasker 负责定时执行任务。
fansangg
2020-02-28 21:59:17 +08:00
@Tuuure 可以兄弟,下周划水的时候再试试 BluetoothHeadset 的 disconnect
mgrddsj
2020-02-29 21:30:56 +08:00
昨天随手顺便录了个 Tasker 的视频,B 站过审慢,不知道你还需不需要,不需要就无视我吧。
https://www.bilibili.com/video/av92469166/
JoDragon
2020-08-04 09:23:31 +08:00
兄弟,有办法了吗?试了好几个方法感觉都不太理想啊
fansangg
2020-08-04 17:27:49 +08:00
@JoDragon 没搞定,就没搞了
JoDragon
2020-08-05 14:04:13 +08:00
@fansangg 看了下源码确实像 @Tuuure 说的
fansangg
2020-08-06 10:06:55 +08:00
@JoDragon 你试试吧,反正我在 Android10 上无效

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/648336

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX