2012-11-16 3 views
0

현재 음성 녹음을 위해 MediaRecorder API를 사용하고 있습니다. 다음은 사용되는 코드입니다 :연속 미디어 레코딩이 동일한 크기의 서로 다른 파일로 분리되었습니다.

mRecorder = new MediaRecorder(); 
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
mRecorder.setOutputFile(filepath); 
mRecorder.setMaxFileSize(5000); 
try { 
    mRecorder.prepare(); 
    mRecorder.start(); 
    } catch (IllegalStateException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

내가 테스트 한 위의 코드를 사용하여,는 촬영이 정지 크기와 이후 5KB있는 오디오 파일을 녹음 할 수 있습니다.

mRecorder.stop(); 
mRecorder.reset(); 
mRecorder.release(); 

가 가능 :

은 연속 녹화를하고, 나는 다음과 같은 코드를 호출 할 때까지 5 KB 파일로 저장됩니다 내가하고 싶은입니까? 현재 5Kb에 도달하면 녹음이 완전히 중단됩니다.

감사의 말 전진.

+0

예 ... 가능합니다 –

+0

어떻게 생각하세요? MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED를 사용했지만 작동하지 못했습니다. – aandroidtest

+0

왜 최대 파일 크기를 넣으 시나요 ?? u는 단지 5 KB의 파일을 원합니다. –

답변

0

@SubbaReddy PolamReddy 팁 주셔서 감사합니다. 무슨 말을하는지, 그것은 setMaxFileSize (filesizeInBytes)를 사용하여 파일 제한을 설정하는 것이 훨씬 쉽습니다.

0

다른 접근 방식을 사용합니다. 1 분마다 다음과 같이 녹음 과정을 다시 시작합니다.

int RestartAfterSeconds=60; 

Boolean recording =false; 
private void Stop_Record(){ 
    if (recording) { 
     recording=false; 
     // ................ 
     // ................ 
     // ................ 
     // your codes here 
     // ................ 
     // ................ 
     // ................ 
    } 
} 

public void Start_record(){ 
    if (!recording) { 
     recording=true; 
     // ................ 
     // ................ 
     // ................ 
     // your codes here 
     // ................ 
     // ................ 
     // ................ 
     Sheduler_handler.postDelayed(new Runnable() { @Override public void run() { Restarter_Recording(); } }, RestartAfterSeconds * 1000); //1000 ms is 1 second 
    } 
} 

public void Restarter_Recording(){  if(!recording) return; 
    // Stop now 
    Stop_Record(); 
    //and Fire start immediately 
    Sheduler_handler.postDelayed(new Runnable() { @Override public void run() { Start_Record(); } }, 100); 
} 

p.s. 비디오 파일 사이에는 약간의 간격 만 있지만, 나에게는이 순간에는 문제가되지 않습니다.

관련 문제