2016-09-06 17 views
0

私は近くの近くにあるAndroid AltBeaconライブラリを使用してモニタとレンジiBeaconsを使用しています。このアプリケーションの特定の要件の1つは、アプリケーションがバックグラウンドにある場合でもビーコン検出をスキャンし、アプリケーションが終了したときに完全に停止することです。Android AltBeaconライブラリで明示的にスキャンの開始と停止を制御する

私が理解しているこの要件は、BootstrapNotifier/RegionBootstrapによって部分的に満たされる可能性がありますが、アプリケーションが終了してもスキャンサービスが再開します。

私の回避策は、すべてのスキャンロジックを別のサービスに実装し、必要に応じて停止して開始できるようにすることでした。だからこそ、AltBeaconライブラリーはそれ自体がサービスなので、本質的に私はサービス内でサービスを実行していますが、実際にはそれほど意味がありません。

もっと良い方法がありますか?任意のアイデアをいただければ幸いです。

答えて

1

あなたはライブラリを持ってしたくない場合は、自動的にそのスキャンを再起動し、あなたがこのようApplicationManifest.xmlを編集することによって、そのStartupBroadcastReceiverを無効にすることができます

<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" ... > 
    <application ... > 
    <receiver android:name="org.altbeacon.beacon.startup.StartupBroadcastReceiver" 
       tools:node="remove" /> 
    ... 

オペレーティングシステムということ、しかし、覚えておいてくださいユーザーが明示的にアプリケーションを閉じていなくても、メモリが足りない状況でアプリケーションがバックグラウンドで実行されなくなります。だから、これを無効にすると、あなたのアプリはあなたが思っている限り、ビーコンをバックグラウンドでスキャンし続けることはないでしょう。

+0

Davidありがとうございます。この低メモリシナリオを再考することは、むしろ魅力的です。おそらく私はそれをカスタムサービスで実行し続けるべきです。 –

+0

カスタムサービスでは、メモリが少ない状況でアプリが強制終了されることはありません。だから、私はいつも私の電話で何かメモリを集中的にやっているときにPandoraやPodcastアプリの再生が止まるのを見るのです。これは、将来起こる場合に備えて、Androidビーコンライブラリのスケジューリング自体が将来再開するための全体的なポイントです。 – davidgyoung

+0

はいそのような状況を説明するために、特定の間隔の後にサービスが実行されていることを確認してから、一度アラームマネージャーを一度キャンセルすると、Alarm Managerでいくつかの追加ロジックが追加されました。それはホイールの再発明のようなものです。 –

関連する問題