Bluetoothのペアリングについて質問です

2,449 views
Skip to first unread message

たろサ

unread,
Dec 18, 2012, 2:09:26 AM12/18/12
to android-g...@googlegroups.com
 こんにちは、たろサです。

 Bluetoothのペアリングについて教えてください。
 Androidの設定メニュのBluetoothでペアリング設定していても、アプリを起動してconnect()すると必ずペア
リング設定リクエストが発生して、パスキーを入力することになります。

 一度ペアリングしていれば、再度ペアリングしないようにはできないのでしょうか。例えば、S2 Bluetooth
Terminal3というアプリでは、設定メニュでペアリング設定しているものは、接続を選ぶだけで接続できてしま
います。ペアリング設定リクエストが出てきません。


テストしているソースを以下に書きます。
-----
<uses-sdk
android:minSdkVersion="15"
android:targetSdkVersion="15" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
-----
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

//BluetoothAdapterから、接続履歴のあるデバイスの情報を取得
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
Set<BluetoothDevice> devs = adapter.getBondedDevices();
UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
BluetoothSocket tmpSock = null;
OutputStream out = null;

for(BluetoothDevice device:devs){
try{
tmpSock = device.createRfcommSocketToServiceRecord(uuid);
adapter.cancelDiscovery();
tmpSock.connect();
}catch(IOException e){
e.printStackTrace();
return;
}
break;
}

try{
out = tmpSock.getOutputStream();
byte[] buf = { 'A' };
out.write(buf, 0, 1);
}catch (IOException e1) {
e1.printStackTrace();
}
}
-----
 ペアリング設定リクエストが出たときに0000を入れてやると、きちんと1バイト送信されます。

 また、別質問ですが、ペアリング設定リクエストが上部の通知領域に表示されずに、画面にポップアップされ
るようにするには、どうすればいいのでしょうか?

 環境は、Nexus7 4.2.1 です。

 よろしくお願いします。

--
山本三七男 (Minao Yamamoto) ---------------- ハンドル:たろサ -----
E-Mail: taro...@gmail.com

Kazuyuki Eguchi

unread,
Dec 18, 2012, 2:36:50 AM12/18/12
to android-g...@googlegroups.com
たろささん

こんにちわ
えぐちです。

毎回、ペアリングを要求されるのは、相手の機器が、ペアリング情報を記憶しないからなので、相手の機器の問題ですね。
ペアリングコードは、リフレクションを使えば、決まったPINコードをアプリ側で打つこともできまが、ペアリング設定リクエストの画面を消すのには、成功していません。(それらしい関数は、リフレクションであるのですが、うまくいきませんでした。)

以上、御参考までに


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



--
Kazuyuki Eguchi

たろサ

unread,
Dec 18, 2012, 4:52:41 AM12/18/12
to android-g...@googlegroups.com
 えぐちさん、こんにちは。

 説明、ありがとうございます。

 相手側の問題でしたか、S2 Bluetooth Terminal3 以外の Bluetooothのターミナルソフトをインストールして
確かめてみると、同様に毎回ペアリング設定が出てきました。

 S2 Bluetooth Terminal3は、何か特別なことをしているのですね。

 それでは、毎回ペアリングすることを前提にプログラムを作りたいと思います。

 ありがとうございました。

 ちなみに、ペアリング設定リクエストが、必ず、画面にポップアップされるようにする方法はご存じないで
しょうか。ペアリング設定リクエストの通知を拾ってインテントを投げればいいのだと思うのですが、この方法
をまだ調べることができていません。

 よろしくお願いします。

Kazuyuki Eguchi

unread,
Dec 18, 2012, 5:01:37 AM12/18/12
to android-g...@googlegroups.com
たろささん

そうですね。ポップアップ画面が出てくるのは、リフレクションを使ってステータスバーを抑制して、アプリ側で出すような作りになっているんじゃないかな!?

イベントは取得できますからね。

以上、ご参考までに
---
Kazuyuki Eguchi


2012/12/18 18:53、"たろサ" <taro...@gmail.com> のメッセージ:

Atsushi Taniguchi

unread,
Dec 18, 2012, 5:16:19 AM12/18/12
to android-g...@googlegroups.com
Reply all
Reply to author
Forward
0 new messages