web-dev-qa-db-ja.com

Android-このデバイスのBluetooth UUIDを取得します

現在使用しているデバイスのUUIDを取得する簡単な解決策として、スタックとインターネットを調べていました。私はつまずきました このような投稿 しかし、それらのどれも私を助けてくれなかったようです。

ドキュメントは これについてgetUuids()関数を教えてくれますが、 Android Bluetooth のドキュメントを通過すると、最終的に BluetoothAdapter が表示されますこの関数を実行するにはBluetoothDeviceが必要です。

だから私は以下を知る必要があります:

1)関数は実際にデバイスを返していますかUUID?名前が複数形であるため(getUuid s

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

ありがとう!

14
Ron

リフレクションを使用すると、BluetoothAdaterで隠しメソッドgetUuids()を呼び出すことができます。

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-00805f9b34fbHandsfreeAudioGatewayServiceClassを表し、00001105-0000-1000-8000-00805f9b34fbOBEXObjectPushServiceClassを表します。この方法が実際に利用できるかどうかは、デバイスとファームウェアのバージョンによって異なります。

17
Stefano S.

これを実現するには、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();
    }
_

Uuidを取得するには、Bluetoothを有効にする必要があります。

2
Jorgesys