2012-05-07 5 views
1
locationmanager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationlistener); 

このコードは、できるだけ頻繁にデバイスの場所を更新することになっています。具体的には、毎秒0ミリ秒(最低)である。Android requestLocationUpdates minimumtime + minimumdistanceは実際には機能しません。

さて、「最小」という文字がここには重要ですが、それでも場所が30秒以上の間更新されないのはなぜですか?私は、WiFi上で、あるアップデートと次のアップデートの間の実際の時間を計時しており、コードで0と0を持っていても38秒かかりました。私は1000ms(1秒)で試してみましたが、頻繁に更新されません。

この更新プログラムをより頻繁に更新するにはどうすればよいですか?なぜそれはこのように応答しますか?

ありがとうございました!

答えて

2

短い答えは:できない(更新頻度を上げる)ことです。

min_distanceとmin_timeをゼロとして指定した場合、「可能な限り頻繁に更新」されることがドキュメントに示されています。だから、あなたが見ているのは「できるだけ頻繁に」です。通常、あなたは何かが変更されていない限り更新を取得しないので、移動していなければ必ずしも更新を取得する必要はありません。また、GPSではなくネットワークの場所を使用しているため、場所の正確さがあまり良くないため、頻繁に更新を期待するべきではありません。

また、各ハードウェアベンダーは、ロケーションプロバイダーの実装方法が異なります。更新の頻度は、ハードウェアベンダーの実装によって決まります。

+0

あなたがちょうど言ったことは、私が恐れていたことを真実であることを確認しました:) GPSに関して、同じリスナーに2つのrequestLocationUpdatesを送信するのは大丈夫でしょうか? 1つはGPS_PROVIDERを使用し、もう1つはNETWORK_PROVIDERを使用します。このように lm.requestLocationUpdates(LocationManager.GPS_PROVIDER、0、0、ll); lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER、0、0、ll); – bubbly

+0

はい、複数の異なるタイプのロケーションアップデートをリクエストできます。ただし、できるだけ頻繁にGPSアップデートを要求すると、バッテリはできるだけ早く消耗しますので、非常に長い間、またはデバイスが電源に接続されていることが分かっている場合を除き、バッテリを放電させないでください。 –

+0

電池の消耗だけでなく、電話を熱くする:)。 – Siddharth

関連する問題