1

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 で一貫して動作しました。

4

0 に答える 0