2011-04-04 13 views
0

私は緯度と経度を取得する必要がありますアプリで取り組んでいます。私の場合requestLocationUpdates (String provider, long minTime, float minDistance, LocationListener listener)はオプションではありません。どうして?なぜなら、ユーザーが場所が必要な何かをするときだけ、私は場所を取得しなければならないからです(彼がボタンを押すと言う)。ボタンが当たった時に正確に場所が必要です。 requestLocationUpdatesでminTimeを設定することができます。これを設定すると、30000で "ボタンヒットタイム"の位置が私の望むほど良くはありません。同じ理由のminDistanceも私が望むほど良くはありません。もし私が余分な関数requestLocationUpdatesが正しい場合 - minTimeとminDistanceが0に設定されていると、位置は常に更新されています。私が間違っている場合は私を修正してください。アプリは私が働いている会社のためのもので、そのアプリは昼夜を通して使用されます。アプリが常時位置の更新を確認すると、バッテリーが空になることがよくあります。だから私はその時点で位置が必要なのですが、そのボタンが当たったのです。ユーザーはインターネットとGPSにアクセスできません。だから私は使用する必要がありますNETWORK_PROVIDERAndroid:1つの場所を更新する方法と再起動後に場所を取得することができません

私はまた、再起動デバイスの後に場所を取得することに問題があります。それは私がGoogleマップを実行するまで動作しません。ユーザーはこれもavalibleを持っていないので、どの機能が再起動後に場所を取得するためにアンドロイド使用のGoogleマップを行うのですか?私はこのコードを使用して、現時点で

LocationManager mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
     LocationListener mlocListener = new MyLocationListener(); 
     mlocManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, mlocListener); 
     mlocManager.removeUpdates(mlocListener); 



public class MyLocationListener implements LocationListener{ 
    @Override 
    public void onLocationChanged(Location loc){ 
    latitude=loc.getLatitude(); 
    longitude=loc.getLongitude(); 
    Text = "My current location is: \n" + "Latitud = " + loc.getLatitude() + "\nLongitud = " + loc.getLongitude(); 
    Toast.makeText(getApplicationContext(),Text,Toast.LENGTH_SHORT).show(); 
    } 
    @Override 
    public void onProviderDisabled(String provider){} 
    @Override 
    public void onProviderEnabled(String provider){} 
    @Override 
    public void onStatusChanged(String provider, int status, Bundle extras){} 
} 

コードがhere

からですが、このコードは正しく動作しません。 「場所を取得」ボタンを押すとトーストが表示され、場所が正しい。しかし、私は何度かボタンを押すと、何もしません。 - しかし5分後にトーストは百回のように示されています...それはなぜですか?

+0

私はテストして、ネットワークプロバイダに接続して緯度と経度を取得するためにデバイスに45s-90sが必要であることに気付きました。だから私は2番目の質問を解決... –

答えて

0

requestLocationUpdatesの後すぐにremoveUpdatesを呼び出します。したがって、リスナーは決して登録されません。 onLocationChangedメソッドのremoveUpdatesを呼び出します。

関連する問題