Android SDK 2.0 Bluetooth対応プロファイルについて

閲覧: 638 回
最初の未読メッセージにスキップ

TAMA

未読、
2009/11/08 23:15:212009/11/08
To: Android-SDK-Japan
はじめまして、tamaと申します。

表題の件ですが、DoCoMoのHT-03Aを用いてSPPを利用したプログラムを作成したいと思っております。

そこで皆様に質問をさせて頂きたいのですが、HT-03AそのものはSPPに対応しているとの事ですがAndroid SDK2.0はSPPを使ったプ
ログラムに対応しているのでしょうか?

自身で調べられれば良かったのですがいろいろ検索してもわからなかったので、ご存じの方がいらっしゃればご教示いただけたらと思います。

Daisuke Miyakawa

未読、
2009/11/09 0:14:582009/11/09
To: android-...@googlegroups.com
はじめまして、宮川と申します。

SPPというのはBluetooth の Serial Port Profile
のことでよろしいでしょうか。以下ではそれを前提にしておりますので、もし間違っていたらご指摘ください。

SDK 2.0 に対応した機器は、おそらくSPPに対応しています。
http://developer.android.com/intl/ja/reference/android/bluetooth/BluetoothSocket.html

しかし残念ながら、現在のHT-03AはDonut (1.6) までの対応となっていますので、SPPを利用したプログラムは利用できないという理解です。
今後の対応が期待されるところです。

それでは。

2009/11/9 TAMA <tama...@hotmail.com>:
--
Daisuke Miyakawa (宮川大輔)
d.miy...@gmail.com

esmasui

未読、
2009/11/09 11:59:262009/11/09
To: Android-SDK-Japan
tamaさんはじめまして。ますいと申します。


2.0ではandroid.bluetooth.BluetoothServerSocket、BluetoothSocketというクラスを使って
SPPを扱えます。
BluetoothServerSocket/BluetoothSocketはそれぞれ、おおよそRfcomm(SPPが利用するプロトコル)のサー
バー/クライアントソケットに該当します。

しかし、Bluetooth APIはエミュレーターでは動作せず、またHT-03AのROMは1.5 - 1.6であるため実際に動作させることはで
きません。


現時点で、HT-03AでSPPを含めbluetoothを扱う場合は、非公開のAPIを利用する必要があります。
~1.6にもbluetooth APIは含まれているものの、APIが公開されておらず通常の方法では利用できませんが、
以下の方法で(無理やり)利用することができます。

1. ソースリポジトリからBluetooth APIのソースを持ってきて参照ライブラリなどに指定してAPIを解決する
2. リフレクションを使用してAPIを実行する。

~1.6ではSPPはandroid.bluetooth.RfcommSocketというクラスを介して使うことができます。
これはその名のとおり、Rfcommを扱うためのクラスで2.0と違いサーバー/クライアントに分かれていません。
(2.0でも実際はBluetoothServerSocketは内部でBluetoothSocketに処理を投げているだけのようですが)

しかし、1.6では以下の制限があります。

1. サーバーソケットを開いてもサービスレコードが更新されないため、クライアントから接続する際にチャンネルを固定する必要がある。
(通常、Bluetoothの接続ではSDPのクエリでプロファイルに対応するサーバーのチャンネルを実行時に獲得します)

この制限のため、通常のSPPクライアント(サービスレコードからチャンネルを決定する)からHT03Aに接続することができません。
接続が可能なケースは以下のケースに限ります。

1. HT03Aがクライアントとなる場合
2. HT03Aがサーバーとなり、且つクライアントがチャンネルを固定で指定する場合


最後に、以上のような非公開APIを扱うためのライブラリをご紹介しておきます。

WEB上などで"非公開Bluetooth APi"、または"非公式Bluetooth API"として有名なプロジェクトです

android-bluetooth:
http://code.google.com/p/android-bluetooth/

こちらは、拙作ですが自分が開発しているBluetoothアプリケーションを2.0対応にする準備としてホストしたプロジェクトで、
2.0のAPIを模しています。

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


以上、よろしくお願いします。

ますい

esmasui

未読、
2009/11/09 12:09:112009/11/09
To: Android-SDK-Japan
追記:

1.6のBluetooth APIは一定時間使っているとシステムがリブートするという不具合があるので、
お試しになる場合はお気をつけください。

TAMA

未読、
2009/11/09 19:25:242009/11/09
To: Android-SDK-Japan
宮川さん、ますいさん、迅速なご回答誠に感謝いたします。

現状では制限があるようですが、そちらで色々試してみたいと思います。

ありがとうございました。
全員に返信
投稿者に返信
転送
新着メール 0 件