设置android中录音的时间限制

时间:2015-04-18 07:56:33

标签: android multithreading button touch

我创建了一个按钮,触摸时开始录制,不触摸时停止录制语音。我要实现这样的线程吗?但是我应该把它放在哪里,在ACTION.DOWN或ACTION.UP?

public class StopRecord extends Thread {
int i = 0;
@Override
public void run() {
    super.run();
    handler.post(new Runnable() {
        @Override
        public void run() {
            stopRecording();
        }
    });
}

}

我必须把它放在这里:

@Override
        public boolean onTouch(View v, MotionEvent event) {
            switch(event.getAction()){
                case MotionEvent.ACTION_DOWN:
                    startRecording();
                break;
                case MotionEvent.ACTION_UP:
                    stopRecording();
                break;
            }
            return false;
        }
    });

3 个答案:

答案 0 :(得分:1)

您创建一个按钮会更加明显。按下它时,录制开始,按钮改变(文本,可能是背景颜色),告诉用户录制正在进行中。当他再次按下它时,它会停止。您可以使用handler.postDelayed(runnable,delayMs)进行超时。但是如果用户在超时之前按下停止按钮,则应取消处理程序。你可以通过handler.removeCallbacks(runnable)

来做到这一点

答案 1 :(得分:1)

我没有示例代码,但我建议查看开发人员指南,该指南提供了一个很好的示例,请检查:http://developer.android.com/guide/topics/media/audio-capture.html

对于超时部分,请检查:MediaRecorder.setMaxDuration(int timer) what happens when timer expires

希望这会对你有所帮助。

答案 2 :(得分:0)

所以我另外做了这个:

private MediaRecorder.OnInfoListener infoListener = new MediaRecorder.OnInfoListener()
{
    @Override
    public void onInfo(MediaRecorder mr, int what, int extra) {

        if (what == MediaRecorder.MEDIA_RECORDER_INFO_MAX_DURATION_REACHED) {
            //display in long period of time
            Toast.makeText(getApplicationContext(), "End Recording", Toast.LENGTH_LONG).show();
            stopRecording();

        }

    }
};