2 o casper ne O_Casper_ne 于 2013.04.25 17:43 提问

在 MediaRecorder 如何设计时间计算?

我使用 MediaRecorder 创建了程序,我想显示音频记录的时间期限。MediaRecorder 只是用来录制声音。那如何显示时间呢?

2个回答

xiaoyan_12
xiaoyan_12   2013.04.26 10:27
已采纳

在记录开始的 System.currentTimeMillis(); 方法中设置 start_time 方法。
然后使用 Runnable 可以执行一个循环,直到停止记录。

final Handler handler = new Handler();
Runnable update_runnable = new Runnable() {
    public void run() {
        updateTextView();
    }
};
Then with the updateTextView() you'd do something like this:

long duration = (int) ((System.currentTimeMillis() - start_time) / 1000);
// ... set TextView with duration value
handler.postDelayed(update_runnable, 1000); /
franzhong
franzhong   2013.04.25 23:00

我觉得在启动start()之后即开始记时操作
可开启个线程刷新时间记录
当点击停止就将记时的run里的while(iFlag)设为false就行了,不知是你想的意思不
注意模拟器上不方便测试,以下代码供参考

@Override  //test code
    public void onClick(View v) {        
        switch (v.getId()) {  
        case R.id.btnStart:       
            System.out.println("---开始录音---");                 
            if (!Environment.getExternalStorageState().equals(  
                    Environment.MEDIA_MOUNTED)) {  
                Toast.makeText(RecordSoundDemoActivity.this, "SD卡不存在",  
                        Toast.LENGTH_LONG).show();  
                return;  
            }        
            try {  
                mediaRecorder = new MediaRecorder();  
                // 创建音频输出路径  
                soundFile = new File(Environment.getExternalStorageDirectory()  
                        .getCanonicalPath() + File.separator + "sound.3gp");  
                // 设置录音的来源
                mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);  
                // 设置录制的声音输出格式  
                mediaRecorder  
                        .setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);  
                // 设置声音的编码格式  
                mediaRecorder  
                        .setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);  
                // 设置录音的输出文件路径  
                mediaRecorder.setOutputFile(soundFile.getAbsolutePath());      
                // 做预期准备  
                mediaRecorder.prepare();  
                // 开始录音  
                mediaRecorder.start();  
                //start new thread here...
            } catch (Exception e) {  
                // TODO: handle exception  
            }       
            break;      
        case R.id.btnStop:        
            System.out.println("---停止录音---");  
            if (soundFile != null && soundFile.exists()) {  
                mediaRecorder.stop();  
                // 释放资源  
                mediaRecorder.release();  
                mediaRecorder = null;  
            }  
            break;  
        default:  
            break;  
        }       
    } 
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!