Моя проблема проста для объяснения - я пытаюсь создать объект AudioRecord, но он не может инициализироваться (т.е. после конструктора getState возвращает 0, что указывает на ошибку). Я запускаю это из Eclipse на MotoDroid 1 под управлением ОС 2.2.1. Мой AndroidManifest.xml, AFAIK, использует правильное разрешение RECORD_AUDIO (я не знаю, как это подтвердить):
<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>
Для создания 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 () возвращает 0 (т. Е. STATE_UNINITIALIZED)
Я не нашел полных примеров использования этого API, и я очень новичок в Android, поэтому решение вполне может быть чем-то простым. Что я могу сделать, чтобы выяснить, почему это не удается?
Несколько человек задавали похожие вопросы, но у них, должно быть, были другие проблемы, чем у меня, потому что исправления, которые они одобрили, не помогли мне. В первую очередь это . Но одобренное решение вызывает недоумение и все равно не работает для меня. Я также пробовал различные скорости передачи данных (8000, 16000, 11025, 44100), как моно, так и стерео, а также 8 и 16 бит. Ни одна комбинация не возвращается как успешно инициализированная.