2012-01-28 12 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 [email protected]e7c8 that was originally bound here 

私はlogcatでエラーMSGがあることに気づきました。

答えて

0

私は見つけたこの問題を解決する方法は、それはまっすぐにポイントを得ることは、それを行うにはラウンドがかかるが、私が持っている最高とそれも働く。

代わりに含まれる余分とボイスレコーダーアプリを呼び出すので、私はただの入力なしに、それを呼び出す:

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

を、その後、要求コード== 1111で、onActivityResultを追加します(あなたが入れたものに依存)そして、レコーダーのデフォルトフォルダから拡張子「3GA」から構成され、最後の変更されたファイルを取得

@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

、このようにMediaRecorderで録音を行います。

録音を開始するには:停止する

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

ERMを...感謝が、それはすべての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

it私にとってはうまくいかない –

関連する問題