こんにちは、たろサです。
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