私のアプリでは、特定のサービスuuid _2415
_の低エネルギーBluetoothをスキャンします。文字列2415をuuidに変換するためにUUID serviceUUID = UUID.fromString("2415");
を使用していますが、この行で例外が発生しますIllegalArgumentException:Invalid UUID 2415。
この点で私を助けてください、この点で私は非常に感謝します。前もって感謝します。
受け入れられた回答は、@ Michaelによるコメントで提供されました。
短いUUIDとBluetoothベースUUIDを組み合わせてみましたか?つまり「00002415-0000-1000-8000-00805F9B34FB」? (2415 16進数を意味すると仮定)?
このスレッドを最初に読んだときに見逃したため、そのコメントを回答に変換しています。
使用できます
String str = "1234";
UUID uuid = UUID.nameUUIDFromBytes(str.getBytes());
System.out.print(uuid.toString());
ここで多くの人々を導くかもしれない混乱は、短いコードのUUIDを使用して、他のプラットフォーム(たとえばiOSで [〜#〜] cbuuid [〜#〜] のbluetoothサービスと特性を参照できることです。 On Androidただし、 RFC4122 で指定されているように、完全な128ビット長のUUIDを提供する必要があります。
修正(@Michaelが指摘したように)は、16ビットまたは32ビットの短いUUIDを base bluetooth UUID の前に追加することです。これらの関数を使用して、これを少し簡単にすることができます。
public static final String baseBluetoothUuidPostfix = "0000-1000-8000-00805F9B34FB";
public static UUID uuidFromShortCode16(String shortCode16) {
return UUID.fromString("0000" + shortCode16 + "-" + baseBluetoothUuidPostfix);
}
public static UUID uuidFromShortCode32(String shortCode32) {
return UUID.fromString(shortCode32 + "-" + baseBluetoothUuidPostfix);
}
例えば:
UUID uuid = uuidFromShortCode16("FFF0");
これにより、"0000FFF0-0000-1000-8000-00805F9B34FB"
からUUIDオブジェクトが作成されます。
これが役立つことを願っています
例外は、UUID.fromString()
メソッドの無効な引数によるものです。UUID.fromString()
メソッドは、引数として_"302a5a70-c085-4946-b702-fc1deb1046af"
_タイプの文字列を想定し、UUID
クラスのインスタンスを返します。
ショートハンド16ビットuuidを128ビットuuidに変換するには、このテンプレート_"0000XXXX-0000-1000-8000-00805F9B34FB"
_を使用できます。ここでXXXX
を16ビットのuuidに置き換えます。
例えば:
あなたの場合、128ビットのUUIDは_"00002415-0000-1000-8000-00805F9B34FB"
_になります。
そして文字列からUUIDを取得するには、次のようなコードを使用する必要がありますUUID uuid = UUID.fromString("00002415-0000-1000-8000-00805F9B34FB");
https://newcircle.com/s/post/1786/2016/01/04/bluetooth-uuids-and-interoperable-advertisements
他の人が指摘しているように、「2415」はUUIDに似ていないので、文字列「2415」はlongからまっすぐに変換されただけだと感じています。その場合は、2つのlongを取るUUIDコンストラクターを使用する必要があります。
uuid = new UUID(long mostSignificant, long leastSignificant)
ここでこれらの長い値を取得できます
uuid.getMostSignificantBits()
uuid.getLeastSignificantBits()
あなたの場合、あなたはuuid = new UUID(2415,2415)
のようなことをするかもしれません