私はこの1日中私の頭を傷つけています。私は、デバイスをリッスンするBluetoothソケットを持っています。これはAsyncTaskで行われます。リモートデバイスから初めて接続しようとすると、何の問題もありません。今私は切断をシミュレートしようとしています。範囲外になるか、リモートデバイスのBluetoothアダプタをシャットオフするか、リモートから接続を閉じるだけです。現在、接続が失われると、サーバーソケットはIOExceptionをスローします。 AsyncTaskを再起動してもう一度リスニングを開始する私の手がかりとしてこれを使用しています。これは正常に動作しているようだが、私のすべてのlogcatメッセージが再起動時に表示されているので、タスクは実行中だとわかるが、ソケットは接続を受け付けない。 AsyncTaskを再起動するとこれが問題になるかもしれないと思って、受け入れた直後に接続をダンプしようとしました。それらをリセットした後も、system.gc()を呼び出しても同じ問題が残っています。Java Bluetoothソケットは、再起動後に接続を受け付けません。
相続人は、私がテストに今使っているいくつかのコード:
boolean running = true;
while(running){
btAdapter = BluetoothAdapter.getDefaultAdapter();
btServerSocket = btAdapter.listenUsingRfcommWithServiceRecord(NAME, ID);
btSocket = btServerSocket.accept();
btServerSocket.close();
btSocket.close();
btServerSocket = null;
btSocket = null;
btAdapter = null;
System.gc();
sleep(10);
}
私は本当に私が間違ってやって知りません。どんな助けでも大歓迎です。
ありがとうございました。