「Android開発」Bluetoothの接続方法について

日本語のBluetoothに関するページにほとんどBluetoothChatの説明があり、
Client側で接続方法は「createRfcommSocketToServiceRecord」または「createInsecureRfcommSocketToServiceRecord」で作られているんですが、
実際に実施すると、半分ぐらい接続できない場合もあります。

対策のは下記のように、COM port numberを固定1で指定して接続すると、ほぼ接続できるようになりました。
Method m = device.getClass().getMethod("createInsecureRfcommSocket", new Class[] {int.class});
BluetoothSocket tmp = (BluetoothSocket) m.invoke(device, 1);

ここに「createInsecureRfcommSocket」を使う原因は
Galaxy SI, Galaxy SII and couple other tabletsの機種、android 4.xの場合には、「createRfcommSocket」がサポートされてないらしい。
なお、Android 2.3.3 で Blutooth の nonsecure socket connection をサポートする API が platform に追加されました。これにより、アプリケーションは UI での認証を依頼することなく、単純なデバイスと接続することができます。

以上の対策の参照URL:

①どうして、createRfcommSocketToServiceRecord(UUID)の方法を使わない。
http://robolabwiki.sdu.dk/mediawiki/index.php/BlueTooth_Android_Trainer_Beta
「Bugs and experiences」の説明

②createInsecureRfcommSocketToServiceRecord(java.util.UUID)の使うべきこと。
http://kenneththorman.blogspot.jp/2013/06/android-403-and-404-bluetooth-pairing.html

③どうして、「createInsecureRfcommSocket」のほうを使うか。
Galaxyはinsure Socket使ってるそうです。
http://mono-for-android.1047100.n5.nabble.com/FW-Bluetooth-Connect-NullPointerException-td5712182.html

このブログの人気の投稿

ABAP:データファイルのアップロードとダウンロード

ABAPSE12 更新ビュー作成手順

ABAP:]バックグラウンドジョブDEBUG