2012-01-28 3 views
2

녹음 된 오디오 파일을 기본 폴더가 아닌 원하는 폴더에 저장하려고합니다. 그러나 어떻게 든 나는 그렇게하지 않았다.녹음 된 오디오 파일을 프로그래밍 방식으로 다른 폴더에 저장하는 방법은 무엇입니까?

내 코드 :

Intent recordIntent = new Intent(MediaStore.Audio.Media.RECORD_SOUND_ACTION); 
Uri mUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "/Record/sound_"+ String.valueOf(System.currentTimeMillis()) + ".amr")); 
recordIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mUri); 
startActivityForResult(recordIntent, RESULT_OK); 

는 한 음성 레코더 응용 프로그램을 호출합니다. 또한 중지 버튼을 누르면 내 앱으로 돌아가서 저장 한 것을 나타내는 축하 메시지가 표시됩니다. 하지만 내 레코드 폴더에 저장하는 대신 기본 폴더에 저장합니다. 내가 카메라 응용 프로그램을 호출 할 때 코드가 작동으로 무엇이 잘못되었는지 모르겠어요

01-29 01:34:23.900: E/ActivityThread(10824): Activity com.sec.android.app.voicerecorder.VoiceRecorderMainActivity has leaked ServiceConnection com.sec.android.app.voicerecorder.util.VRUtil$ServiceBi[email protected] that was originally bound here 

:

나는 로그 캣에서 오류 MSG가 있음을 깨달았다. MediaRecorder이 방법으로

답변

0

전 찾았습니다. 이 문제를 해결하는 방법입니다.하지만 문제를 해결하는 방법은 문제를 해결하는 것입니다.하지만 문제가 해결되지 않으면 해결할 수 있습니다.

대신에 포함되어 추가로 음성 레코더 응용 프로그램을 호출하는, 난 그냥 모든 입력없이 전화 :

Intent recordIntent = new Intent(MediaStore.Audio.Media.RECORD_SOUND_ACTION); 
startActivityForResult(recordIntent, 1111); 

을 한 후, 요청 코드 == 1111와 더불어, onActivityResult를 추가 (당신이 무엇을 넣어에 따라 다름) 와 레코더의 기본 폴더에서 확장자가 "3가"구성을 마지막으로 수정 한 파일을 검색

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    super.onActivityResult(requestCode, resultCode, data); 

    if(requestCode == 1111) 
    { 
     File folder = new File(Environment.getExternalStorageDirectory(), "/Sounds"); 
     long folderModi = folder.lastModified(); 

    FilenameFilter filter = new FilenameFilter() 
    { 
     public boolean accept(File dir, String name) 
     { 
      return (name.endsWith(3ga)); 
     } 
    }; 

    File[] folderList = folder.listFiles(filter); 

    String recentName = ""; 

    for(int i=0; i<folderList.length;i++) 
    { 
     long fileModi = folderList[i].lastModified(); 

     if(folderModi == fileModi) 
     { 
      recentName = folderList[i].getName(); 
     } 
    } 
} 

이런 식으로, 내가 파일의 이름을 얻을 수 있으며 (예를 들어, 이름 변경) 수정을 "소리" 그것으로.

다른 사람들에게 도움이되기를 바랍니다. =)

9

수행 기록 :

녹화를 시작하려면 :

public void startRecording() 
     { 


       MediaRecorder recorder = new MediaRecorder(); 

       recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
       recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
       recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
       recorder.setOutputFile(getFilename()); 

       recorder.setOnErrorListener(errorListener); 
       recorder.setOnInfoListener(infoListener); 

       try 
       { 
         recorder.prepare(); 
         recorder.start(); 
       } 
       catch (IllegalStateException e) 
       { 
         e.printStackTrace(); 
       } catch (IOException e) 
       { 
         e.printStackTrace(); 
       } 
     } 

중지 :

private void stopRecording() 
    { 


      if(null != recorder) 
      {  
        recorder.stop(); 
        recorder.reset(); 
        recorder.release(); 
        recorder = null; 
      } 

선택한 폴더의 경우 :

private String getFilename() 
     { 
       String filepath = Environment.getExternalStorageDirectory().getPath(); 
       File file = new File(filepath,AUDIO_RECORDER_FOLDER); 

       if(!file.exists()){ 
         file.mkdirs(); 
       } 

       return (file.getAbsolutePath() + "/" + System.currentTimeMillis() + ".mp3"); 
     } 
+0

음을 ... 감사하지만 모든 GUI 및 방법 내가이 있기 때문에 나는 오히려 기본 응용 프로그램을 부를 것이다 필요합니다. =) – Jovi

+0

와서 여기에 귀하의 요구 사항을 게시 http://chat.stackoverflow.com/rooms/5098/android-people – Abhi

+0

그냥'' –

0

이전에이 방법으로 사용 했으므로 괜찮습니다.

 public void stopRecording() { 

     if (mRecorder != null) { 
      mRecorder.stop(); 
      timer.cancel(); 
      mRecorder.release(); 
      mRecorder = null; 
    } 
    } 

이 파일을 저장하려면 :

private MediaRecorder mRecorder = null; 
    public void startRecording() { 
     if (mRecorder == null) { 
      mRecorder = new MediaRecorder(); 
      mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
      mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
      mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
      mRecorder.setOutputFile(getFilename()); 
      try { 
       mRecorder.prepare(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      mRecorder.start(); 
     } 
    } 

녹음을 중지

 @SuppressLint("SdCardPath") 
    private String getFilename() { 
     file = new File("/sdcard", "MyFile"); 

     if (!file.exists()) { 
      file.mkdirs(); 
     } 

     return (file.getAbsolutePath() + "/" + System.currentTimeMillis() + ".mp3"); 
    } 

if you want to delete folder after recording use this in function of stopping: 

    boolean deleted = file.delete(); 

I hope it can be helpful. 
+0

그것을 추가하십시오 나를 위해 작동하지 않습니다. –