2011-10-31 10 views
2

私はロケーションベースのアプリケーションで作業していますが、コア実装であるロケーションの実装を除いてすべてが問題ありません。Androidベストロケーションリスナーの実装

私は場所が非常に高価だと知っていますが、バッテリーの消費量を考慮してこれを処理できませんでした。

ステップ1:1分の時間間隔でアラームマネージャを作成します

は、ここに私の現在のアルゴリズムです。

ステップ2:アラームがトリガされると、

if(settings.getBoolean("use_gps", false)) 
     manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, listener); 
    manager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0,listener); 
    manager.requestLocationUpdates(LocationManager.PASSIVE_PROVIDER, 0, 0,listener); 

位置のリスナーを開始ステップ3:停止位置を受信し、場所

ステップ4のために15秒の最大待ち

問題の1つは、0秒で0メートルの位置精度で、CPU使用率が大幅に増加します。アラームがトリガーされるとCPUが45%、アラームが0-15秒です。

私のアプリのバッテリー使用量を見ると、バッテリー使用量は1〜2時間後に増加しますが、バッテリー使用量はわずか4%〜5%です。

2番目の問題は、ユーザーがGPSで位置情報を取得したいときに発生します。 GPSによる位置取得はネットワークプロバイダからの位置取得に比べて時間がかかるため、GPSで位置を取得できませんでした。

私は多くの異なる方法を実装した後にこのアルゴリズムを実装しました。

私は、CPU使用率の低いGPS経由で定期的な位置情報検索を正常に実装した人からの推薦を探しています。

答えて

2

受信機とサービスを一緒に使用します。この目的のために、完全なサンプルをthis linkに見つけることができます。そこにリスナーがいます。リスナーは、新しい場所があなたのために用意されていることに注意するために、あなたの活動に使用することができます。また、AlarmManagerがあるサービスもあります。