Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:带定时器的语音录制_Android_Avaudiorecorder - Fatal编程技术网

Android:带定时器的语音录制

Android:带定时器的语音录制,android,avaudiorecorder,Android,Avaudiorecorder,我正在创建媒体录制器演示应用程序。为此,我有两个按钮启动和停止。 我想在单击开始按钮时显示计时器,并想在停止按钮时停止 有什么想法吗 谢谢简单的解决方案可以基于以下类别: public static class TimeCounter{ private long startTime; public TimeCounter(){ startTime = new Date().getTime(); } public long countTime()

我正在创建媒体录制器演示应用程序。为此,我有两个按钮启动和停止。
我想在单击开始按钮时显示计时器,并想在停止按钮时停止

有什么想法吗


谢谢

简单的解决方案可以基于以下类别:

public static class TimeCounter{
    private long startTime;

    public TimeCounter(){
        startTime = new Date().getTime();
    }

    public long countTime(){
        return new Date().getTime() - startTime;
    }
}

public class TimeCounterTask extends AsyncTask<TimeCounter, Long, Void>{

    @Override
    protected Void doInBackground(TimeCounter... params) {
        TimeCounter tc = params[0];
        while(true){
            publishProgress(new Long(tc.countTime()));
            try{
                Thread.sleep(500);
            } catch(InterruptedException e){
                break;
            }
        }
        return null;
    }

    @Override
    protected void onProgressUpdate(Long... values) {
        super.onProgressUpdate(values);
        long millis = values[0].longValue();
        int minutes = (int) ((millis / 1000) / 60);
        int seconds = (int) ((millis / 1000) % 60);
        String s = String.format("%d min, %d sec", 
                minutes, seconds);
        timerText.setText(s);
    }

}
公共静态类计时器{
私人长启动时间;
公共计时器(){
startTime=新日期().getTime();
}
公众长时间{
返回新日期().getTime()-startTime;
}
}
公共类TimeCounterTask扩展了AsyncTask{
@凌驾
受保护的Void doInBackground(计时器…参数){
计时器tc=参数[0];
while(true){
出版进度(新长(tc.countTime());
试一试{
睡眠(500);
}捕捉(中断异常e){
打破
}
}
返回null;
}
@凌驾
受保护的void onProgressUpdate(长…值){
super.onProgressUpdate(值);
long millis=值[0]。longValue();
整数分钟=(整数)((毫秒/1000)/60);
整数秒=(整数)((毫秒/1000)%60);
String s=String.format(“%d分钟,%d秒”,
分、秒);
timerText.setText(s);
}
}
  • 在“开始”按钮处理程序中,创建新的TimerCounterTask并执行此新的TimerCounter()参数
  • 在停止按钮处理程序中停止当前任务
  • timerText是显示计时器的文本视图

publishProgress在睡觉前呼叫,所以应该从00:00开始。问题在哪里?