2013-02-11 20 views
12

P2Pネットワーキングの目的で、2つのペアのアンドロイドデバイスをBluetooth経由で接続しようとしています。 MitM保護は必要ありません。 Androidはこれに対応するcreateInsecureRfcommSocketToServiceRecordlistenUsingInsecureRfcommWithServiceRecord(APIレベル10以降)を備えています。これは現代のデバイスでは完全に機能します。しかし、Galaxy Ace(Android 2.3.3 = APIレベル10、Galaxy Nexusと接続)では、ペアリングダイアログが作成されます。これは、着信接続と発信接続の両方で発生します。 (アップデート:Android 2.3.6にGalaxy Aceをアップデートすると、明らかに問題が解決されます)。安全でないRFCOMMブルートゥースソケットを使用している場合、アンドロイドはいつペアリングダイアログを表示しますか?

ペアリングが受け入れられたら、接続が有効になります。このため、これはサービスレコードが存在しない場合にのみ発生する、Issue 40101: createInsecureRfcommSocketToServiceRecord causes pairing dialog on Android 4.2には関係しないと私は考えます。

このダイアログは、表示されるデバイスでは回避できないと考えています(可能な場合は、これを行う方法を説明するのが有効です)。このような理由から、このようなダイアログがいつ表示されるかを知りたいと思います。 AndroidのJavaソースで何も見つかりませんでした。 Aceは必要な "just works"接続をサポートするはずのBluetooth 2.1を持っているので、Bluetoothバージョンとは関係がないとは思う。

デバイスが接続をサポートしていないかどうか、または特定のアンドロイドバージョンに明確に修正されているかどうかを検出できるものがあれば、それは非常に助けになります。

また、私は簡単にexclude such devicesへの道を探しています。

+0

つまり、createInsecureRfcommSocketToServiceRecordとlistenUsingInsecureRfcommWithServiceRecordを使用する場合、どのUUIDを使用しましたか? – krisDrOid

+0

@krisDrOid:ランダムに生成されたカスタムのもの。 –

答えて

3

現在、私はあなたと同じ問題があります。私は、BT端末間でメッセージをやりとりするアプリケーションを開発しました。私は、動作を分析するために、別の携帯電話(S3、S2、Sプラス、Nexus One、Galaxy Y)でテストしています。証券ROM(アンドロイドv4.1.2)

  • サムスンS +::カスタムROM(アンドロイドV4 - :

    • サムスンS2:根ざし
    • サムスンS3のカスタムROM(アンドロイドV4.2.1)携帯電話は、このスペックを持っています。 1.2) - 根ざし
    • サムスンGY:カスタムROM(アンドロイドv2.3.6) -
    • 根ざしたネクサスワン:株価ROM(アンドロイドv2.3.6) - 限り私は私からあなたを伝えることができ

    を根ざし経験、すでにペアリングされていてもデータを交換していても、ペアリングダイアログが表示されることがあります。これは、私がテストベッドにこの2台の電話のうちの1台を含めるといつも発生し、他の人はうまく働いていてペアリングを要求しません(特にNexus Oneは完璧な動作をします)。

    私は長時間のテスト(4〜6時間)を行っていますが、3時間後に時には10分後にこの電話機がペアリングを求める理由が分かりません。

    私があなたに指摘したいのは、あなたが安全でない接続を使用していても、ペアリングのために人間とのやり取りを依頼できるということだけです。それを見てください(http://en.wikipedia.org/wiki/Bluetoothから):

    ちょうど作品:名前で暗示されるように、このメソッドはちょうど動作します。ユーザーは誰もいません 対話が必要です。しかし、デバイスはのユーザーに のペアリングプロセスを確認することがあります。この方法は、通常、限られたIO機能を備えたヘッドセット によって使用され、限定されたデバイスのこのセット によるレガシーペアリングに通常使用される固定 PINメカニズムよりも安全です。この方法は、中間者(MITM) の保護を提供しません。

  • +0

    ありがとうございます。特定のAndroid 4.xのバージョンには、他のデバイスに適切なサービスが実行/受信されていない場合にこのようなダイアログを表示するバグがあると言われています。[このレポート](http://code.google.com/p/android/issues/detail?id = 40101)。リスナーがアクティブになっているかどうかを確認することができます。 –

    +0

    情報ありがとうございますが、私のサービスは常に実行されています:)。たぶん私はどこに問題があるのか​​を見いだしました、今私はそれに取り組んでいます。私のソリューションがうまくいくなら私の投稿を更新します。 –

    +0

    これに関するアップデートはありますか?私はそれがちょうどLollipopのバグだと思っていますが、あなたの回避策やあなたのアプリでの問題の原因を見つけたなら、それについて聞くことに非常に興味があります。 –

    関連する問題