BluetoothServerSocket.accept()
着信 Bluetooth 接続を受け入れるために使用しています。BluetoothServerSocket.accept()
着信接続またはエラー (スロー) までブロックすることが知られていますIOException
。次を除いて、すべて正常に動作します。 を呼び出した後に Bluetooth が無効になっているBluetoothServerSocket.accept()
場合、例外は発生しません。その結果、スレッドはclose()
が呼び出されるまで永久にブロックされます。Bluetoothアダプタがオフのときに接続を受け入れる方法は絶対にないため、それは私には意味がありません。
でそれを解決する醜い方法があり、イベントBluetoothSocket.accept(int timeout)
をリッスンして、オフのときに受け入れスレッドを呼び出すこともできます。しかし、これは単純なイベントとしてはハックすぎるように思えます。BluetoothAdapter.ACTION_STATE_CHANGED
close()
BluetoothServerSocket.accept()
Bluetooth アダプターが無効になった後、よりきれいに戻る方法はありますか?