Android-получить Bluetooth UUID для этого устройства
Я просматривал стек и интернет для простого решения, чтобы получить UUID
устройства, которое я сейчас использую. Я споткнулся!--7-->сообщения, как это
доктор говорит мне об этом getUuids()
функция, но при прохождении через doc для Android Bluetooth а в BluetoothAdapter но мне нужен BluetoothDevice
для выполнения этой функции.
поэтому мне нужно знать следующий:
1) функция, возвращающая действительно устройство UUID
? Потому что имя говорит множественное число (getUuids
)
2) Как получить экземпляр этого BluetoothDevice
?
спасибо!
2 ответов
используя отражение, вы можете вызвать скрытый метод 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
. Фактическая доступность этого метода может зависеть от версии устройства и прошивки.
для достижения этого вы должны определить разрешение Bluetooth:
<uses-permission android:name="android.permission.BLUETOOTH"/>
затем вы можете вызвать метод getUuids()
С помощью отражения:
try {
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
Method getUuidsMethod = BluetoothAdapter.class.getDeclaredMethod("getUuids", null);
ParcelUuid[] uuids = (ParcelUuid[]) getUuidsMethod.invoke(adapter, null);
if(uuids != null) {
for (ParcelUuid uuid : uuids) {
Log.d(TAG, "UUID: " + uuid.getUuid().toString());
}
}else{
Log.d(TAG, "Uuids not found, be sure to enable Bluetooth!");
}
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
вы должны включить bluetooth, чтобы получить Uuids.