15

UUID現在使用しているデバイスを取得するための簡単なソリューションを求めて、スタックとインターネットを閲覧していました。このような投稿に出くわしましたが、どれも役に立たなかったようです。

ドキュメントはこの getUuids()関数について教えてくれますが、 Android Bluetoothのドキュメントを読むとBluetoothAdapterが必要になりますが、BluetoothDeviceこの関数を実行するには が必要です。

したがって、次のことを知る必要があります。

1) 関数は本当にデバイスを返しますUUIDか? 名前が複数形だから (getUuid s)

2) これのインスタンスを取得するにはどうすればよいBluetoothDeviceですか?

ありがとう!

4

2 に答える 2

18

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

于 2013-10-28T20:36:46.817 に答える