Android平台如何通过编程检测蓝牙Bluetooth是否处于激活状态
Android设备蓝牙激活状态编程检测方案
有多种成熟的实现方案,可根据你使用的开发环境选择对应方法:
Unity开发环境(匹配你给出的定位检测代码的开发场景)
Unity未提供内置的蓝牙状态检测API,可通过调用Android原生接口实现,步骤如下:
- 首先在项目的AndroidManifest.xml中添加蓝牙权限:
针对Android 11及以下版本添加:<uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" />
针对Android 12及以上版本添加:<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" /> - 编写C#桥接代码示例:
/// <summary> /// 检测蓝牙是否激活 /// </summary> /// <returns>true=已激活,false=未激活或设备不支持蓝牙</returns> public bool CheckBluetoothEnabled() { using (AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) { AndroidJavaObject currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity"); AndroidJavaObject bluetoothManager = currentActivity.Call<AndroidJavaObject>("getSystemService", "bluetooth"); AndroidJavaObject bluetoothAdapter = bluetoothManager.Call<AndroidJavaObject>("getAdapter"); // 设备无蓝牙硬件 if (bluetoothAdapter == null) { return false; } return bluetoothAdapter.Call<bool>("isEnabled"); } }
使用方式和你给出的定位检测逻辑类似:
if (!CheckBluetoothEnabled()) { // 蓝牙未激活 return; }
原生Android开发环境
Kotlin实现代码
val bluetoothManager = getSystemService(BluetoothManager::class.java) val bluetoothAdapter = bluetoothManager.adapter when { bluetoothAdapter == null -> { // 设备不支持蓝牙 } !bluetoothAdapter.isEnabled -> { // 蓝牙未激活 } else -> { // 蓝牙已激活 } }
Java实现代码
BluetoothManager bluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE); BluetoothAdapter bluetoothAdapter = bluetoothManager.getAdapter(); if (bluetoothAdapter == null) { // 设备不支持蓝牙 } else if (!bluetoothAdapter.isEnabled()) { // 蓝牙未激活 } else { // 蓝牙已激活 }
注意:部分低版本Android系统可以直接调用
BluetoothAdapter.getDefaultAdapter()获取蓝牙适配器,不过官方更推荐通过BluetoothManager获取,兼容性更好。
适配提示:Android 12(API 31)开始,访问蓝牙状态需要申请BLUETOOTH_CONNECT运行时权限,否则会抛出安全异常。
内容的提问来源于stack exchange,提问作者Fenikkel
相关产品推荐
相关产品推荐

