Android requestLocationUpdates中不更新的最小时间间隔
我正在开发一款android应用程序,它每隔5分钟为我提供一次位置信息。现在,如果用户收到一个电话,那么我将更新5分到5秒,这样我可以每隔5秒获得用户位置,直到他接听电话为止,这样我就可以计算一个人接听电话时的速度。我每5分钟获取一次用户位置,这很正常,但当我在CALL_STATE_OFFHOOK中将此时间更新为5秒时,它不会将时间更新为5秒。我仍然在5分钟内获取位置。请帮助Android requestLocationUpdates中不更新的最小时间间隔,android,Android,我正在开发一款android应用程序,它每隔5分钟为我提供一次位置信息。现在,如果用户收到一个电话,那么我将更新5分到5秒,这样我可以每隔5秒获得用户位置,直到他接听电话为止,这样我就可以计算一个人接听电话时的速度。我每5分钟获取一次用户位置,这很正常,但当我在CALL_STATE_OFFHOOK中将此时间更新为5秒时,它不会将时间更新为5秒。我仍然在5分钟内获取位置。请帮助 @Override public void onCallStateChanged(int state, String
@Override
public void onCallStateChanged(int state, String incomingNumber) {
super.onCallStateChanged(state, incomingNumber);
log.info("onCallStateChanged called");
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:
BackgroundService.LOCATION_INTERVAL = 300000;
log.info("onCallStateChanged CALL_STATE_IDLE():");
//Toast.makeText(context, "Phone state Idle", Toast.LENGTH_LONG).show();
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
BackgroundService.LOCATION_INTERVAL = 5000;
log.info("onCallStateChanged CALL_STATE_OFFHOOK()");
//Toast.makeText(context, "Phone state Off hook", Toast.LENGTH_LONG).show();
break;
case TelephonyManager.CALL_STATE_RINGING:
log.info("call state ringing before");
// BackgroundService.LOCATION_INTERVAL = 00000;
log.info("call state ringing after");
//Toast.makeText(context, "Phone state Ringing", Toast.LENGTH_LONG).show();
break;
default:
break;
}
}
也许使用加速计来获取用户速度是更好的主意,但我在mLocationManager.requestLocationUpdates(LocationManager.NETWORK_提供程序、LOCATION_间隔、LOCATION_距离、mLocationListeners[1],Looper.getMainLooper())中停留在更新时间上;也许使用加速计来获取用户速度是更好的主意,但我在mLocationManager.requestLocationUpdates(LocationManager.NETWORK_提供程序、LOCATION_间隔、LOCATION_距离、mLocationListeners[1],Looper.getMainLooper())中停留在更新时间上;
@Override
public void onCreate() {
this.isRunning = false;
this.backgroundThread = new Thread(myTask);
log.info("on create run");
}
private Runnable myTask = new Runnable() {
public void run() {
initializeLocationManager();
try {
mLocationManager.requestLocationUpdates(
LocationManager.NETWORK_PROVIDER, LOCATION_INTERVAL,
LOCATION_DISTANCE, mLocationListeners[1],
Looper.getMainLooper());
log.info("Location Interval" +LOCATION_INTERVAL);
} catch (java.lang.SecurityException ex) {
log.info("fail to request location update, ignore");
Log.i(TAG, "fail to request location update, ignore", ex);
} catch (IllegalArgumentException ex) {
Log.d(TAG,
"network provider does not exist, " + ex.getMessage());
}
try {
mLocationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER, LOCATION_INTERVAL,
LOCATION_DISTANCE, mLocationListeners[0],
Looper.getMainLooper());
} catch (java.lang.SecurityException ex) {
Log.i(TAG, "fail to request location update, ignore", ex);
} catch (IllegalArgumentException ex) {
Log.d(TAG, "gps provider does not exist " + ex.getMessage());
}
}
};