ラベル BLE の投稿を表示しています。 すべての投稿を表示
ラベル BLE の投稿を表示しています。 すべての投稿を表示

2016年1月20日水曜日

BLE Advertise の GAP(Data Type Value) の指定方法

  いろいろなコードを参考にしながらいろいろ試して、BLE Advertise はできるようになったのだが、GAP の Data Type Value (AD Type) がどうしても設定できない。
 
 参考にしたコードによって Data Type Value (AD Type) の値は違うのだが、なぜ違っているのがわからなくてかなり調べた。調べた結果...
 
  • Data Type Value (AD Type) は直接指定できない
  • AdvertiseData.Builder,AdvertiseSettings.Builder のメソッドを呼ぶことで、Advertise に特定の AD Structure を追加できる
  •  Advertise に AD Structure を追加する方法はこれしかないらしい(API level 21:Android 5.0)
  • 結局、Data Type Value (AD Type) を設定するのは、AdvertiseData.Builder,AdvertiseSettings.Builder のメソッドを選ぶこと


AdvertiseData.Builder のメソッドで付加される AD Structure
Data Type Value Data Type Name Method
0x03 Complete List of 16-bit Service Class UUIDs addServiceUuid(ParcelUuid serviceUuid)
0x09 Complete Local Name setIncludeDeviceName(boolean includeDeviceName)
0x0A Tx Power Level setIncludeTxPowerLevel(boolean includeTxPowerLevel)
0x16 Service Data - 16-bit UUID addServiceData(ParcelUuid serviceDataUuid, byte[] serviceData)
0xFF Manufacturer Specific Data addManufacturerData(int manufacturerId, byte[] manufacturerSpecificData)

AdvertiseSettings.Builder のメソッドで付加される AD Structure
Data Type Value Data Type Name Method note
0x01 Flags setConnectable(boolean connectable) connectable:true の時だけ Flags:0x02(LE General Discoverable Mode)のAD Structureが入る
connectable:false だと挿入される AD Structure はなし

2015年12月14日月曜日

Nexus5 で、bluetooth LE の advertising を送出させる方法

経過:
 思うところあって、いわゆる「Beacon」を使いたくなった。調べていくと、bluetooth LE の advertising という機能を使っているらしい。iOS は 7 以降で使え、Android は 4.3 以降で受信、5.0 以降で送信に対応とあった。
 手元に Android 6.0 までアップデートした Nexus5 があったので、いろいろと試したのだが、どうもうまくいかない。
 
 さらに調べていくと、Android L の途中までは動いていたようなのだが、2014/10 の中頃のバージョンから動かなくなってしまったらしい。
 https://code.google.com/p/android-developer-preview/issues/detail?id=1570
 
 で、google の中の人から「Nexus 4/5/7 は、チップセットの問題でサポートしないよ」との書き込みもあった。Nexus って Android の公式マシンなのに ><
 https://code.google.com/p/android-developer-preview/issues/detail?id=1570#c52
 
 ログを最後の方まで調べていくと、Nexus 5 + Android 5.1.1 で動かすためのパッチを発見!!
 https://code.google.com/p/android-developer-preview/issues/detail?id=1570#c104
 
 ということで、ダメ元で試してみたら、advertising の送出に成功した。

 以下に、備忘録を兼ねて、メモを公開。