设置蓝牙

您的应用必须先通过蓝牙或蓝牙低功耗技术进行通信, 您需要确认设备是否支持蓝牙,如果支持, 请确保它已启用请注意,只有在 <uses-feature.../> 清单文件条目中的 android:required 属性为 已设置为 false

如果不支持蓝牙,则应正常停用所有蓝牙 功能。如果支持蓝牙,但该功能已禁用,则您可以请求 用户无需离开应用即可启用蓝牙。

第一步是 添加蓝牙权限 添加到清单文件中,以便使用以下 API。

获得相应权限后,蓝牙设置会分两步完成 使用 BluetoothAdapter

  1. 获取 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
    }
    
  2. 启用蓝牙。

    接下来,您需要确保已启用蓝牙。致电 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. 启用蓝牙对话框。

REQUEST_ENABLE_BT 常量传递给 startActivityForResult() 是一个局部定义的整数,必须大于或等于 0。系统 在您的 onActivityResult() 实现为 requestCode 参数。

如果成功启用蓝牙,您的 Activity 会收到 RESULT_OK 结果代码,位于 onActivityResult() 回调。如果由于出现错误(或 用户响应了“Deny”),则结果代码为 RESULT_CANCELED

(可选)您的应用还可以监听 ACTION_STATE_CHANGED 广播 intent,每当蓝牙状态发生变化时,系统都会广播 更改。此广播包含 extra 字段 EXTRA_STATEEXTRA_PREVIOUS_STATE, 分别包含新旧蓝牙状态。可能的值 这些额外字段是 STATE_TURNING_ONSTATE_ON, STATE_TURNING_OFF, 和 STATE_OFF。 如果您的应用需要检测运行时,监听此广播会非常有用 对蓝牙状态所做的更改。

提示:如果启用“可检测性”,系统会自动启用 蓝牙。如果您打算 执行蓝牙活动,则可以跳过之前步骤中的第 2 步。

在设备上启用蓝牙后,您就可以同时使用标准蓝牙和 蓝牙低功耗。

对于传统蓝牙,您可以查找蓝牙设备连接到蓝牙设备

对于蓝牙低功耗,您可以查找 BLE 设备连接到 GATT 服务器,以及 传输 BLE 数据