Android 5.0からBluetoothLeScannerというクラスが追加になりました。
BluetoothLeScanner#startScanにScanFilterのリストとScanSettingsを引数に追加することで検索条件のフィルターを設定できますが、APIリファレンスを見てもScanSettingsの各定数の挙動がよくわからなかったので動作確認を行ってみました。
※すべて検索条件無しとなっています。
####参考
BluetoothLeScanner(API)
ScanSettings(API)
#Constants:定数(API Level)
##CALLBACK_TYPE_ALL_MATCHES(API level 21)
(説明原文)
Trigger a callback for every Bluetooth advertisement found that matches the filter criteria.
(動作)
フィルタ条件に一致するすべてのBLEのコールバックをトリガするようです。
常時スキャンせず、一時500msほど間隔があります。
##CALLBACK_TYPE_FIRST_MATCH(API level 23)
(説明原文)
Receive a callback when advertisements are no longer received from a device that has been previously reported by a first match callback.
(動作)
スキャン中フィルタ条件に初めに一致したBLEを検出するようですが、一致すれば他のBLEも検出されました。
動作サイクル(再検出)は早いです。
##CALLBACK_TYPE_MATCH_LOST(API level 23)
(説明原文)
Receive a callback when advertisements are no longer received from a device that has been previously reported by a first match callback.
(動作)
直訳すると「以前に一致コールバックによって報告されているデバイスから受信されたコールバックを受信」???
接続したことがあるBLE機器が検出されたものをBLEを検出?
動作確認が取れず、はっきりと確認が取れませんでした。
##MATCH_MODE_AGGRESSIVE(API level 23)
(説明原文)
For sticky mode, higher threshold of signal strength and sightings is required before reporting by hw
(動作)
周りのBLEをすべて検出します。
常時スキャンせず、一時500msほど間隔があります。
##MATCH_MODE_STICKY(API level 23)
(説明原文)
For sticky mode, higher threshold of signal strength and sightings is required before reporting by hw
(動作)
周りのBLEをすべて検出します。
動作サイクル(再検出)は早いです。
##MATCH_NUM_FEW_ADVERTISEMENT(API level 23)
(説明原文)
Match few advertisement per filter, depends on current capability and availibility of the resources in hw
(動作)
周りのBLEで近いものから数個(3~4個?)のみ検出されました。
動作サイクル(再検出)は早いです。
##MATCH_NUM_MAX_ADVERTISEMENT(API level 23)
(説明原文)
Match as many advertisement per filter as hw could allow, depends on current capability and availibility of the resources in hw
(動作)
限界まで周りのBLEを検出する?
条件無しではアプリが落ちました。
##MATCH_NUM_ONE_ADVERTISEMENT(API level 23)
(説明原文)
Match one advertisement per filter
(動作)
フィルタ条件に一致したBLEを一つ検出するようです。
##SCAN_MODE_BALANCED(API level 21)
(説明原文)
Perform Bluetooth LE scan in balanced power mode. Scan results are returned at a rate that provides a good trade-off between scan frequency and power consumption.
(動作)
電力消費と走査周波数のバランスが取れたモードでスキャンを実行するようです。
良好な状態の速度を保ちます。
※スキャンがやや途切れます
##SCAN_MODE_LOW_LATENCY(API level 21)
(説明原文)
Scan using highest duty cycle. It's recommended to only use this mode when the application is running in the foreground.
(動作)
最速のサイクルを使用してスキャンするようです。説明文ではフォアグランドで実行している場合のみ、このモードの使用を勧めています。
##SCAN_MODE_LOW_POWER(API level 21)
(説明原文)
Perform Bluetooth LE scan in low power mode. This is the default scan mode as it consumes the least power.
(動作)
省電力モードでスキャンを実行します。
2000ms~3000msに一度の間隔で検出しています。
##SCAN_MODE_LOW_POWER(API level 23)
(説明原文)
A special Bluetooth LE scan mode. Applications using this scan mode will passively listen for other scan results without starting BLE scans themselves.
(動作)
特殊なスキャン実行のようです。
条件なく起動しても、スキャンはされます。
#終わり
今回フィルタの条件無しで調査した結果で、あくまで試行になります。
各設定の具体的な使用方法がわからないところもありますので、再度調査を行い、都度更新したいと思います。
具体的な使用方法が解る方は是非ご教授ください。