0

事前定義された長さ、たとえば15秒のボタンクリックでビデオを録画する必要があるアプリケーションに取り組んでいます。15秒後、手動で介入せずにMediaRecorderを自動的にリセットしたい私のコードはここにあります。

public void initMediaRecorder(){ 

mRecorder = new MediaRecorder(); 

mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
mRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); 
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
mRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263); 
mRecorder.setPreviewDisplay(mHolder.getSurface()); 
mRecorder.setMaxDuration(15000);
mRecorder.setOutputfile("blahblah On SD card")
mRecorder.setOutputFile(mOutputFile); 

} 

これで記録は完了しましたが、15秒後にUIがフリーズし、レコーダーを手動でリセットする必要があります。15秒の時間が経過した後、レコーダーをリセットする必要があるイベントを知る必要があります。

4

1 に答える 1

0

私は解決策を見つけました。たぶん、この答えは誰かを助けるでしょう。

次のリスナーを使用します

レコーダー.setOnInfoListener(新しいメディアリスナー());

 class medialistener implements MediaRecorder.OnInfoListener {     
         public void onInfo(MediaRecorder recorder, int what, int extra)
         { 
             if(what==MediaRecorder.MEDIA_RECORDER_INFO_MAX_DURATION_REACHED)
             {

             }

        // Log.i("video test", "Video Info: "+what+", "+extra);  
         } 
         } 

乾杯。

于 2012-09-11T06:10:01.827 に答える