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
更多信息请点击此处: