android 如何判断蓝牙设备是否在没有蓝牙许可的情况下连接?

uinbv5nw  于 2023-04-28  发布在  Android
关注(0)|答案(1)|浏览(278)

我正在开发一个有音频通话功能的应用程序(其中一些使用蓝牙)
我知道我可以通过使用BroadcastReceiverandroid.permission.BLUETOOTH权限来检查设备是否已连接或已连接
但如果你会看看应用程序,如信使和有一个电话,他们知道你连接蓝牙耳机的通话(显示你一个弹出,并移动通话到耳机)
在他们的应用中甚至没有蓝牙权限,在Messenger应用设置中,您没有蓝牙权限
是否有其他方法来识别何时连接蓝牙耳机并将音频移动到那里而无需在权限中调用蓝牙?

nqwrtyyt

nqwrtyyt1#

这是Android中的系统级操作,应用程序可以检测已经与设备配对的蓝牙设备,而无需请求任何特殊权限。当蓝牙耳机与Android设备配对时,它会将自己注册到Android蓝牙堆栈,其将关于设备的信息暴露给设备上的所有应用。然后,应用可以使用Android SDK提供的蓝牙API来查询此信息并检测耳机的存在。
您可以使用下面的代码在连接蓝牙耳机而不请求android.permission.BLUETOOTH权限时获得通知,

public class HeadsetBroadcastReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    if (intent.getAction().equals(Intent.ACTION_HEADSET_PLUG)) {
        int state = intent.getIntExtra("state", -1);
        if (state == 1) {

            // Headset is plugged in
            
        } else if (state == 0) {

            // Headset is unplugged
           
        }
    }
}
}

要注册ACTION_HEADSET_PLUG

HeadsetBroadcastReceiver receiver = new HeadsetBroadcastReceiver();
IntentFilter filter = new IntentFilter(Intent.ACTION_HEADSET_PLUG);
registerReceiver(receiver, filter);
  • 请注意,如果您要执行蓝牙发现以查找新设备,则需要在应用清单中请求android.permission.BLUETOOTH权限。

相关问题