2017-11-29 9 views
0

ボタンをクリックするたびに場所(緯度、経度)を更新するアプリを作成しています。 私は、このメソッドを呼び出すボタンをOnClickListenerを設定している -ロケーションの自動更新を停止する方法

void getLocation() { 
    try{ 
     locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
     //Default minTime = 5000, minDistance = 5 
     locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, 0, this); 
    } 
    catch (SecurityException e) { 
     e.printStackTrace(); 
    } 
} 

しかし、問題は場所が小さい時間帯に、自分自身を更新し続けていることです。私は場所を同じにしておき、ボタンが押されたときにだけ更新します。それを行うために私は何を変えなければならないのですか?

@Override 
public void onLocationChanged(Location location) { 

    locationText.setText("Current Location: "+ location.getLatitude() + " , " + location.getLongitude()); 
} 

、また、時にはそれが第二内の位置を示し、それは10秒を要する他の時間つつ -

はここで参考のためonLocationChanged()メソッドです。その理由/解決策は?

答えて

1

を更新する頻度とは何かを持っている実際にあなたが自動位置更新を望んでいない最初の場所でrequestLocationUpdates()の必要は、ありません。

ので、代わりの

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, 0, this); 

ちょうど次にボタンをクリックするごとに1つだけのコールバックを取得します

locationManager.requestSingleUpdate(LocationManager.GPS_PROVIDER, this, null); 

を使用しています。

コールバックを取得する時間について:Androidでは、バッテリー消費をできるだけ減らすよう努めています。これには、1つのアプリケーションが要求するたびにその場所が検出されず、要求がバンドルされるため、受信した1つの場所が、その場所を要求した複数のアプリまたはサービスに配信されます。

1

あなたが唯一のボタンがクリックされたときに更新したい場合、あなたは単にあなたがクリックするまでUIを更新するコールバックで値を格納することができず、

locationManager.removeUpdates(this); 

詳細情報here

+0

@ cricket_007私はそれを更新しました:) – jorjSB

1

を使用することができますボタンのクリック方法

0にボタン

private Location mLocation; 
@Override 
public void onLocationChanged(Location location) { 
    mLocation = location; 
} 

移動これを

GPSの精度は、おそらくそのが

関連する問題