0

我有一个倒数计时器,当用户按下按钮时运行,在计时器结束时,设备的位置被发送到用户输入电话号码的另一台设备。这是我的计时器代码::

private void initTimer() {

    if(timer==null)
    {

        long totalTime= (PersistData.getIntData(con, AppConstant.selectedMinute)*60*1000)+(PersistData.getIntData(con, AppConstant.selectedseconds)*1000);
        timer=new CountDownTimer(totalTime, 1000) {

            public void onTick(long millisUntilFinished) {


                timerView.setText(getFormatterTimerText(millisUntilFinished));

                if(millisUntilFinished<60*1000)
                {

                    continueFlashAndAudio();

                     /*
                refresh GPS Location again
                 */

                    updateGPSLocation (millisUntilFinished);
                }



            }

            public void onFinish() {

                showFinishView();
            }
        };

    }
}

当计时器运行时,它应该运行“updategpslocation”函数:

private void updateGPSLocation(long millisUntilFinished) {

    Log.e("current time remaining", " time: "+millisUntilFinished/1000);


    if(millisUntilFinished/1000==30)

    {

        Log.e("30 seconds remaining", "get locaiton");

        getLocation();
    }

    if(millisUntilFinished/1000==10)

    {

        Log.e("10 seconds remaining", "get locaiton");

        getLocation();
    }
}

我遇到的问题是,大约有一半的时间,该位置不会更新,它会将先前获取的位置发送到另一部手机。

这是我获取位置的代码:

private void getLocation()
{

    GPSTracker tracker=new GPSTracker(con);
    if(tracker.canGetLocation())
    {
        Location lastLocation=tracker.getLocation();





        PersistObject.apply(con,AppConstant.LOCATION,lastLocation);
        Log.e("Location is refreshed", "5 seconds remaining");


    }
}

我对为什么会发生这种情况感到非常困惑,我花了几个小时来解决这个问题,并聘请了几个自由职业者来提供帮助,但他们所做的一切都无法解决这个问题。一半的时间代码可以正常工作,它会发送设备的新位置,一半的时间会发送设备之前返回的位置。我移动手机以测试新点,我在三部不同的手机上运行它,并且间歇性地发生在所有手机上。任何想法将不胜感激。

4

0 回答 0