2016-08-21 2 views
1

J'essaie de faire un enregistreur simple et quand je commence l'opération, je reçois fileNotFoundException. Comment puis-je créer un fichier .wav dans un dossier spécifique, disons sur la carte externe, afin que je puisse accéder à ce dossier plus tard pour écouter les enregistrements stockés là.Comment créer un fichier .wav après un enregistrement - Android Studio

Ceci est mon code à ce jour, j'ai utilisé un library l'activité d'enregistrement:

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 
      } 
     } 
    } 
} 

Répondre

1

Android a un microphone intégré à travers lequel vous pouvez capturer l'audio et le stocker, ou le jouer dans votre téléphone. Il existe plusieurs façons de le faire, mais la manière la plus courante est la classe MediaRecorder.

Android propose une classe MediaRecorder pour enregistrer de l'audio ou de la vidéo. Pour utiliser la classe MediaRecorder, vous allez d'abord créer une instance de la classe MediaRecorder. Sa syntaxe est donnée ci-dessous.

MediaRecorder myAudioRecorder = new MediaRecorder(); 

Maintenant, vous définissez le format de la source, de la sortie et de l'encodage ainsi que le fichier de sortie. Leur syntaxe est donnée ci-dessous.

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

Après avoir spécifié la source audio et le format et son fichier de sortie, on peut alors appeler les deux méthodes de base préparer et commencer à commencer à enregistrer l'audio.

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

Dans votre code juste faire suivant les modifications: -

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(); 
     } 
     }); 

il aide et espoir de mettre des permissions aussi dans votre fichier manifeste Android.

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

Mais vous avez répondu à propos du fichier 3gp et non du fichier wav non? – motis10

1

La réponse est que je dois ajouter ces autorisations dans le AndroidMainifers.xml:

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