2017-08-15 17 views
0

ボタンをクリックしてユーザーを探したい。したがって、私はこのコードを使用します。AndroidのrequestLocationUpdatesが正しく呼び出されない

lm = getSystemService(LocationManager.class); 
provider = LocationManager.GPS_PROVIDER; 
listener = new LocationListener() { 
@Override 
public void onLocationChanged(Location location) { 
    Log.e("UPDATE","UPDATING LOCATION"); 
} 
@Override 
public void onStatusChanged(String s, int i, Bundle bundle) { 

} 
@Override 
public void onProviderEnabled(String s) { 

} 
@Override 
public void onProviderDisabled(String s) { 

} 
}; 

lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, listener); 

requestLocationUpdatesメソッドが呼び出されますがonLocationChanged方法は、ほんの数回呼び出されます。 GPSが有効になり、権限が与えられます。

なぜonLocationChangedが常に呼び出されるとは限りませんか?また、requestLocationUpdatesを呼び出した後に時々falseになるgetLastKnownLocationもチェックしました。

+0

何とか役立つかどうかを確認するには、ここで確認してください。https://stackoverflow.com/a/8600896/3965050 –

+0

requestLocationUpdates内にリスナーを登録しようとしました。今は決して呼び出されません。 LocationManagerもチェックされます(nullではありません)。 – JavaForAndroid

+0

いいえ、しかし、私はこの部分を意味しています:現在の場所の更新が最後の既知の場所と一致しない場合、onLocationChanged()が呼び出されます。 –

答えて

0

私はonLocationChanged()が常に呼び出されるとは考えていないと考えられます。場所が変更された場合にのみ呼び出されます。

0

私は、要求方法をlm.requestSingleUpdate(criteria, listener,null);に変更しました。これは完璧に機能し、条件付きrequestLocationUpdatesも機能します。

プロバイダに問題があるようです。

関連する問題