[英]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;
}
});
我沒有示例代碼,但我建議查看開發人員指南,它提供了一個很好的示例,請查看: http : //developer.android.com/guide/topics/media/audio-capture.html
對於超時部分,請檢查: MediaRecorder.setMaxDuration(int timer)當計時器到期時會發生什么
希望這會幫助你。
你創建一個按鈕會更加明智。 按下它時,錄制開始,按鈕改變(文本,可能是背景顏色),告訴用戶錄制正在進行中。 當他再次按下它時,它會停止。 您可以使用handler.postDelayed(runnable,delayMs)進行超時。 但是如果用戶在超時之前按下停止按鈕,則應取消處理程序。 你通過handler.removeCallbacks(runnable)做到這一點
所以我另外做了這個:
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();
}
}
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.