リフレクションを使用すると、次の隠しメソッドを呼び出すことができ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
は for でHandsfreeAudioGatewayServiceClass
、00001105-0000-1000-8000-00805f9b34fb
は forOBEXObjectPushServiceClass
です。この方法が実際に利用できるかどうかは、デバイスとファームウェアのバージョンによって異なります。