0

Android Beacon-Libraryを使ってビーコンをスキャンし、情報を表示するにはどうすればいいですか?バックグラウンドモードでは、通知をユーザーに送信します。しかし、私は開発中に問題に遭遇しました。Bootstrapnotifierは後で追加されたビーコンを認識しません。 Android-Beacon-Library

Bootstrapnotifierが、この時点で私が知りませんので、起動後に探す領域を追加します。

これは私のコードです:私のアプリケーションのonCreateメソッドで

mRegionBootstrap = new RegionBootstrap(this, new ArrayList<Region>()); 

私はビーコンが私のリストを通過し、それらを追加知った後:ランタイムのすべてで

for(BeaconModel beacon : mBeaconList) { 
    mRegionBootstrap.addRegion(new Region(beacon.getId(), 
    Identifier.parse(beacon.getUuid()), 
    Identifier.fromInt(beacon.getMajor()),  
    Identifier.fromInt(beacon.getMinor()))); 
} 

ビーコンが見つけられ、私は情報を表示することができます。

しかし、私はバックグラウンドにアプリを移動すると、バックグラウンドサービスは、それらのいずれかを認識しません。

バックグラウンドサービスは、コンストラクタ内の配列のみを検索します。

ビーコンを後でバックグラウンドサービスに追加する方法はありますか?

答えて

0

mRegionBootstrap.addRegion(...)メソッドを使用できますが、ビーコンサービスへの接続が確立された後でなければ、呼び出しは無視され、ログにはCan't add bootstrap regionが表示されます。

私はそれが起こっていると思っています。通常、確立するには接続が1秒未満ですが、バックグラウンドで起動されるアプリによってタイミングが異なる場合があります。残念ながら、onBeaconServiceConnectedコールバックはBootstrapNotifierインターフェイスの一部ではないため、いつ実行するのか分かりにくいです。

あなたの地域を知るまで、おそらくRegionBootstrapの建設を延期することができます。以前にそれを構築する理由はありません。

+0

お返事ありがとうございます。後で私の地域を知っているところでRegionbootstrapを作成しようとしました。しかし、私は別の問題に遭遇しました:最初のアプリケーションの起動時にすべて正常に動作しますが、2回目には、ビーコンが見つからず、範囲内のすべてのビーコンの状態が0に設定されました。空のリストの代わりに空のリージョンを持つRegionbootstrapを作成すると、それは機能します。 – Toby