2013-10-28 2 views
14

Я бросил стек и Интернет для простого решения получить UUID устройства, которое я использую сейчас. Я наткнулся на posts like this, но никто из них не помог мне.Android - Получить Bluetooth UUID для этого устройства

Док говорит мне about thisgetUuids() функции, но при переходе через док для Android Bluetooth я в конечном итоге, BluetoothAdapter но мне нужно BluetoothDevice, чтобы выполнить эту функцию.

Так что мне нужно знать следующее:

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

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

Спасибо!

+0

В любом случае, как вы узнали, что UUID для вашего устройства Bluetooth @Ron? – gumuruh

ответ

15

С помощью отражения вы можете вызвать скрытый метод 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. Фактическая доступность этого метода может зависеть от версии устройства и прошивки.

+0

Я использую SDK16, и это не работает для меня. 'Uuids' являются' null'. Кроме того, я хотел бы иметь только мой Bluetooth uuid. Вы знаете, как получить этот? – Ron

+0

Для каждого сервиса Bluetooth, открытого устройством, имеется uuid; поэтому вы видите несколько uuids для смартфона. Я провел тесты с помощью SDK на Nexus S с Android 4.1.2 и Galaxy Nexus с Android 4.3. Какое устройство вы использовали? –

+0

Galaxy S2 ... мне нужно, чтобы Bluetooth был активным, чтобы получить мой uuid? – Ron

Смежные вопросы