Problèmes avec la classe MediaRecorder à enregistrer des données audio - préparer () donne une exception - Autorisation refusée
-
24-10-2019 - |
Question
Je suis nouveau dans le développement Android et j'ai la question suivante / problème.
Je suis jouer avec la classe MediaRecorder pour enregistrer tout audio du microphone. Je suis en suivant les étapes indiquées dans le site officiel: http: // développeur. android.com/reference/android/media/MediaRecorder.html
J'ai donc une méthode qui initialise et configurer l'objet MediaRecorder afin de commencer l'enregistrement. Ici vous avez le code:
//initializes audio recorder
MediaRecorder mrecorder = new MediaRecorder();
//configure the input sources
mrecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
//set the output format
mrecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
//set the audio encoding
mrecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
//specify the output file
mrecorder.setOutputFile("/sdcard/test.3gp");
//prepare for recording
try {
mrecorder.prepare();
} catch (IllegalStateException e) {
e.printStackTrace();
Log.d("Syso". e.toString());
} catch (IOException e) {
e.printStackTrace();
Log.d("Syso". e.toString());
}
Quand j'exécute ce code dans le simulateur, grâce à logcat, je peux voir que la méthode prepare () donne une exception lorsque l'on appelle:
java.io.FileNotFoundException: /sdcard/test.3gp (Permission denied)
Je ne sais pas pourquoi cela se passe. En raison du message de l'exception, j'ai donné des autorisations dans le manifeste d'accès au stockage en ajoutant la ligne suivante au xml:
<uses-permission android:name="android.permission.STORAGE" />
Mais cela ne résout rien et je reçois toujours la même exception tout le temps. Le SDCard est monté selon l'émulateur, donc je n'ai aucune idée.
La solution
Ajoutez WRITE_EXTERNAL_STORAGE la permission de AndroidManifest.xml.