切断されたBluetoothペリフェラルの復活方法が知りたいです
解決したいこと
こんにちは。
AndroidでBluetoothを使って、ペリフェラルでMIDIデバイスのふりをさせて、PCからつないでいます。
勝手に切断されてしまった場合と、アプリを再起動した場合、毎回ペアリングを解除してやり直しています。
例)
解決方法を教えて下さい。
Java + Android + Bluetooth + Midiがいまいち理解できず困っています。
発生している問題・エラー
通信中、忙しくなると、notifyCharacteristicChangedが、4番を返してきます。
(接続されていないというコード)
接続を切断して、connectしたり、Advertisingしたりしても、接続される様子がありません。
例)
D cancelConnection() - device: 00:21:6B:FD:4D:6D
D connect() - device: 00:21:6B:FD:4D:6D, auto: true
D connect() - device: 00:21:6B:FD:4D:6D, auto: true
E **** Reconnect done 4
E **** Reconnect done 4
D cancelConnection() - device: 00:21:6B:FD:4D:6D
D connect() - device: 00:21:6B:FD:4D:6D, auto: true
E **** Reconnect done 4
E ACTION_DISCOVERY_FINISHED
または、問題・エラーが起きている画像をここにドラッグアンドドロップ
該当する送信部分を、拡張したソースコード
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
int result = bluetoothGattServer.notifyCharacteristicChanged(bluetoothDevice, midiOutputCharacteristic, false, writeBuffer);
if (result != BluetoothStatusCodes.SUCCESS) {
if (result == 4) {
String address = bluetoothDevice.getAddress();
bluetoothGattServer.cancelConnection(bluetoothDevice);
MidiSelector.getInstance(null).startAdvertising();
BluetoothAdapter adapter = UUID2.getAdapter();
BluetoothDevice device2 = adapter.getRemoteDevice(address);
if (bluetoothGattServer.connect(device2, true)) {
bluetoothDevice = device2;
result = bluetoothGattServer.notifyCharacteristicChanged(bluetoothDevice, midiOutputCharacteristic, false, writeBuffer);
Log.e(TAG, "**** Reconnect done " + result);
}
else {
Log.e(TAG, "**** Reconnect failed " + result);
stop();
}
}
}
return result == BluetoothStatusCodes.SUCCESS;```
自分で試したこと
アーキテクチャを調べていますが、これだというアプローチがわからず
困っております。
あと、アプリが以前ペアリングした接続、アプリをインストールしなおしても、
復活させるという方法も、教えていたけませんでしょうか。
TAB60というタブレットを使っています。