在Android中获取本地低能耗蓝牙设备的UUID

时间:2014-04-06 19:22:05

标签: android bluetooth bluetooth-lowenergy android-bluetooth

我试图访问Android中的低能耗蓝牙设备的UUID,最终将字符串发布到网络API。

这里的代码可以很好地烘烤本地名称和mac地址:

private final BroadcastReceiver ActionFoundReceiver = new BroadcastReceiver(){

    @Override
    public void onReceive(Context context, Intent intent) {

        String action = intent.getAction();

        if(BluetoothDevice.ACTION_FOUND.equals(action)) {

            BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);

            String sMac     = device.getAddress();
            String sName    = device.getName();
            String sUUID    = ""; //HELP!

            Toast toast = Toast.makeText(getApplicationContext(), "Mac: " + sMac + " - Name: " + sName + " - UUID: " + sUUID, Toast.LENGTH_SHORT);
            toast.show();

        }

    }

};

任何人都可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

可以有多个UUID - 代表该设备的BLE特性。

http://developer.android.com/reference/android/bluetooth/BluetoothDevice.html#getUuids()

您可以迭代UUID数组并获取所需的那个。

如果您正在寻找单个设备的唯一标识符,那么您需要通过BluetoothDevice.getAddress()

获取的MAC地址

答案 1 :(得分:2)

蓝牙UUID(通用唯一标识符)被分配给蓝牙服务,特征,描述符等,以识别每个蓝牙属性。它不像MAC地址,即每个设备有一个ID。因此,当您使用BluetoothGattObj.discoverServices()等API发现其他连接蓝牙设备的服务时,它会发现其他蓝牙设备支持的一组服务,特征,描述符等。

使用您提交的上述代码段不会为您提供任何蓝牙UUID。

Android-SDK中提供了示例蓝牙低功耗应用程序,当您通过Google的Android网站下载时,其相对路径可能为..\adt-bundle-windows-x86-xxxx\sdk\samples\android-xx\connectivity\BluetoothLeGatt。请参考相同的内容。