Androidアプリ開発

Android13対応
(非推奨のonCharacteristicRead)

この記事は約8分で読めます。
記事内に広告が含まれています。
スポンサーリンク

この記事はAndroidスマホ用のアプリ開発の中で、
今後の開発で再使用性が高いと思われるコーディングをまとめたものです。
Javaの開発経験、XML構文規則、Androidのアプリ開発経験がある方を対象としています。
Androidのアプリ開発でお役にたててれば、嬉しいです。
(これからAndroidのアプリ開発やJavaでの開発を始めたい方への案内は、
記事の最後で紹介します)

この記事のテーマ


Android13で非推奨になったonCharacteristicReadに対応する

ポイント

BLEのGATT通信でキャラクタリスティックが読み込まれたときのコールバックonCharacteristicReadですが、Andorid13で非推奨となりました。
今回は、非推奨になったonCharacteristicReadをAndroid13以降に対応する実装を紹介します。

BluetoothGattCallback(onCharacteristicRead)

BluetoothGattCallback(onCharacteristicRead)

BluetoothGatt.readCharacteristicで指定したBluetoothGattCharacteristicの読み込みはBluetoothGattCallbackのonCharacteristicReadで値を取得します。
Android13以降では、onCharacteristicReadで値を直接取得できるよう、引数が追加されました。

Android12までの実装

BluetoothGattCharacteristic.getValueで値を取得します。

    private BluetoothLowEnergyController.gattResponse   gattResponse;
    public interface gattResponse {
        void response(byte[] data);
    }
    :
        @Override
        public void onCharacteristicRead(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status ) {
            if (status == BluetoothGatt.GATT_SUCCESS) {
                if (characteristic.getUuid().equals(UUID_READ)) {
                    byte[] data = characteristic.getValue();
                    gattResponse.response(data);
                    return;
                }
            }
            gattResponse.response(new byte[]{});
        }
    :

Android13以降の実装

onCharacteristicReadに追加されたbyte[]を取得する値として処理します。
Android112以下に対応する場合、Build.VERSION.SDK_INTで分岐させて、それぞれ処理します。

    private BluetoothLowEnergyController.gattResponse   gattResponse;
    public interface gattResponse {
        void response(byte[] data);
    }
    :
        @Override
        public void onCharacteristicRead(@NonNull BluetoothGatt gatt, @NonNull BluetoothGattCharacteristic characteristic, @NonNull byte[] data, int status) {
            if (status == BluetoothGatt.GATT_SUCCESS) {
                if (characteristic.getUuid().equals(UUID_READ)) {
                    gattResponse.response(data);
                    return;
                }
            }
            gattResponse.response(new byte[]{});
        }
        @SuppressWarnings("deprecation")
        @Override
        public void onCharacteristicRead(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status ) {
            if (status == BluetoothGatt.GATT_SUCCESS) {
                if (characteristic.getUuid().equals(UUID_READ)) {
                    byte[] data = characteristic.getValue();
                    gattResponse.response(data);
                    return;
                }
            }
            gattResponse.response(new byte[]{});
        }
    :

今回は、ここまでです。

非推奨のonCharacteristicReadに対応しているAndroidアプリです。

誤字脱字、意味不明でわかりづらい、
もっと詳しく知りたいなどのご意見は、
このページの最後にある
コメントか、
こちらから、お願いいたします♪

ポチッとして頂けると、
次のコンテンツを作成する励みになります♪

ブログランキング・にほんブログ村へ

これからAndroidのアプリ開発やJavaでの開発を始めたい方へ

アプリケーション開発経験がない方や、アプリケーション開発経験がある方でも、JavaやC#などのオブジェクト指向言語が初めての方は、Androidのアプリ開発ができるようになるには、かなりの時間がかかります。
オンラインスクールでの習得を、強くおススメします。

未経験者からプログラマーを目指すのに最適です。まずは無料カウンセリングから♪

ゲーム系に強いスクール、UnityやUnrealEngineを習得するのに最適です。まずは無料オンライン相談から♪

参考になったら、💛をポッチとしてね♪

スポンサーリンク
シェアする
msakiをフォローする
スポンサーリンク

コメント欄

タイトルとURLをコピーしました