V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
fansangg
V2EX  ›  程序员

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

  •  
  •   fansangg · 2020-02-28 14:39:13 +08:00 · 5026 次点击
    这是一个创建于 1758 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    目前就

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

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

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

    19 条回复    2020-08-06 10:06:55 +08:00
    masker
        1
    masker  
       2020-02-28 14:41:02 +08:00 via Android
    tasker ?
    fansangg
        2
    fansangg  
    OP
       2020-02-28 14:48:07 +08:00
    在 BluetoothA2dp 里还找到一个 hide 方法「 setPriority 」,本来想设置为 0 石狮的,但是在我的机器上反射调的时候报了 NoSuchMethodException
    fansangg
        3
    fansangg  
    OP
       2020-02-28 14:59:58 +08:00
    @masker 和这个没有关系
    ju5t4fun
        4
    ju5t4fun  
       2020-02-28 15:36:11 +08:00
    反射调用 api 取消与耳机的配对,需要连接的时候再调用 api 重新配对?
    fansangg
        5
    fansangg  
    OP
       2020-02-28 15:57:12 +08:00
    @ju5t4fun 这样就本末倒置了,我下次使用的时候还需要配对一把
    ClarkAbe
        6
    ClarkAbe  
       2020-02-28 16:01:12 +08:00 via iPhone
    @fansangg 关闭蓝牙
    fansangg
        7
    fansangg  
    OP
       2020-02-28 16:02:50 +08:00
    @ClarkAbe 关闭蓝牙是最简单的,但是我蓝牙还连着手表,关闭蓝牙我手表也会断开
    twttwt
        8
    twttwt  
       2020-02-28 17:06:03 +08:00
    BluetoothDevice 反射调用 cancelPairingUserInput 就行
    fansangg
        9
    fansangg  
    OP
       2020-02-28 17:24:32 +08:00
    @twttwt 你这字面意思是取消配对输入啊,然后我试了一下 return 是 true,但是歌还是放着的。
    Tuuure
        10
    Tuuure  
       2020-02-28 18:01:12 +08:00
    断开蓝牙设备需要断开所有 Profile,蓝牙耳机一般需要调用 BluetoothA2dp 和 BluetoothHeadset 的 disconnect
    also24
        11
    also24  
       2020-02-28 18:02:48 +08:00
    HangoX
        12
    HangoX  
       2020-02-28 18:14:28 +08:00
    @fansangg 关闭蓝牙好像不会关闭 ble
    mgrddsj
        13
    mgrddsj  
       2020-02-28 20:04:17 +08:00 via Android
    我自用的方式:
    Tasker + Secure Settings.
    Secure Settings 里面有蓝牙连接 /断开管理。
    Tasker 负责定时执行任务。
    fansangg
        14
    fansangg  
    OP
       2020-02-28 21:59:17 +08:00
    @Tuuure 可以兄弟,下周划水的时候再试试 BluetoothHeadset 的 disconnect
    mgrddsj
        15
    mgrddsj  
       2020-02-29 21:30:56 +08:00
    昨天随手顺便录了个 Tasker 的视频,B 站过审慢,不知道你还需不需要,不需要就无视我吧。
    https://www.bilibili.com/video/av92469166/
    JoDragon
        16
    JoDragon  
       2020-08-04 09:23:31 +08:00
    兄弟,有办法了吗?试了好几个方法感觉都不太理想啊
    fansangg
        17
    fansangg  
    OP
       2020-08-04 17:27:49 +08:00
    @JoDragon 没搞定,就没搞了
    JoDragon
        18
    JoDragon  
       2020-08-05 14:04:13 +08:00
    @fansangg 看了下源码确实像 @Tuuure 说的
    fansangg
        19
    fansangg  
    OP
       2020-08-06 10:06:55 +08:00
    @JoDragon 你试试吧,反正我在 Android10 上无效
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2522 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 10:50 · PVG 18:50 · LAX 02:50 · JFK 05:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.