Android requestLocationUpdates中不更新的最小时间间隔

Android requestLocationUpdates中不更新的最小时间间隔,android,Android,我正在开发一款android应用程序,它每隔5分钟为我提供一次位置信息。现在,如果用户收到一个电话,那么我将更新5分到5秒,这样我可以每隔5秒获得用户位置,直到他接听电话为止,这样我就可以计算一个人接听电话时的速度。我每5分钟获取一次用户位置,这很正常,但当我在CALL_STATE_OFFHOOK中将此时间更新为5秒时,它不会将时间更新为5秒。我仍然在5分钟内获取位置。请帮助 @Override public void onCallStateChanged(int state, String

我正在开发一款android应用程序,它每隔5分钟为我提供一次位置信息。现在,如果用户收到一个电话,那么我将更新5分到5秒,这样我可以每隔5秒获得用户位置,直到他接听电话为止,这样我就可以计算一个人接听电话时的速度。我每5分钟获取一次用户位置,这很正常,但当我在CALL_STATE_OFFHOOK中将此时间更新为5秒时,它不会将时间更新为5秒。我仍然在5分钟内获取位置。请帮助

 @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());
        }
    }
};