在您的应用可以通过蓝牙或蓝牙低功耗通信之前,您需要验证设备是否支持蓝牙,如果支持,请确保其已启用。请注意,仅当 <uses-feature.../>
清单文件条目中的 android:required
属性设置为 false
时,才需要进行此检查。
如果不支持蓝牙,则应妥善停用所有蓝牙功能。如果支持蓝牙但已停用,您可以请求用户在不离开您的应用的情况下启用蓝牙。
第一步是向您的清单文件中添加蓝牙权限,以便使用以下 API。
获得相应权限后,即可使用 BluetoothAdapter
分两步完成蓝牙设置:
获取
BluetoothAdapter
。所有蓝牙 activity 都需要具有
BluetoothAdapter
。BluetoothAdapter
表示设备自身的蓝牙适配器(蓝牙无线装置)。如需获取BluetoothAdapter
,您首先需要具备Context
。可使用此上下文获取BluetoothManager
系统服务的实例。调用BluetoothManager#getAdapter
将为您提供BluetoothAdapter
对象。如果getAdapter()
返回 null,则表示设备不支持蓝牙。例如:
Kotlin
val bluetoothManager: BluetoothManager = getSystemService(BluetoothManager::class.java) val bluetoothAdapter: BluetoothAdapter? = bluetoothManager.getAdapter() if (bluetoothAdapter == null) { // Device doesn't support Bluetooth }
Java
BluetoothManager bluetoothManager = getSystemService(BluetoothManager.class); BluetoothAdapter bluetoothAdapter = bluetoothManager.getAdapter(); if (bluetoothAdapter == null) { // Device doesn't support Bluetooth }
启用蓝牙。
接下来,您需要确保蓝牙已启用。调用
isEnabled()
以检查当前是否已启用蓝牙。如果此方法返回 false,则表示蓝牙处于停用状态。如需请求启用蓝牙,请调用startActivityForResult()
,并传入ACTION_REQUEST_ENABLE
intent 操作。此调用会发出通过系统设置启用蓝牙的请求(无需停止您的应用)。例如:
Kotlin
if (bluetoothAdapter?.isEnabled == false) { val enableBtIntent = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE) startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT) }
Java
if (!bluetoothAdapter.isEnabled()) { Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT); }
系统会显示一个对话框,请求用户授予启用蓝牙的权限,如图 1 所示。如果用户授予权限,系统会开始启用蓝牙,并在该过程完成(或失败)后返回您的应用。
图 1. “启用蓝牙”对话框。
传递给 startActivityForResult()
的 REQUEST_ENABLE_BT
常量是一个本地定义的整数,必须大于或等于 0。系统会在 onActivityResult()
实现中将此常量作为 requestCode
参数传回给您。
如果成功启用蓝牙,您的 activity 会在 onActivityResult()
回调中收到 RESULT_OK
结果代码。如果由于错误(或用户响应“拒绝”)而未启用蓝牙,则结果代码为 RESULT_CANCELED
。
(可选)您的应用还可以监听 ACTION_STATE_CHANGED
广播 intent,每当蓝牙状态发生变化时,系统都会广播此 intent。此广播包含 extra 字段 EXTRA_STATE
和 EXTRA_PREVIOUS_STATE
,分别包含新旧蓝牙状态。这些额外字段的可能值包括 STATE_TURNING_ON
、STATE_ON
、STATE_TURNING_OFF
和 STATE_OFF
。如果您的应用需要检测对蓝牙状态做出的运行时更改,则监听此广播可能会很有用。
在设备上启用蓝牙后,您可以同时使用标准蓝牙和低功耗蓝牙。
对于蓝牙低功耗,您可以查找 BLE 设备、连接到 GATT 服务器,并传输 BLE 数据。