-
device.getAddress()
:得到远程设备的蓝牙 MAC 地址。MAC 地址是一个唯一的硬件标识符,用于识别蓝牙设备
BluetoothDevice device = ...; // 已获取的 BluetoothDevice 对象
String macAddress = device.getAddress();
System.out.println("MAC 地址: " + macAddress);
- 每个蓝牙设备都有一个唯一的 MAC 地址,类似于
AA:BB:CC:DD:EE
的格式。这个地址用于唯一标识蓝牙设备
-
device.createBond()
:发起与远程设备的配对(绑定)请求
BluetoothDevice device = ...; // 已获取的 BluetoothDevice 对象
boolean isBonded = device.createBond();
System.out.println("发起配对请求: " + (isBonded ? "成功" : "失败"));
- 配对过程包括交换安全密钥和确认设备身份,以确保设备之间可以进行安全通信
-
device.getBondState()
:获取设备的绑定状态。返回的状态可以是:BOND_NONE
:未配对、BOND_BONDING
:正在配对、BOND_BONDED
:已配对
BluetoothDevice device = ...; // 已获取的 BluetoothDevice 对象
int bondState = device.getBondState();
switch (bondState) {
case BluetoothDevice.BOND_NONE:
System.out.println("设备未配对");
break;
case BluetoothDevice.BOND_BONDING:
System.out.println("正在配对中...");
break;
case BluetoothDevice.BOND_BONDED:
System.out.println("设备已配对");
break;
}
- 该方法用于检查设备当前的配对状态,以便采取相应的操作(例如,提示用户设备已配对或需要重新配对)
-
device.connectGatt(Context context, boolean autoConnect, BluetoothGattCallback callback)
:用于连接到远程设备上的 GATT 服务器(低功耗蓝牙设备)。这是一个 BLE 特有的方法
BluetoothDevice device = ...; // 已获取的 BluetoothDevice 对象
BluetoothGatt gatt = device.connectGatt(context, false, new BluetoothGattCallback() {
@Override
public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
if (newState == BluetoothProfile.STATE_CONNECTED) {
System.out.println("已连接到设备");
} else if (newState == BluetoothProfile.STATE_DISCONNECTED) {
System.out.println("设备已断开连接");
}
}
// 其他回调方法省略...
});
- 该方法用于连接到 BLE 设备并与其进行通信。BluetoothGattCallback 回调接口提供了一些回调方法来处理连接状态和数据交换
- 参数解析:
- context:应用的上下文
- autoConnect:如果为 true,则尝试自动连接设备
- callback:用于处理 GATT 事件的回调接口(如连接状态变化、特征读写等)
-
device.getType()
:获取蓝牙设备的类型。设备类型可能是:DEVICE_TYPE_CLASSIC
:经典蓝牙设备(BR/EDR)、DEVICE_TYPE_LE
:低功耗蓝牙设备(BLE)、DEVICE_TYPE_DUAL
:同时支持经典蓝牙和低功耗蓝牙
BluetoothDevice device = ...;
int deviceType = device.getType();
switch (deviceType) {
case BluetoothDevice.DEVICE_TYPE_CLASSIC:
System.out.println("设备类型: 经典蓝牙");
break;
case BluetoothDevice.DEVICE_TYPE_LE:
System.out.println("设备类型: 低功耗蓝牙");
break;
case BluetoothDevice.DEVICE_TYPE_DUAL:
System.out.println("设备类型: 双模设备");
break;
}
- 了解设备类型可以帮助开发者确定如何与设备进行通信,以及选择合适的协议(如经典蓝牙或 BLE)