この記事はAndroidスマホ用のアプリ開発の中で、
今後の開発で再使用性が高いと思われるコーディングをまとめたものです。
Javaの開発経験、XML構文規則、Androidのアプリ開発経験がある方を対象としています。
Androidのアプリ開発でお役にたててれば、嬉しいです。
(これからAndroidのアプリ開発やJavaでの開発を始めたい方への案内は、記事の最後で紹介します)
Android13で非推奨になったonCharacteristicChangedに対応する
ポイント
BLEのGATT通信でキャラクタリスティックの更新通知のコールバックonCharacteristicChangedですが、Andorid13で非推奨となりました。
今回は、非推奨になったonCharacteristicChangedをAndroid13以降に対応する実装方法を紹介します。
BluetoothGattCallback(onCharacteristicChanged)
BluetoothGattCallback(onCharacteristicChanged)
BluetoothGatt.writeDescriptorで指定したBluetoothGattCharacteristicの更新通知はBluetoothGattCallbackのonCharacteristicChangedで受け取ります。
Android13以降では、onCharacteristicChangedで値を直接取得できるよう、引数が追加されました。
Android13対応(非推奨のwriteDescriptor)
Android12までの実装
BluetoothGattCharacteristic.getValueで値を取得します。
private BluetoothLowEnergyController.gattResponse gattResponse;
public interface gattResponse {
void response(byte[] data);
}
:
@Override
public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) {
if (characteristic.getUuid().equals(UUID_NOTIFY)) {
byte[] data = characteristic.getValue();
gattResponse.response(data);
return;
}
gattResponse.response(new byte[]{});
}
:Android13以降の実装
onCharacteristicChangedに追加されたbyte[]を取得する値として処理します。
Android112以下に対応する場合、Build.VERSION.SDK_INTで分岐させて、それぞれ処理します。
private BluetoothLowEnergyController.gattResponse gattResponse;
public interface gattResponse {
void response(byte[] data);
}
:
@Override
public void onCharacteristicChanged(@NonNull BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, @NonNull byte[] data) {
if (characteristic.getUuid().equals(UUID_NOTIFY)) {
gattResponse.response(data);
return;
}
gattResponse.response(new byte[]{});
}
@SuppressWarnings("deprecation")
@Override
public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) {
if (characteristic.getUuid().equals(UUID_NOTIFY)) {
byte[] data = characteristic.getValue();
gattResponse.response(data);
return;
}
gattResponse.response(new byte[]{});
}
:今回は、ここまでです。
非推奨のonCharacteristicChangedに対応しているAndroidアプリです。
誤字脱字、意味不明でわかりづらい、
もっと詳しく知りたいなどのご意見は、
このページの最後にあるコメントか、
こちらから、お願いいたします♪
ポチッとして頂けると、
次のコンテンツを作成する励みになります♪
これからAndroidのアプリ開発やJavaでの開発を始めたい方へ
アプリケーション開発経験がない方や、アプリケーション開発経験がある方でも、JavaやC#などのオブジェクト指向言語が初めての方は、Androidのアプリ開発ができるようになるには、かなりの時間がかかります。
オンラインスクールでの習得を、強くおススメします。
未経験者からプログラマーを目指すのに最適です。まずは無料カウンセリングから♪

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

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



コメント欄