2016-08-21 125 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"/> 
相关问题