android天文钟间隔和重置

android天文钟间隔和重置,android,chronometer,Android,Chronometer,我在以色列担任足球裁判,我被要求编写一个应用程序,模拟我们即将到来的赛季的体能测试。 该测试是一个间隔测试,用户可以输入他运行、行走的时间以及设置的次数。 每次启动/停止运行时都会发出嘟嘟声(beep变量的类型为MediaPlayer)。每次跑步/步行结束时,计时器都应复位 下面的代码几乎可以工作-在正确的时间听到嘟嘟声,并在正确的设置数后停止,但屏幕在计时器启动后立即卡住 我真的很感激你的帮助! 谢谢,亚德 private void testLoop() { int i = 0;

我在以色列担任足球裁判,我被要求编写一个应用程序,模拟我们即将到来的赛季的体能测试。 该测试是一个间隔测试,用户可以输入他运行、行走的时间以及设置的次数。 每次启动/停止运行时都会发出嘟嘟声(
beep
变量的类型为
MediaPlayer
)。每次跑步/步行结束时,计时器都应复位

下面的代码几乎可以工作-在正确的时间听到嘟嘟声,并在正确的设置数后停止,但屏幕在计时器启动后立即卡住

我真的很感激你的帮助! 谢谢,亚德

private void testLoop() {
    int i = 0;
    boolean flag = true; //true = running, false = walking
    chronometer.setBase(SystemClock.elapsedRealtime());
    chronometer.start();

    //run, walk, rep = integers that are set by user input

    beep.start();
    tvRunWalk.setText("Running");
    tvRepNum.setText(String.format("Repetition Number: %d", i + 1));
    while (i < rep) //rep = number of repetitions
    {
        if (SystemClock.elapsedRealtime() - chronometer.getBase() == run * 1000 && flag) //if running time is over and you are now running
        {
            chronometer.setBase(SystemClock.elapsedRealtime());
            flag = false;
            tvRunWalk.setText("Walking");
            beep.start();
        }
        else if (SystemClock.elapsedRealtime() - chronometer.getBase() == walk * 1000 && !flag) //if walking time is over and you are now walking
        {
            chronometer.setBase(SystemClock.elapsedRealtime());
            flag = true;
            i++;
            tvRunWalk.setText("Running");
            tvRepNum.setText(String.format("Repetition Number: %d", i + 1));
            beep.start();
        }
    }
}
private void testLoop(){
int i=0;
布尔标志=true;//true=running,false=walking
天文钟.setBase(SystemClock.elapsedRealtime());
计时表。开始();
//run、walk、rep=由用户输入设置的整数
beep.start();
tvRunWalk.setText(“运行”);
setText(String.format(“重复编号:%d”,i+1));
while(i
您的while循环正在阻塞UI。最好使用
AsyncTask
并将循环放入其
doInBackground()
方法中,以便正确更新UI

更多信息请点击此处: