簡體   English   中英

設置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;
        }
    });

我沒有示例代碼,但我建議查看開發人員指南,它提供了一個很好的示例,請查看: 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM