Android-Scanner-Compat-Library
こんにちは、アプリケーションエンジニアの難波です。
BraveridgeではIoTデバイスを製作する時によくNordic社のSoCを使用しています。
そのNordic社はAndroid用のBLEライブラリをOSSとしてリリースしています。
AndroidアプリでBLE機能を実装しようとすると、OSのバージョンや機種依存、ハマりやすいポイント等があったりと結構クセが強いです。
NordicのAndroid用BLEライブラリはその辺りを良い感じに吸収してくれています。
今回は Android-Scanner-Compat-Library を実装例と共に紹介します。
実装例
Centralを実装する時に BLEデバイスのスキャン と BLEデバイスに接続して制御 という2機能を実装する必要があります。
このライブラリは BLEデバイスのスキャン を担当します。
使用方法は簡単というか、単に BluetoothLeScannerクラス を BluetoothLeScannerCompatクラス に置き換えれば使用できます。
一番簡単な使用例:
val scanCallBack = object : ScanCallback() {
override fun onScanResult(callbackType: Int, result: ScanResult) {
Log.d("TAG", result.device.toString())
}
override fun onBatchScanResults(results: List) {
results.forEach {
Log.d("TAG", it.device.toString())
}
}
}
// スキャン開始
BluetoothLeScannerCompat.getScanner().startScan(scanCallBack)
// スキャン停止
BluetoothLeScannerCompat.getScanner().stopScan(scanCallback)
メリット
この BluetoothLeScannerCompatクラス を使用するだけで以下のメリットがあります。
- 古いバージョンのOS(7以下)でも可能な限り同じ動作をしてくれる
- バックグラウンドでも良い感じに動作してくれる
逆にいうと、動作条件が
- Android 8以上
- フォアグランドのみ使用
であるならばあまり使用するメリットはありません。
少しコード量が減るくらいです。
バックグラウンドでも動作させるには
SNS SHARE