在 android 中设置录音时间限制
Set time limit on audio recording in android
我创建了一个按钮,触摸时开始录音,不触摸时停止录音。我应该实现这样的线程吗?但我到底应该把它放在哪里,在 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;
}
});
创建一个按钮更有意义。当您按下它时,录音开始并且按钮发生变化(文本,可能是背景颜色)以告诉用户录音正在进行中。当他再次按下它时,它停止了。您可以使用 handler.postDelayed(runnable, delayMs) 进行超时。但是如果用户在超时前按下停止按钮,你应该取消处理程序。您可以通过 handler.removeCallbacks(runnable)
我没有示例代码,但我建议查看开发人员指南,其中提供了一个很好的示例,请查看:http://developer.android.com/guide/topics/media/audio-capture.html
对于超时部分,请检查:MediaRecorder.setMaxDuration(int timer) what happens when timer expires
希望对您有所帮助。
所以我另外做了这个:
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();
}
}
};
我创建了一个按钮,触摸时开始录音,不触摸时停止录音。我应该实现这样的线程吗?但我到底应该把它放在哪里,在 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;
}
});
创建一个按钮更有意义。当您按下它时,录音开始并且按钮发生变化(文本,可能是背景颜色)以告诉用户录音正在进行中。当他再次按下它时,它停止了。您可以使用 handler.postDelayed(runnable, delayMs) 进行超时。但是如果用户在超时前按下停止按钮,你应该取消处理程序。您可以通过 handler.removeCallbacks(runnable)
我没有示例代码,但我建议查看开发人员指南,其中提供了一个很好的示例,请查看:http://developer.android.com/guide/topics/media/audio-capture.html
对于超时部分,请检查:MediaRecorder.setMaxDuration(int timer) what happens when timer expires
希望对您有所帮助。
所以我另外做了这个:
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();
}
}
};