2

ペアリングされた 2 つのスマートフォン間の Bluetooth 接続を使用して Android アプリに取り組んでいます。Bluetooth ロジックは、有名な BluetoothChat SDK の例に基づいています。サーバー用accept()のスレッド、クライアント用のスレッド、connect()およびソケットでの読み取り/書き込み用のスレッドを管理する「サービス」クラスです。

アクティブな接続 (クライアント側またはサーバー側の両方から) を閉じた場合を除いて、すべて正常に動作し、新しい接続を開始しようとすると、次のエラーで失敗します。

java.io.IOException: Service discovery failed

いくつかの調査の後、これは UUID の問題であると考えるようになりました。BTChat の例 ( fa87c0d0-afac-11de-8a39-0800200c9a66) の UUID を使用していますが、別のランダムな UUID に問題が残っています (それは でした31ef5990-dc20-11e2-a28f-0800200c9a66)。

関連するクライアント logcat は次のとおりです。(クライアントconnect()は失敗するものです):

E/BluetoothService.cpp: stopDiscoveryNative: D-Bus error in StopDiscovery: org.bluez.Error.Failed (Invalid discovery session)
D/BluetoothService: Cleaning up failed UUID channel lookup: 30:17:C8:A7:C6:C3 fa87c0d0-afac-11de-8a39-0800200c9a66
        java.io.IOException: Service discovery failed

cancelDiscovery()D-Bus エラーはおそらく、Android ドキュメントが before を呼び出すことを提案しているによって引き起こされconnect()ます。それが本当の問題だと思いますfailed UUID channel lookupが、これを修正する方法がわかりません。別の (よく知られている?) UUID を使用する必要がありますか?

必要に応じて、コード スニペットを表示できます。しかし、この問題は BluetoothChat と非常に論理的に似ています。

4

1 に答える 1