Bluetooth 検出イベントをリッスンし、検出されたデバイスとその UUID を一覧表示するコードがいくつかあります。
現在、このコードは Android 2.3 から 4.1 で完全に機能していました。ただし、4.3 (4.2 は試していません) では、突然、UUID がどこにも表示されなくなりました。唯一の違いは、UUID 情報がまったくないことです。
放送受信機のコードは次のとおりです。
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.d(TAG, "BTReceiver got action " + action);
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
BluetoothDevice device =
intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
Parcelable[] extraUIIDs = device.getUuids();
if (extraUIIDs == null) {
device.fetchUuidsWithSdp();
}
}
if (BluetoothDevice.ACTION_UUID.equals(action)) {
BluetoothDevice device =
intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
Parcelable[] pUUIDs = intent.getParcelableArrayExtra(BluetoothDevice.EXTRA_UUID);
if (pUUIDs == null) {
pUUIDs = device.getUuids();
Log.d(TAG, "No UUIDs in intent, trying from device : "+pUUIDs);
}
}
}
古い Android では、デバイス オブジェクトに UUID が表示されるか、UUID アクションと一緒に受信されます。4.3 でも UUID アクションを受け取りますが、UUID 配列はnull
インテントとデバイス オブジェクトの両方にあります。
繰り返しになりますが、唯一の違いは Android のバージョン (およびデバイス) ですが、4.2 より前のバージョンである限り、私が手に入れることができるすべての Android で一貫して動作しました。