関連記事:Nexus5と組込み用BluetoothモジュールZEAL-C02のSPP接続手順解説
ページコンテンツ
ZEALとAndroid端末は接続可能です
こんにちは、無線化.comカスタマーサポート担当の清水です。
ここ最近「Android端末とZEALとの接続」についてお問い合わせが増えています。各キャリアが力を入れていることもあり、対応端末は増える一方ですが、いくつものAndroidバージョンが存在することから、「どの端末ならつながるのか?」というご質問が後を絶ちません。
ここでは実際に当社で確認したZEAL-C02と各デバイスとの接続テスト結果や、各Androidバージョンごとの接続方法、そして万が一つながらない場合の対策法についてご説明していきます。
AndroidバージョンとAPIレベルとBluetooth機能の関係
AndroidはAPIが公開されていますが、そのバージョンごとにAPIレベルが定められており、基本仕様や使える機能などが異なります。 AndroidにおけるBluetooth機能もAPIレベルによって異なっており、特にAPIレベル8~10の間で大きな仕様変更が行われていますので注意が必要です。
各APIレベルとZEALとの接続結果
Androidバージョン | APIレベル | ZEAL-C02 | ZEAL-S01 |
---|---|---|---|
5.0 | 21 | ○ | ○ |
4.4 | 19 | ○ | ○ |
4.3 | 18 | ○ | ○ |
4.2 | 17 | ○ | ○ |
4.1 | 16 | ○ | ○ |
4.0.3 – 4.0.4 | 15 | ○ | ○ |
4.0 – 4.0.2 | 14 | ○ | ○ |
3.2 | 13 | ○ | ○ |
3.1 | 12 | ○ | ○ |
3.0 | 11 | ○ | ○ |
2.3.3 – 2.3.7(※) | 10 | ○ | ○ |
2.3 – 2.3.2(※) | 9 | △(※後述) | ○ |
2.2 | 8 | ○ | ○ |
2.1 | 7 | ○ | ○ |
2.0.1 | 6 | (日本未発売) | |
2.0 | 5 | ||
1.6 | 4 | ×(API非公開) |
※メーカー発表ではどちらも「Android2.3」と表記されている場合があります。
接続確認済みAndroid端末リスト
テストに使用したAndroidアプリ
テストで使用したAndroidアプリは「BluetoothChat for ZEAL」です。これは有志の方がご自身のZEAL動作確認用に作成されたターミナルアプリです。GoogleがBluetooth通信用のサンプルソースとして提供しているBluetooth Chatがベースになっています。GooglePlayに公開されていますので、ご自由にご利用ください。
【BluetoothChatの使い方】Nexus5とBluetoothモジュールZEAL-C02のSPP接続手順解説
kuronekotolucky
価格:無料 平均評価:0.0(0 件)
接続テストに使用したデバイス一覧
【2015/02/25更新】
デバイス名称 | メーカー・キャリア | Androidバージョン | APIレベル |
---|---|---|---|
Nexus6 | 5.0.1 | 21 | |
Nexus5 | 4.4.2 | 19 | |
Xperia Z1 SOL23 | SONY・KDDI | 4.4.2 | 19 |
AQUOS SERIE SHL25 | シャープ・KDDI | 4.4.2 | 19 |
Nexus7(2013) | 4.3 | 18 | |
Nexus7(2012) | 4.3 | 18 | |
4.2.2 | 17 | ||
Nexus10 | 4.3 | 18 | |
INFOBAR A02 | HTC・KDDI | 4.1.1 | 16 |
Xperia SX SO-05D |
ソニーエリクソン・docomo | 4.0.4 | 15 |
AQUOS PHONE SH-01D |
シャープ・docomo | 4.0.4 | 15 |
ARROWS Z ISW11F |
富士通・KDDI | 4.0.3 | 15 |
XOOM | MOTOROLA・KDDI | 4.0.3 | 15 |
3.1 | 12 | ||
3.0 | 11 | ||
Sony Tablet S SGPT111JP/S |
SONY | 3.1 | 12 |
3.2.1 | 13 | ||
4.0.3 | 15 | ||
Galaxy Nexus SC-04D |
Samsung・docomo | 4.0.1 | 14 |
4.0.4 | 15 | ||
MEDIAS PP N-01D |
NECカシオ・docomo | 2.3.5 | 10 |
INFOBAR A01 | シャープ・KDDI | 2.3.4 | 10 |
Xperia acro SO-02C |
ソニーエリクソン・docomo | 2.3.4 | 10 |
Xperia arc SO-01C |
ソニーエリクソン・docomo | 2.3.2 | 9 |
2.3.3 | 10 | ||
HTC Desire X06HT |
HTC・Softbank | 2.2 | 8 |
Xperia X10 SO-01B |
ソニーエリクソン・docomo | 2.1 | 7 |
APIレベル別接続方法
対ZEAL-S01の場合
対ZEAL-S01の場合、主要となるAPIレベル7~12(Android2.1~3.1)を通じて、BluetoothDevice.createRfcommSocketToServiceRecord(以下、セキュアメソッド)というメソッドで接続させることが可能です。
対ZEAL-C02の場合
APIレベル8(Android2.2)以前の端末との接続
S01同様、APIレベル8(Android2.2)までの端末と接続させる場合には、BluetoothDevice.createRfcommSocketToServiceRecord(セキュアメソッド)で接続が可能です。
APIレベル9(Android2.3.2)の端末との接続
APIレベル9(Android2.3.2)以降ではAndroid側のBluetoothにおけるセキュリティ仕様が変更されており、ZEAL-C02はAndroidからセキュリティレベルの低い機器(※後述)とみなされてしまうため、セキュアメソッドを使って接続させることができなくなっています(ペアリングはできますが、接続・通信ができません。)。APIレベル9の端末とZEAL-C02を接続させようとした場合、対応するメソッドが存在しないため、ZEAL-C02側で特別な操作を行う必要があります。
APIレベル10(Android2.3.3)以降の端末との接続
APIレベル10(Android2.3.3)からはBluetoothDevice.createInsecureRfcommSocketToServiceRecordというメソッドが新たに追加され、セキュリティレベルの低いZEAL-C02とも再び接続させることができるようになっています(このメソッドの場合は、ペアリングの際に数値比較がなく、単純にペアリングを承認するかどうかだけが問われます)。
ZEAL-S01の場合は?
S01はC02と同じ組込みモジュールであり、同じくユーザの介入ができない仕様となっておりますが、S01はBluetooth2.0であるためSSPが適用されず、よって「セキュリティレベルの低い機器」と判断されないため、APIレベル9以降でもBluetoothDevice.createRfcommSocketToServiceRecordを用いて接続させることが可能です。
各Androidデバイスと各メソッドで接続させた場合の結果一覧
デバイス | APIレベル | C02 | S01 | ||
---|---|---|---|---|---|
vs. セキュア | vs. インセキュア | vs. セキュア | vs. インセキュア | ||
Xperia | 7 | ○ | 未実装 | ○ | 未実装 |
Desire | 8 | ○ | ○ | ||
Xperia Arc(2.3.2) | 9 | × | ○ | ||
Xperia Arc(2.3.3) | 10 | × | ○ | ○ | ○ |
XOOM(3.0) | 11 | × | ○ | ○ | ○ |
XOOM(3.1) | 12 | × | ○ | ○ | ○ |
※上記略語は以下の通り
セキュア: BluetoothDevice.createRfcommSocketToServiceRecordを使った場合
インセキュア: BluetoothDevice.createInsecureRfcommSocketToServiceRecordを使った場合
このように、ZEAL-C02はほとんどのAndroidバージョン(APIレベル)との接続を確認しております。一部、APIレベル9(Android2.3.2)のデバイスと接続させる場合のみ、ZEAL側に特別な操作が必要となりますが、2011年9月現在、日本国内で販売されているAndroidスマートフォンのうち、Android2.3.2に該当するものはほとんどありません。
唯一、「Xperia arc(ドコモSO-01C)」のみが2011年3月の発売当初、Android2.3.2を搭載しておりましたが、そのXperia arcも2011年7月6日にはAndroid2.3.3への公式バージョンアップが実施されており、実質的にAndroid2.3.2の端末を入手することは困難な状況であることから、この問題が発生するケースは極めて限定的であると考えています。
接続がうまくいかない場合には?
日頃お客様より「ZEALとAndroidがつながらない」というお問い合わせが少なくありません。基本的には上述の通り、Androidバージョンと紐付いたAPIレベルを意識していれば接続に問題はないと考えられますが、Android端末は各メーカーが独自の機能を実装していることがあるため、同じAndroidバージョン、同じメーカー、同じ機種であっても、機種の違いや端末の個体差によって接続できたり、接続できなかったりする場合があります。
接続できない場合には、まず以下の様な点をご確認ください。
Android端末が最新のファームウェアかどうか確認する
Android端末は機能追加や不具合修正のため、ファームウェアアップデートが実施されることがあります。ファームウェアアップデートでは不具合修正としてメーカーから発表されている現象以外にも、発表されていないいくつもの不具合が同時に修正されていると言われています。Bluetooth機能も例外ではありません。
過去の実例として、ZEALと接続できなかったAndroid端末が、最新のファームウェアへアップデートしたところ、接続できるようになった例がありました。どうやらAndroid端末において、動作が不安定だったBluetooth機能が、ファームウェアアップデートによって改善されることがあるようです。
Android端末を一度再起動してみる
弊社での動作テストにおいて、「Android端末は接続ー切断を繰り返す内に端末内部のBluetooth機能が正常に動作しなくなってしまうことがある」ことを確認しております。はじめは正常に接続できていたのに、動作検証のため、接続と切断を繰り返している内に、急に接続できなくなってしまうことがありました。
エアパケットを解析してみたところ、Bluetooth接続は維持されている状態にも関わらず、Android端末画面上には「切断しました」というメッセージが表示されたり、逆にAndroid端末画面上ではBluetooth接続処理を行っていないように表示されるものの、無線電波上ではBluetooth接続処理を行っていたりと、実際の無線部処理とAndroid端末内部のステータス管理が一致しなくなってしまうことがあるようです。こうなってしまうと、Bluetooth機能のON/OFFではなく、端末自体を再起動しないと復帰できない場合があります。
ZEALを初期化してみる
事前にZEALをいろいろと動かしていると、知らぬ間に意図しない設定になってしまっているケースがあります。Android端末の再起動と同時に、ZEALの初期化(”BTY35CA”コマンド)をお試しください。初期化することによって接続できるようになった事例がいくつもあります。
隠しコマンド”BT:g1”を実行してみる(ZEAL−C02の場合)
ZEAL−C02にはAndroid端末と接続しやすくするための隠しコマンド”BT:g1″が実装されています。このコマンドは「おまじない」です。もしC02対Android端末でうまく接続ができないときには”BT:g1”をお試しください。このコマンドは1度だけ実行すればOKです。元に戻したい時には”BT:g0″を実行してください。
違う端末で試してみる
Android端末は様々なアプリを自由にインストールできるというメリットの弊害として、同一メーカー、もしくは同一機種であってもアプリ動作環境が全く同じとは言い切れないため、同じAndroidアプリでも同じように動作するとは限らず、その個体(Android端末)特有の問題であることも少なくありません。これは一般的なネットの書き込み情報を見ても、ある不具合が確認できる人(端末)もいれば、そうではない人もいることから、Bluetooth機能に限らず、Androidアプリ全般的な現象と言っても良さそうです。
これまでのケースでは、お客様からの「つながらない」というご報告に対し、同一機種の端末を入手し、弊社内でも接続テストを行ってみたところ、弊社内テストでは問題なく接続が確認できたというケースが大半でした。このような場合には、そのAndroid端末個体に原因があるのか、はたまたZEAL側(故障含む)に原因があるのか、原因切り分けのためにも、一度他のAndroid端末でも接続させてみることをおすすめ致します。
Android端末のWiFi機能をOFFにしてみる
過去の実例として、ZEALとのBluetooth接続が安定しない(接続できたり、できなかったりする)というご報告をいただいたお客様からの続報として、「WiFi機能をOFFにしたらBluetooth接続が安定するようになった」というケースがありました。
一旦ペアリングを解除してみる
一度はつながっても、その内つながらなくなってしまうことがあります。この場合は上述の通り、Android端末の再起動やZEALの初期化に加え、一旦ペアリングを解除して仕切り直ししてみると再接続できることがあります。
接続相手を間違えていないか確認してみる
これは本当に稀なケースですが、接続相手を間違えていたという単純なミスが実例としてありました。例えばZEALを複数台ご利用いただいている場合、表示される機器名称が同じなので、本来つなぎたいほうではないZEALを選択してしまうというミスも考えられます。
まとめ
- Android端末はAndroidバージョンとAPIレベルによってBluetooth機能の仕様が異なります
- APIレベルによってAndroidアプリ内で呼び出す接続メソッドが異なります
- ZEALシリーズは数多くAndroid端末と接続実績がございます
- もしAndorid端末と接続できない場合には、いくつか確認事項をお試しください