私は位置情報システムにいくつかの問題があります。 私はlocationListenerを実装するサービスを持っています。 可能な限りネットワークを使用して最適な場所を取得したい、ネットワークが十分正確でない場合はgps(精度300mt以上)。 これは問題です。 5分ごとに場所が必要です(可能であれば、正確ではありません)。 私はで始まる:私は場所を聞くと私は300mtよりも高い精度で位置を取得するとき、私はGPSロケーションシステムに変更したい「onLocationChanged」で同時に複数のロケーションプロバイダー
LocationManager lm=(LocationManager)getApplicationContext().getSystemService(LOCATION_SERVICE);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_COARSE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
String provider=lm.getBestProvider(criteria, true);
if(provider!=null){
lm.requestLocationUpdates(provider,5*60*1000,0,this);
。
私はこのように、allupdatesを削除してから、GPSの更新を要求した場合:
lm.removeUpdates((android.location.LocationListener) this);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
String provider=lm.getBestProvider(criteria, true);
if(provider!=null){
lm.requestLocationUpdates(provider,5*60*1000,0,this);
}
システムはgpsupdateを待って停止し、私は近くの部屋にいる場合、それは時間の位置情報の更新なしで滞在することができ、無視時間更新表示。 gpsが「x」秒間に場所を指定していない場合、locationproviderにネットワークに切り替えるよう指示する方法はありますか? gpsがローカライズしていないときの理解方法
または2人のプロバイダから同時に(ネットワークとGPS)のrequestlocationupdateが問題になることがありますか?
提案がありますか?
リンクありがとうございます。 gpsからの更新要求を制御するアラームですべてのサービスを変更しました。私はwifiの場所を調べています。十分正確でない場合はgpsをチェックし、gpslocationが60秒以内に取得できない場合は、gpslistenerを削除してnetworklistenerを残します。 しかし、それは私が好きなものすべてを働かせていない:私はgpsupdateを求めるとき、GPSアイコンが正しく表示されますが、それは固定されて何もしないようです、そして、私は60秒で位置を受信しません。 60秒後、私のサービスはリスニングを止め、アイコンが消えます。私はgpsをオンにしてlocを取得する何かを忘れていますか? – Rabarama
私はリスナーを置いたままにしておきます。あなたはAPPROPIATEの更新を受け取ります。間隔は、時間と空間の両方で、あなたが借りている前に最小間隔/時間を設定することによって、不要なコールバックをカットすることを目的としています。コールバックに表示される結果を信頼し、ガイドの示唆するようにタイムスタンプとメタデータを分析してください。 GPSをロックした後に新しい場所が見つからない場合は、その情報は価値がない可能性があります.Wi-Fiを使用していない限り、新しい情報が即座に取得されます。 – slezica