Bluetoothのアプリからのペアリングリクエストについて

3,793 views
Skip to first unread message

mizzusano

unread,
Jun 23, 2011, 10:23:10 PM6/23/11
to android-g...@googlegroups.com
初めまして、水波と申します。
AndroidのBluetoothの扱い方にて、困ってしまいまして、MLに質問させていただくことにしました。

現在SDKのapiサンプルのBluetoothChatにて、Bluetooth接続の動きを学んでいるところなのですが、
http://developer.android.com/resources/samples/BluetoothChat/src/com/example/android/BluetoothChat/index.html

BluetoothChatService内のConnectThread内の

mmSocket = device.createRfcommSocketToServiceRecord(MY_UUID);
mmSocket.connect();

の部分で、うまくペアリングリクエストが発行される場合と、
IOExceptionを吐いてペアリングリクエストが行われない(このプログラムの場合はToastが表示される)
場合があり、それぞれの原因について知りたく思っています。

なお、IO ExceptionをgetMessageすると
>>06-24 11:15:17.322: DEBUG/TEST(2963): Unable to start Service Discovery
ということでした。

動作確認端末は
DesireHD (2.3.3 )
IS03 (2.1-update1 )
に、SDK2.1-update1 のサンプルのBluetoothChatをインストールしてテストを行っています。

状況としましては
DesireHDから端末探索を行い、IS03を発見し、connectを行うと、
昨日までペアリングリクエストが発行されていたのに、本日行ったら上記エラーが起こり、ペアリングされない。
プログラム自体は全く触っていないので、どうしてなのか全くわからない。

なお、設定>無線とネットワーク>Bluetooth>デバイス検索で、選択した場合は問題なくペアリングリクエストが表示
されます。

ということで、どなたか、想定される原因をご存知の方がいらっしゃいましたら、教えていただきたく思います。

河西 正秀

unread,
Jun 24, 2011, 12:46:43 AM6/24/11
to 日本Androidの会
河西です。
以前BluetoothChatの解析をしているときにまったく同じ現象に悩まされました。

解決方法は、BluetoothDeviceに渡しているUUIDを、SSP(シリアル接続プロファイル)用のIDに
変更してあげることで、ペアリングが出来るようになりました。

--- BluetoothChatService.java

<変更前>
private static final UUID MY_UUID = UUID.fromString("fa87c0d0-
afac-11de-8a39-0800200c9a66");

<変更後>
private static final UUID MY_UUID =
UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");

---

また、テストをしていて気がついたのですが、たまにペアリング確認ダイアログが表示されないことがありました。
ステータスバーには通知されていたので、その通知をタップすることで確認ダイアログが表示されました。
念のため見ておくとよいかと思います。

以上です。
ご確認よろしくお願いします。




On 6月24日, 午前11:23, mizzusano <mizzus...@gmail.com> wrote:
> 初めまして、水波と申します。
> AndroidのBluetoothの扱い方にて、困ってしまいまして、MLに質問させていただくことにしました。
>
> 現在SDKのapiサンプルのBluetoothChatにて、Bluetooth接続の動きを学んでいるところなのですが、http://developer.android.com/resources/samples/BluetoothChat/src/com/...

mizzusano

unread,
Jun 24, 2011, 2:35:43 AM6/24/11
to android-g...@googlegroups.com
河西さん

水波です。ご返答ありがとうございます。
質問させていただいたあと、

アクオスフォン(006SH)で試したところ、ペアリングのリクエストが表示されておりました。
また、下記シリアル情報に変更して、再度インストールし直したところ
IS03でも再度ペアリングが出るようになりました!

ありがとうございます。

2011年6月24日13:46 河西 正秀 <sdc....@gmail.com>:

> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>
>

mizzusano

unread,
Jun 24, 2011, 5:34:15 AM6/24/11
to android-g...@googlegroups.com
たびたび失礼します、水波です。

現在こちらの動作確認をへて、
Android端末同士の自動ペアリングについて実装したいと考えております。
調べたところ、こちらのMLでも時々議題には上がっているようなのですが、
Android2系での実装例については、見つけられませんでした。

リフレクションを使っての、createBond、setPinの実装例は見つけられましたので、
動かす事はできたのですが、やはりpinCodeが不一致なのか、falseしか帰ってきません。

setPin時に、画面に表示されているAlertのpinコードをどうにか取得することができれば、
可能なのではないか、と思いAndroidのソースを探っているのですが、
もし今段階で、端末同士の自動ペアリングを実装された方いらっしゃいましたら、
アドバイスをいただければと思います。

セキュリティに問題があることは理解しておりますし、タブーの話題でしたら
このままスルーいただければと思います。

2011年6月24日15:35 mizzusano <mizz...@gmail.com>:

Reply all
Reply to author
Forward
0 new messages