Android - Получить UUID Bluetooth для этого устройства

Я бросил Stack и интернет для простого решения получить UUID устройства, которое я сейчас использую. Я наткнулся на сообщения вроде этого, но никто из них, казалось, не помог мне.

Документ сообщает мне об этом getUuids(), но при просмотре документа для Android Bluetooth В итоге я получил BluetoothAdapter, но мне нужно BluetoothDevice выполнить это функция.

Поэтому мне нужно знать следующее:

1) Действительно ли функция возвращает действительно устройство UUID? Поскольку имя говорит множественное число (getUuid s)

2) Как получить экземпляр этого BluetoothDevice?

Спасибо!

Ответы

Ответ 1

Используя отражение, вы можете вызвать скрытый метод getUuids() на BluetoothAdater:

BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();

Method getUuidsMethod = BluetoothAdapter.class.getDeclaredMethod("getUuids", null);

ParcelUuid[] uuids = (ParcelUuid[]) getUuidsMethod.invoke(adapter, null);

for (ParcelUuid uuid: uuids) {
    Log.d(TAG, "UUID: " + uuid.getUuid().toString());
}

Это результат на Nexus S:

UUID: 00001000-0000-1000-8000-00805f9b34fb
UUID: 00001001-0000-1000-8000-00805f9b34fb
UUID: 00001200-0000-1000-8000-00805f9b34fb
UUID: 0000110a-0000-1000-8000-00805f9b34fb
UUID: 0000110c-0000-1000-8000-00805f9b34fb
UUID: 00001112-0000-1000-8000-00805f9b34fb
UUID: 00001105-0000-1000-8000-00805f9b34fb
UUID: 0000111f-0000-1000-8000-00805f9b34fb
UUID: 0000112f-0000-1000-8000-00805f9b34fb
UUID: 00001116-0000-1000-8000-00805f9b34fb

где, например, 0000111f-0000-1000-8000-00805f9b34fb для HandsfreeAudioGatewayServiceClass и 00001105-0000-1000-8000-00805f9b34fb для OBEXObjectPushServiceClass. Фактическая доступность этого метода может зависеть от версии устройства и прошивки.