Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


IllegalStateException cuando MediaCodec.configure Android

Intento crear codificador para "audio / 3gpp" y mi falla de la aplicación …

Yo uso este código

String mMime = "audio/3gpp"; MediaCodec mMediaCodec = MediaCodec.createEncoderByType(mMime); MediaFormat mMediaFormat = MediaFormat.createAudioFormat(mMime, RECORDER_SAMPLERATE, 1); mMediaCodec.configure(mMediaFormat, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE); mMediaCodec.start(); 

Excepción
Java.lang.IllegalStateException
Android.media.MediaCodec.native_configure (Método nativo)
En android.media.MediaCodec.configure (MediaCodec.java:256)
En com.agent.mobile.TestAppActivity.initMediaCodec (TestAppActivity.java:234)

  • Fragmento ya agregó IllegalStateException
  • Fragmento de Android y cambio de orientación que causan: IllegalStateException: No se puede realizar esta acción después de onSaveInstanceState
  • Fragmentos anidados - IllegalStateException "No se puede realizar esta acción después de onSaveInstanceState"
  • "Java.lang.IllegalStateException: No se puede llamar para entregar un resultado"
  • Android: java.lang.IllegalStateException: base de datos xxx.db (conn # 0) ya cerrado
  • La vista no se puede anclar al CoordinatorLayout principal
  • Android, ClassNotFoundException cuando se utiliza "proyecto proporcionado" o IllegalArgumentException: ya agregado, al usar "proyecto de compilación"
  • Obtener excepción "IllegalStateException: No se puede realizar esta acción después de onSaveInstanceState"
  • One Solution collect form web for “IllegalStateException cuando MediaCodec.configure Android”

    Hay algunos valores obligatorios que se deben establecer en el formato. Si miras los documentos para MediaFormat , dice que "todas las claves no marcadas como opcionales son obligatorias". Si no se establece una clave obligatoria, MediaCodec arroja un error porque se ha dejado en un estado ilegal.

    Añadir:

     mMediaFormat.setInteger(MediaFormat.KEY_BIT_RATE, <bit rate>); mMediaFormat.setInteger(MediaFormat.KEY_SAMPLE_RATE, <sample rate>); mMediaFormat.setInteger(MediaFormat.KEY_CHANNEL_COUNT, 1); 

    KEY_MIME debería haber sido creado para usted por createEncoderByType() .

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.