QA@IT

Android 4.3(API Level18)でアドバタイズをさせたい

3869 PV

実現したい事

Android 4.3上でBluetooth Low Energyのアドバタイズをさせたいです
(とりあえず接続までやらずにアドバタイズを投げるだけやりたいです)

経緯

Android DeveloperのBluetooth Low Energyのページ
⇒ http://developer.android.com/guide/topics/connectivity/bluetooth-le.html
【Roles and Responsibilities】の最後の文章から
「In the example used in this document, the Android app (running on an Android device) is the GATT client.
The app gets data from the GATT server, which is a BLE heart rate monitor that supports the Heart Rate Profile. But you could alternatively design your Android app to play the GATT server role.
See BluetoothGattServer for more information.」
≒自作のアプリケーションが代わりにGATTサーバ役として振舞う事ができる
 と解釈しました.

さらにBluetoothGattServerクラスのページ
⇒ http://developer.android.com/reference/android/bluetooth/BluetoothGattServer.html
の冒頭の文章から
「This class provides Bluetooth GATT server role functionality, allowing applications to create and advertise Bluetooth Smart services and characteristics.」
≒自作アプリケーションでサービスとキャラクタリスティックを作成しアドバタイジングする事ができる
 と解釈しました.

しかしSDKのサンプルアプリではアドバタイズする実装が見受けられませんでした
(サンプルアプリはGATTクライアント役として心拍計の値を取得するもの,という解釈であっているでしょうか…)
BluetoothGattServerクラスの概要を読んでみても,どう用いればいいかわからず困惑しております.

質問事項

  • 1.そもそも現状のAndroidでアドバタイズを投げる事はできないのでしょうか?
  • 2.(1ができる場合)サンプルコード・実装方法のヒントをお教え願えますでしょうか?

お手数ではございますが,よろしくお願い申し上げます.

  • GATTサーバへ接続 と書いてるように見えますが
    -
  • But you could alternatively design your Android app to play the GATT server role. See BluetoothGattServer for more information. の部分でしょう。 -
  • 投稿者です,コメントが遅くなってしまい申し訳ございません…
    >alice-asahina 様
    確かにそのような意味なのかな,とも考えたのですが
    上の方の文章で「to play the GATT server role.」とある奴がどうしても「(あなたのアプリが)GATT serverとして振舞える」と見えてしまいまして…
    -
  • 投稿者です,コメント遅くなってしまって申し訳ございません… >flied_onion様 「See BluetoothGattServer for more information. 」の部分は質問に記載した「BluetoothGattServerクラスのページ」にあたります. -
  • わかりにくくてすいません。私のコメントは一つ前のコメントへの「ここに書いてあるでしょう」というものでした。 -
  • >flied_onion様 早とちりしてしまい申し訳ございません! そうです,そちらの文章から「GATT Serverを実装できるのだな」と思っていました… -

回答

いろいろ見てはみたのですが、使い方らしい情報は今のところなさそうですね。
テストコードでもあればよかったんですがそれもなさそうです。

一応 android/bluetooth/ BluetoothManager.java
openGattServer メソッドを使えば BluetoothGattServer を返してくれそうですが、
細かい使い方はわかりません。


stackoverflowで似たような質問がでてますが、中心機器(スマホとか)と周辺機器の差があるんだからできないよっていう流れになってますが、ほんとかどうかはちょっと怪しい気もしますねぇ。回答者は単に一般論を言っているだけな気も(根拠はありませんが)。

http://stackoverflow.com/questions/18128280/android-4-3-btle-as-server-how-to-start-advertisements

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。