I am facing issue in chronometer
if I pause chronometer
it not starting where it is stopped. so I need to start where it is stopped. In onlocation
change method if meter less then 5 meters time will start if greater then 5 meters the time will stop but it is not starting where it is stopped
public class MainActivity{
@Override
public void onLocationChanged(@NonNull Location location) {
if (mPresenter.getLocalSTATUS() != null && mPresenter.getLocalSTATUS().equalsIgnoreCase(LOCAL_CONTINUE_RIDE))
{
if(mPresenter.getLocalSTATUS().equalsIgnoreCase(LOCAL_CONTINUE_RIDE))
{
if (results[0] < 5.09) {
cmTimer.start();
}
else {
pauseOffset = SystemClock.elapsedRealtime();
cmTimer.stop();
}
}
}
}
public void DonePickUpUI_OnClick() {
if (!resume) {
cmTimer.setBase(SystemClock.elapsedRealtime());
cmTimer.start();
} else {
cmTimer.start();
}
assert cmTimer != null;
cmTimer.setOnChronometerTickListener(arg0 -> {
if (!resume) {
if(mPresenter.getLocalSTATUS().equalsIgnoreCase(LOCAL_START_RIDE)) {
long minute = (((SystemClock.elapsedRealtime() - cmTimer.getBase()) / 1000) / 60);
long second = (((SystemClock.elapsedRealtime() - cmTimer.getBase()) / 1000) % 60);
elapsedTime_Done_pickup = SystemClock.elapsedRealtime();
Log.d(TAG, "onChronometerTick: " + minute + " : " + second);
offline_waiting_time.setText(minute + " : " + second);
}
} else {
if (mPresenter.getLocalSTATUS().equalsIgnoreCase(LOCAL_START_RIDE)) {
long minute = ((elapsedTime_Done_pickup - cmTimer.getBase()) / 1000) / 60;
long second = ((elapsedTime_Done_pickup - cmTimer.getBase()) / 1000) % 60;
elapsedTime_Done_pickup = elapsedTime_Done_pickup + 1000;
Log.d(TAG, "onChronometerTick: " + minute + " : " + second);
offline_waiting_time.setText(minute + " : " + second);
/*offline booking*/
}
}
});
/*offline booking*/
}
private void startRide_OnCLICK() {
cmTimer.setOnChronometerTickListener(arg0 -> {
if (!resume) {
if(mPresenter.getLocalSTATUS().equalsIgnoreCase(LOCAL_CONTINUE_RIDE)) {
long minute = (((SystemClock.elapsedRealtime() - cmTimer.getBase()) / 1000) / 60) - elapsedTime_Done_pickup;
long second = (((SystemClock.elapsedRealtime() - cmTimer.getBase()) / 1000) % 60) - elapsedTime_Done_pickup;
elapsedTime_Done_pickup = SystemClock.elapsedRealtime();
Log.d(TAG, "onChronometerTick: " + minute + " : " + second);
offline_waiting_time.setText(minute + " : " + second);
}
} else {
if (mPresenter.getLocalSTATUS().equalsIgnoreCase(LOCAL_CONTINUE_RIDE)) {
long minute = ((elapsedTime_Done_pickup - cmTimer.getBase()) / 1000) / 60;
long second = ((elapsedTime_Done_pickup - cmTimer.getBase()) / 1000) % 60;
elapsedTime_Done_pickup = elapsedTime_Done_pickup + 1000;
Log.d(TAG, "onChronometerTick: " + minute + " : " + second);
offline_waiting_time.setText(minute + " : " + second);
/*offline booking*/
}
}
});
}
}}