これは典型的なロケーション要求がどのように見えるかです:
注:私はActivityからこれを呼び出すので、私は、パラメータとしてActivity
を持っています。私のutilクラスにあります。
public static void getLocation(Activity activity) {
final LocationListener locationListener = new LocationListener() {
@Override
public void onProviderEnabled(String provider) {
Log.i(TAG, "onProviderEnabled");
}
@Override
public void onProviderDisabled(String provider) {
Log.i(TAG, "onProviderDisabled");
}
@Override
public void onLocationChanged(Location location) {
Log.i(TAG, "onLocationChanged");
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
Log.i(TAG, "onStatusChanged");
}
};
final LocationManager locationManager = (LocationManager) appContext.getSystemService(Context.LOCATION_SERVICE);
final Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setCostAllowed(false);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setSpeedRequired(false);
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
locationManager.requestLocationUpdates(1000, 0, criteria, locationListener, null);
}
});
}
EDIT:@ishmaelMakitlaのような は
には、次の権限を持っていることを確認し、言った:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
onLocationChanged()関数は、場合にのみ、あなたの場所の変更呼び出されます。これを引き起こすためにあなたの立場を変えようとしましたか? –
https://www.genymotion.com/を使って模擬場所を与え、 'onLocationChanged()'関数をテストするために物理的に移動する必要はありません –
'requestLocationUpdatesの中で' minimum distance = 0'を設定しました() 'は、場所の変更が0メートルであっても、1秒後に更新が生成されることを意味します。 @ Chepe77 –