2 つの Android デバイス間で安全でない Bluetooth ソケット接続を確立しようとしています。私は両端でソフトウェアを制御します。一方の端はlistenUsingInsecureRfcommWithServiceRecord
接続をリッスンするために使用し、もう一方の端はcreateInsecureRfcommSocketToServiceRecord
接続に使用します。これは機能します。時々。
「時々」は私の問題です。試行の約 20% で失敗し、次の例外がスローされます。
java.io.IOException: Service discovery failed
at android.bluetooth.BluetoothSocket$SdpHelper.doSdp(BluetoothSocket.java:403)
at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:213)
at com.example.bluetoothpoke.MainActivity$1.onClick(MainActivity.java:34)
両方のデバイスが起動しており、画面がオンになっています。デバイス間の距離は約 1m です (10cm と 3m は違いはありません)。どちらのデバイスも検出を実行していません。両方のデバイスが検出可能です (両方を検出不能にしても何も変わりません)。
無線インターフェースなので正常であると仮定して、失敗した場合は再試行する必要がありますか、それとも何かできることはありますか? 私が非常に快適な距離にいることを考えると、より確実に機能するはずではありませんか?
注: 同様の質問がたくさん見つかりましたが、見つかったのは、「まったく機能しない」、Android 以外のデバイスに接続する、またはその両方に関するものでした。