【问题标题】:Android:voice recording with timerAndroid:带计时器的录音
【发布时间】:2011-02-12 08:21:57
【问题描述】:

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

有什么想法吗?

谢谢

【问题讨论】:

    标签: android avaudiorecorder


    【解决方案1】:

    简单的解决方案可以基于这些类:

    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);
        }
    
    }
    
    • 在开始按钮处理程序中创建新的 TimerCounterTask 并执行这个新的 TimerCounter() 参数
    • 在停止按钮处理程序中停止当前任务
    • timerText 是用于显示计时器的 TextView

    【讨论】:

    • publishProgress 在睡眠前调用,所以它应该从 00:00 开始。问题出在哪里?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多