欢迎光临散文网 会员登陆 & 注册

Android BLE蓝牙设备开发

2023-06-15 17:24 作者:翼618  | 我要投稿

 在Android中获取BLE蓝牙设备的UUID可以通过以下步骤:


1. 启用蓝牙并请求位置权限。这两个权限是使用BLE需要的基本权限。


2. 扫描BLE设备。通过BluetoothLeScanner对象扫描周围的BLE设备。扫描时设置ScanFilter来过滤设备的UUID和主机名称等。


3. 在ScanCallback的onScanResult()方法中获取扫描到设备的信息,包括其UUID。


4. 连接到设备后,可以通过BluetoothGatt对象获取更详细的UUID信息。


具体代码实现如下:


```java

// 请求蓝牙和位置权限  

requestPermissions();  


// 扫描BLE设备 

BluetoothLeScanner scanner = bluetoothAdapter.getBluetoothLeScanner();

ScanFilter filter = new ScanFilter.Builder().setDeviceName("my_device").build();

scanner.startScan(Arrays.asList(filter), scanCallback);


// onScanResult() 回调中获取UUID  

private ScanCallback scanCallback = new ScanCallback() {

    @Override 

    public void onScanResult(int callbackType, ScanResult result) {

        Log.d("callbackType",callbackType+"");

        BluetoothDevice device = result.getDevice();

        String uuid = device.getUuids()[0].toString(); 

        Log.d("uuid", uuid);

    }

};


// 连接设备后获取更详细的UUID  

BluetoothGatt gatt = device.connectGatt(context, false, gattCallback);


private BluetoothGattCallback gattCallback = new BluetoothGattCallback() {

   @Override

   public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {

       if (newState == BluetoothProfile.STATE_CONNECTED) {

           BluetoothGattService service = gatt.getService(UUID.fromString(uuid));

           if (service != null) {

               List<BluetoothGattCharacteristic> characteristics = service.getCharacteristics();

               for (BluetoothGattCharacteristic c : characteristics) {

                   String charUuid = c.getUuid().toString();

                   // 获取characteristic的UUID

               }

           }

       }

   }

}; 

```


所以,要获取Android BLE设备的UUID,主要分为以下三个步骤:


1. 请求蓝牙相关权限并开启蓝牙。

2. 扫描BLE设备,在回调中获取扫描结果的device UUID。

3. 连接到设备后,通过BluetoothGatt对象获取设备的service UUID和characteristic UUID。


只有当设备连接后,我们才能获取到最详细的UUID信息。设备扫描只能得到一个比较宽泛的device UUID。所以,如果需要获取精确的服务和特征的UUID,必须建立连接才可以。


UUID是识别BLE设备各服务和特征的唯一标识,掌握在Android中获取UUID的方法,是开发BLE相关应用的基础。


Android BLE蓝牙设备开发的评论 (共 条)

分享到微博请遵守国家法律