みんな。
Android プラットフォームに pbap クライアントを実装しようとしています。
私のクライアントは、ほとんどの Android フォンから電話帳を取得できます。
しかし、HTC G11 に接続すると、正常に動作しません。
私の主なコードは次のとおりです。
mSocket = mDevice.createInsecureRfcommSocketToServiceRecord(ParcelUuid.fromString(PBAP_UUID).getUuid()); //it's OK here
mSocket.connect(); //it's OK here
mClientSession = new ClientSession(transport); //it's OK here
HeaderSet request_conn = new HeaderSet();
request_conn.setHeader(HeaderSet.TARGET, PBAP_TARGET);
HeaderSet return_header = mClientSession.connect(request_conn); //it's OK here
mClientSession.connect(request_conn) が呼び出されると、リモート デバイスは応答コード OBEX_HTTP_OK を返します。
これは、リモート デバイスが私の pbap 接続要求を受け入れたことを意味します。
しかし、問題はその後に出てきます。
HeaderSet request_get = new HeaderSet();
request_get.setHeader(HeaderSet.NAME, name);
request_get.setHeader(HeaderSet.TYPE, type);
mGetOperation = (ClientOperation)mClientSession.get(request_get);
mInputStream = mGetOperation.openInputStream(); // problem come out here
リモート デバイスに get リクエストを送信しましたが、リモート デバイスから応答コード 211 が返されました。これは OBEX_SERVICE_UNAVAILABLE を意味します。そのため、htc G11 から電話帳を取得できません。
Nokia N9 を試してみましたが、HTC G11 と同じです。Nokia N9 も応答コード 211 を返します。
しかし、Nokia N9 と HTC G11 はお互いに電話帳を転送でき、どちらも Android フォンから電話帳を取得できます。
Android は、framework/base/obex で pbap セッション レイヤー API を実装します
HTC G11 は標準の Android セッション レイヤー API を使用していないと思います。
しかし、それは何を使用しますか?ノキアN9はどうですか?
誰かが私に答えや正しいコードを教えてもらえますか? 私を助けてください。
私はこの問題にかなり苦しんでいました。ありがとう!
私のメールアドレス: yulf88@gmail.com