0

Android以外のデバイスからの着信接続をリッスンするためのソケットを開こうとしています。

 Parcelable[] uuidExtra = device.getUuids(); 
 String t = uuidExtra[0].toString(); 
 t = t.toUpperCase();
 Log.i("UUID: ", t);

このコードスニペットは、Bluetoothデバイスによって提供されるサービスのUUIDを提供します。LogCatからの出力は次のとおりです。

00001105-0000-1000-8000-00805F9B34FB

これは、ObexObjectプッシュプロファイルのUUIDだと思います。デバイスの製造元から、デバイスはプロトコルでのみサポートされていると言われているため、これを想定しています:ObexPushProfile。

たとえば、Parcelable[]配列の2番目の要素にアクセスしようとすると、出力は次のようになります。

07-12 13:29:36.305: E/AndroidRuntime(6293): java.lang.ArrayIndexOutOfBoundsException: length=1; index=1

それによって、私の配列には1つのオブジェクトしか含まれていないと確信できます。

それでは、Android固有のBluetooth関連のものに移りましょう。

私はこのUUIDを次のように使用しています:

 try {
       tmp = adapter.listenUsingRfcommWithServiceRecord(device.getName(), UUID.fromString(t));
      } catch (IOException e) {
           Log.e(TAG, "FAILED BECAUSE: " + e.getMessage()); } 

例外は、LogCatに以下を出力します。

FAILED BECAUSE: Not able to register SDP record for: "name of the device" 

この例外を数時間グーグルで調べた後でも、デバイスのリスニングソケットを開く方法がわかりません。

助言がありますか?前もって感謝します!

4

1 に答える 1

1

したがって、誰かがこれに興味がある場合、または私がしたのと同じ問題に直面している場合は、ここに解決策があります:

エラー:すでに取得されているNot able to register SDP record for: "name of the device"aaを使用してサービスを作成しようとしているため、スローされます。UUIDこの場合、私は自分のサービスを登録しようとしUUIDました。Obex Object Push

私がしなければならなかったことは、たとえばカスタムUUIDを使用して自分のサービスを登録することです

d1b180c0-d7bc-11e1-9b23-0800200c9a66

このUUIDは、このWebページから生成されます。今のところ、新しいリスニングソケットを作成しました。

     try {
        tmp = adapter.listenUsingInsecureRfcommWithServiceRecord("My Profile",   UUID.fromString("d1b180c0-d7bc-11e1-9b23-0800200c9a66"));
        } catch (IOException e) {
           Log.e("FAILED BECAUSE:", e.getMessage()); 
        } 
        mmServerSocket = tmp;

これで、次のようにして、着信要求を受け入れる準備が整いました。

socket = mmServerSocket.accept(); 

覚えておいてください、これはブロッキング呼び出しなので、あなた自身とあなたのユーザーのために、これをに入れてくださいthread

では、なぜ私のデバイスはAndroidサーバーに接続しないのですか?

  1. リモートデバイス/クライアントがサーバーと同じUUIDを使用していることを確認しますか?

  2. リモートデバイスのUUIDを指定できない場合は、製造元に連絡してください。おそらく、構成ファイルを送信するのに十分です。これは私の場合です。

ご不明な点がございましたら、この投稿にコメントを追加してください。誰もこれに対する解決策を持っていなかったので、私はこれを答えとして受け入れます。

于 2012-07-27T07:37:11.473 に答える