背景:
理想的には、特定のプロパティを持つ新しいデバイスが表示されるたびにアプリケーションを起動できるように、AndroidデバイスがBluetooth Low Energyデバイスをスキャンするようにしたいと思います。
したがって、BLEのブロードキャストパケットは、たとえば、ブロードキャストデバイスによって提供されるサービスのセットを列挙します。これにより、アプリは特定のサービスに対する関心を登録し、このサービスを備えたデバイスが範囲に入ると自動的に開始されます。
私が理解していることから、これはAndroid BLE APIがどのように機能するかではありません。
可能な最も簡単な例:
周囲温度を経時的に記録するBLEセンサーがあります。 Android電話が十分近くにあるときはいつでも、すべてのデータを接続してダウンロードし、クラウドストレージソリューションに送信します。 。しかし、バッテリーを消耗させずにバックグラウンドでどのように実行する必要がありますが、それでも範囲内になったらすぐにデバイスをすばやく接続できる可能性がかなりありますか?
質問:
タイマーを設定し、時々アプリを起動してから、手動でスキャンを開始する必要がありますか?次に、どのような間隔を選択する必要があります。バッテリーに悪影響を与えることなく、スキャナーを稼働させたままにすることができますか?
可能な解決策:
これは私がこれまでに思いついたものです。
これは機能しますが、最善の方法であるかどうかはわかりません。また、間隔をどれだけ短くできるかわかりませんが、バッテリーの寿命を損なうことはありません。私が望んでいるのは、2分ごとにスキャンを開始し、10〜20秒スキャンすることです。しかし、デバイスを起動するのはかなり頻繁になるのではないかと心配していますか?
この機能はすべてオープンソースに移動されました Android Beacon Library
目的のパターンに一致するiBeaconsが検出されたときにアプリを起動または起動する
ユーザーがアプリをまだ起動していない場合でも、バックグラウンドでビーコンスキャンを実行する
バックグラウンドでスキャンレートを5分ごとに30秒に自動的に下げて、バッテリーを節約します。 (タイミング設定可能。)
コード例はshow here です
BLEデバイスがビーコンではない場合、このライブラリを使用して、センサーがビーコンとしても送信し、検出された後にメインサービスに接続することでこれを実現できます。