BLEDevice に接続するアプリを開発しています。この接続は、BLE 接続 (BluetoothDevice、BluetoothGatt、BluetoothGattCallBack) のすべてのパラメーターを保持するシングルトンのインスタンスを持つ Sticky Service によって管理されます。
APP の動作は次の行で再開されます。
- アプリを開くと、目的の BLE デバイスをスキャン、結合、接続するボタンをクリックします。
- 接続されると、BLE デバイスのガット特性を読み取って、接続が正しく確立されているかどうかをテストできる [テスト] ボタンが表示されます。
- アプリを強制終了しても、スティッキーであるため、サービスは引き続き実行されます。ポイントは、BLEデバイスとの接続を失わないことです
- 次に、アプリをもう一度開いてテスト ボタンを押すと、動作するはずです。
問題はポイント4にあります。アプリを1回閉じた後にテストボタンをクリックすると、次のエラーが表示されます:
原因: java.lang.NullPointerException: null オブジェクト参照で仮想メソッド 'android.bluetooth.BluetoothGattCharacteristic android.bluetooth.BluetoothGattService.getCharacteristic(java.util.UUID)' を呼び出そうとしています
私の理解によると、問題は BluetoothGatt オブジェクトが失われていることです。
BLE接続を失わないようにするにはどうすればよいですか?