13

PC と通信できるアプリケーションを作成しています。SDK 2.1 の Bluetooth 機能を使用しました。

デバイスの検索、MAC アドレスの取得、RFCOMMソケットの作成はできますが、接続を開始すると、次のエラー メッセージが表示されます。

サービスの検出に失敗しました。

  1. アプリケーションと PC で同じではないUUIDが原因ですか?
  2. PC で正しい UUID を取得するにはどうすればよいですか?

そのようなアプリケーションを作成する場合、Nexus Oneはクライアントですか、それともサーバーですか?

4

6 に答える 6

7

OK、同じ問題が発生しましたが、いくつかの質問に答えることができると思います。たとえば、「sdptool add --channel=3 SP」を使用して PC が SPP ポートを開いた場合、Android フォンがクライアントとなり、ソケットを開き、このソケットを使用してサーバー (PC またはその他の Bluetooth デバイス、たとえば、GPS、マウスなど)。

この情報は、記事Bluetoothを読むことで取得できます。この記事から引用したクライアントの定義です。

サーバー (PC など) で SPP ポートを開いている場合は、標準サービスを提供しており、このサービスには特別な UUID が割り当てられています。これは次のよう00001101-0000-1000-8000-00805F9B34FBになります。

したがって、Android 開発者から適格な回答を得るべきだと思います。または、木曜日の IRC オフィスアワーにこの質問をしてください。

于 2010-03-20T21:33:28.957 に答える
4

ヒント: Bluetooth シリアル ボードに接続している場合は、既知の SPP UUID 00001101-0000-1000-8000-00805F9B34FB を使用してみてください。ただし、Android ピアに接続している場合は、独自の一意の UUID を生成してください。

リンク

于 2012-03-06T18:45:27.247 に答える
2

UUID がデバイス上にあることを確認する方法を見つけました。クライアント側で、device.createRfcommSocketToServiceRecord(uuid);追加する前に:

Process process = Runtime.getRuntime().exec("su -c 'sdptool records " + device.getAddress() + "'");
process.waitFor();

Android がサービスを取得しているため、プロセスは 20 ~ 30 秒間フリーズします。しかし、サーバーが検出モードの場合 (サーバーが Android フォンの場合)、接続は毎回成功します。

于 2011-12-04T18:10:59.497 に答える
2

UUID の可能性もありますが、Bluetooth MAC が正確で大文字であることを確認することをお勧めします。

また、Linux ボックスのターミナルで実行することをお勧めhcidump -Xします。プロセス全体で、Linux マシンと電話の間で双方向のトラフィックが見られるかどうかを確認してください。

于 2010-05-17T17:04:35.050 に答える
1

最初の接続後に SPP を再接続すると、同じ問題が発生しました。

にあるからrfcomm channel=-1ですBluetoothService.javaupdateDeviceServiceChannelCache()の最後に追加したところfetchRemoteUuids()、うまくいきました!

于 2011-06-16T06:51:48.560 に答える
0

これは主に HTC で発生します。私は同じ問題に直面しました。最初は接続に成功したが、その後失敗した場合は、電話機を再起動するだけで、失敗したサービスが再起動されます。

于 2013-04-02T17:51:30.867 に答える