2016-08-21 122 views
1

我試圖做一個簡單的記錄器,當我開始操作時,我得到fileNotFoundException。我如何在特定的文件夾中創建.wav文件,我們可以在外部卡上創建一個.wav文件,以便稍後可以訪問該文件夾以便聆聽存儲在那裏的記錄。如何創建一個記錄後的.wav文件 - Android Studio

這是到目前爲止我的代碼,我使用的library記錄活動:

public class MainActivity extends Activity { 
    String filePath; 
    int color ; 
    int requestCode = 0; 
    Button recordButton; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     recordButton = (Button) findViewById(R.id.recordButton); 

     recordButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       filePath = Environment.getExternalStorageDirectory() + "/recorded_audio.wav"; 
       color = getResources().getColor(R.color.colorPrimaryDark); 
       AndroidAudioRecorder.with(MainActivity.this) 
         .setFilePath(filePath) 
         .setColor(color) 
         .setRequestCode(requestCode) 
         .record(); 
      } 
     }); 


    } 
    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     if (requestCode == 0) { 
      if (resultCode == RESULT_OK) { 
       Toast.makeText(MainActivity.this, "Resoult ok", Toast.LENGTH_SHORT).show(); 
       // Great! User has recorded and saved the audio file 
      } else if (resultCode == RESULT_CANCELED) { 
       Toast.makeText(MainActivity.this, "Resoult not-ok", Toast.LENGTH_SHORT).show(); 
       // Oops! User has canceled the recording 
      } 
     } 
    } 
} 

回答

1

的Android有一個內置的麥克風,通過它可以捕獲音頻並存儲它,或者在手機中播放。有很多方法可以做到,但最常用的方法是通過MediaRecorder類。

Android提供MediaRecorder類來錄製音頻或視頻。爲了使用MediaRecorder類,您將首先創建MediaRecorder類的一個實例。其語法如下。

MediaRecorder myAudioRecorder = new MediaRecorder(); 

現在您將設置源,輸出和編碼格式以及輸出文件。他們的語法如下。

myAudioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
myAudioRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
myAudioRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB); 
myAudioRecorder.setOutputFile(outputFile); 

在指定了音頻源和格式及其輸出文件後,我們可以調用兩個基本的方法準備並開始開始錄製音頻。

myAudioRecorder.prepare(); 
myAudioRecorder.start(); 

在你的代碼只是以下變化: -

outputFile = Environment.getExternalStorageDirectory().getAbsolutePath() + "/recording.3gp";; 

     myAudioRecorder=new MediaRecorder(); 
     myAudioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
     myAudioRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
     myAudioRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB); 
     myAudioRecorder.setOutputFile(outputFile); 

     record.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      try { 
       myAudioRecorder.prepare(); 
       myAudioRecorder.start(); 
      } 

      catch (IllegalStateException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

      catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

      record.setEnabled(false); 
      stop.setEnabled(true); 

      Toast.makeText(getApplicationContext(), "Recording started", Toast.LENGTH_LONG).show(); 
     } 
     }); 

希望它能幫助,並把權限也將在你的Android清單文件。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
    <uses-permission android:name="android.permission.RECORD_AUDIO" /> 
+1

但你回答了大約3gp文件,而不是wav文件沒有? – motis10

1

答案是比我要補充這些權限在AndroidMainifers.xml:

<uses-permission android:name="android.permission.RECORD_AUDIO"/> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
相關問題