es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

ERROR: onRequestPermissionsResult: prepare() fallójava.io.FileNotFoundException: /data/audio.3gp: apertura fallida: EACCES (Permiso denegado)

Estoy desarrollando una aplicación de grabadora de audio utilizando Media Recorder para Android (java). Aquí, tengo que establecer la ruta del archivo de audio utilizando SetOutputFile(). Intenté algunos códigos para establecer la ruta de salida del archivo pero ninguno funcionó, y obtuve el error mencionado anteriormente en logcat.

Aquí está el código que utilicé para establecer la ubicación del archivo de salida:

String path;
path = Environment.getDataDirectory().getAbsolutePath();
path+="/audio.3gp";

Aquí está mi código en el onclick donde utilicé la mayoría de los métodos de MediaRecorder:

public void onClick(View view) {
    if(getPackageManager().hasSystemFeature(PackageManager.FEATURE_MICROPHONE)) {
        mediarec.setAudioSource(MediaRecorder.AudioSource.MIC);
    }else{
        Toast.makeText(getApplicationContext(),"No Mic present",Toast.LENGTH_SHORT).show();
    }
    mediarec.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    mediarec.setOutputFile(path);
    mediarec.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    try {
        mediarec.prepare();
    } catch (IOException e) {
        Log.e(TAG, "onRequestPermissionsResult: prepare() failed" + e);
    }
    mediarec.start();
}
};
start.setOnClickListener(myonclick);

Aquí están los permisos que solicité en el manifiesto de Android (y también solicité el permiso en tiempo de ejecución en MainActivity):

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

Aquí está el error que se muestra en el logcat:

E/Main Activity: onRequestPermissionsResult: prepare() failedjava.io.FileNotFoundException: /data/audio.3gp: open failed: EACCES (Permission denied)
E/MediaRecorder: start called in an invalid state: 4
E/AndroidRuntime: FATAL EXCEPTION: main

¿Alguien puede guiarme sobre cómo resolver este error?

Gracias de antemano.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error “java.io.FileNotFoundException: /data/audio.3gp: open failed: EACCES (Permiso denegado)” sugiere que la aplicación no tiene los permisos necesarios para acceder al sistema de archivos.

    Para solucionar este error, puedes intentar cambiar la ruta a un directorio al cual tu aplicación tenga acceso. Por ejemplo, puedes utilizar el método Environment.getExternalStorageDirectory() para obtener el directorio de almacenamiento externo, el cual está disponible para tu aplicación con los permisos adecuados. Luego, puedes añadir la ruta deseada a este directorio:

    String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/audio.3gp";
    

    Asegúrate de solicitar los permisos necesarios en tu archivo AndroidManifest.xml y también solicitar permisos en tiempo de ejecución al usuario. En este caso, se requieren los permisos RECORD_AUDIO y WRITE_EXTERNAL_STORAGE.

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

Comments are closed.