2024.11.14
いまさらNode.jsを知ろう~環境構築も~
2019.07.17
プログラミングAndroid で BluetoothLeScanner.startScan はそのうち止まるから stop & start で回避しよう
坂東です。
Android で BluetoothLeScanner.startScan がそのうち止まる。
BLE機器と連携するために、これやるじゃないですか。
BluetoothManager bluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE); mBluetoothAdapter = bluetoothManager.getAdapter(); mBluetoothLeScanner = mBluetoothAdapter.getBluetoothLeScanner(); mBluetoothLeScanner.startScan(mScanCallback);
すると、そのうち、mScanCallbackがコールされなくなるんです。
どのくらいの時間で起こるか検証すると10分〜1時間くらい。結構バラバラ。
いろいろログ埋め込んでLogCat見ると、エラーもなく前触れ無くバツンッっとScanが止まってる感じ。
不具合だと騒ぐのは簡単ですが、私はAndroidのBT周りの実装は雑で挙動も端末ごとにフリーダムであることを経験しています。
BluetoothLeScannerはハードの管轄で自我を持っているのでOSじゃ制御しきれないのでしょう。
手元の端末だと「長時間可動すると落とす」っぽい。
あと「電池が減った」というトリガも端末によってはありそうだなと想像。
で私はタイマー60秒で .stopScan() .startScan() を繰り返しBluetoothLeScannerを叩き起こす事でこの問題を回避することにしたのでした。
2時間くらい放置してるけどうまく動いている。
おわり。
【記事への感想募集中!】
記事への感想・ご意見がありましたら、ぜひフォームからご投稿ください!【テクノデジタルではエンジニア/デザイナーを積極採用中です!】
下記項目に1つでも当てはまる方は是非、詳細ページへ!Qangaroo(カンガルー)
【テクノデジタルのインフラサービス】
当社では、多数のサービスの開発実績を活かし、
アプリケーションのパフォーマンスを最大限に引き出すインフラ設計・構築を行います。
AWSなどへのクラウド移行、既存インフラの監視・運用保守も承りますので、ぜひご相談ください。
詳細は下記ページをご覧ください。
最近の記事
タグ検索