2010年6月2日水曜日

[Androidアプリ]Android1.6でBluetoothを使う

esmasuiさんの「backport-android-bluetooth」とサンプルコード「BluetoothChat」で、Xperiaと携帯電話以外の機器とのBluetooth通信が可能かどうかを確かめようと試みました。

「backport-android-bluetooth」
http://code.google.com/p/backport-android-bluetooth/

Source > Browse のところにサンプルソースがあるようです。
Source path: svn / trunk / backport-android-bluetooth201 / src / com / example / bluetooth / *.java

多分・・・。

ちなみにAndroid2.1のサンプルコード「BluetoothChat」をbackport用に変更したもののようです。
2.1用サンプルの方で最初やってみたんですが、Android1.6 -> 2.1で変更になった点でエラーが出たり、エミュ&実機でVerifyErrorが出たり。
xml関係ではこの部分で大量のエラーが。書き換えればOKでした

match_parent(Android2.1?) ⇒ fill_parent(Android1.x?)

VerifyErrorは原因がわからなかったので、改めて「backport-android-bluetooth」のサンプルコードの方でアプリをビルドして実機で実行。

RuntimeError・・・BluetoothAdapterクラスが無いだと??

「backport-android-bluetooth2.jar」をビルドパスに関連付けただけじゃダメなのかな?
/src以下にbackport.android.bluetoothパッケージを作って、ソースコード一式を置いてみる・・・

android.bluetooth.* 系が全部無いよ、エラー。

あまりに知識が無さ過ぎてどうすれバインダー状態。
/src以下にandroid.bluetoothパッケージも作って、ソースコード一式(以下略)
ここでAIDLなるファイルのことを知りました。
/src以下に拡張子aidlでファイル作っておいたら、/genの下にJavaファイルが出来る模様。

その状態でビルド、実行したら無事Xperia上で動作しました。
原因がわかってないことが多いけど、まずはBluetoothで接続&SPPにて通信が出来るかどうかを確認することが先なので接続相手を探してみる。

[1]手持ちのiPhone・・・iPhoneアプリ側に動作確認できるアプリがない。却下。
[2]手持ちの携帯電話・・・SPP通信用のアプリは入ってないので、SPPの上位プロファイルであるDUNで繋いでみる。
繋がるけどデータは何も飛んでこず。
そりゃそうだ。
[3]会社用の携帯・・・SPP通信用アプリが入っているけど、電池切れ。
充電器が無かったので後日に見送り。
[4]元々繋ごうと思ってた機器・・・よく考えたら、このド本命と繋げられるかどうかが大事なのであった。機器をセットアップして、いざ接続!

--------------------------------------
DEMO-1GOU
0x00012121@9abc ・・・
--------------------------------------
DEMO-1GOU
0x00045678@9abc ・・・
--------------------------------------
DEMO-1GOU
0x00099999@9abc ・・・
--------------------------------------

定期的に飛ばす電文が画面に表示されていきます。
メニューボタンを押して、接続メニューを出すことに気づくまで30分くらいかかったのはご愛嬌。
(それまではXperiaの「設定」からBluetooth接続させようとしてました)

iPhoneのようにiPhone系以外の機器とのSPP通信が制限されてる(?)かもしれないという危惧があったのですが、さすがはAndroid端末Xperia。
そんな制限は特になされていないようですね。

これで安心してBluetooth通信アプリが作れそうです。
問題は山積していますが・・・。
色々間違えていたらすみません。

1 件のコメント:

  1. このコメントは投稿者によって削除されました。

    返信削除