Mi problema es simple de explicar: estoy intentando crear un objeto AudioRecord pero no se inicializa (es decir, después del constructor, getState devuelve 0, lo que indica una falla). Estoy ejecutando esto desde Eclipse en un MotoDroid 1 con SO 2.2.1. Mi AndroidManifest.xml es, que yo sepa, el uso de los permisos adecuados, RECORD_AUDIO (no sé cómo confirmar esto):La inicialización de Android AudioRecord falla cada vez
<application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true">
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<activity android:name=".SphinxMic"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
que hacer lo siguiente para crear el AudioRecord:
bufferSize = AudioRecord.getMinBufferSize(8000, CHANNEL_IN_MONO, ENCODING_PCM_8BIT);
audioRecorder = new AudioRecord(AudioSource.MIC, 8000, CHANNEL_IN_MONO, ENCODING_PCM_8BIT, 50*bufferSize);
if (audioRecorder.getState() != AudioRecord.STATE_INITIALIZED)
throw new Exception("AudioRecord init failed");
Audiorecorder .getState() devuelve 0 (es decir, STATE_UNINITIALIZED)
No he encontrado ningún ejemplo completo del uso de esta API y soy un principiante de Android por lo que la solución puede ser algo simple. ¿Qué puedo hacer para descubrir por qué falla?
Algunas personas han hecho preguntas similares, pero deben haber tenido problemas diferentes a los míos porque las correcciones que aprobaron no me han ayudado. Más notablemente this. Pero la solución aprobada es desconcertante y no funcionó para mí de todos modos. También he probado una variedad de velocidades de bits (8000, 16000, 11025, 44100), tanto mono como estéreo y 8 y 16 bits. Ninguna combinación regresa tan exitosamente inicializada.
¿Qué significa logcat? también intente mover usos; permiso fuera de aplicación. afaik debe sentarse en manifiesto. – techiServices
Por algún motivo, LogCat dejó de mostrar la mayoría de la información de registro después de algunas ejecuciones, pero ese es otro problema. Marcaría su comentario de permisos de uso como la respuesta ... si fuera uno (¡porque funcionó!) – Dave