Mein Problem ist einfach zu erklären - Ich versuche ein AudioRecord-Objekt zu erstellen, aber es kann nicht initialisiert werden (dh nach dem Konstruktor gibt getState 0 zurück, was auf einen Fehler hinweist). Ich starte das von Eclipse auf einem MotoDroid 1 mit OS 2.2.1. Mein AndroidManifest.xml ist, AFAIK, die richtige Erlaubnis verwenden, RECORD_AUDIO (ich weiß nicht, wie dies zu bestätigen):Android AudioRecord-Initialisierung schlägt jedes Mal fehl
<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>
ich die im Anschluss an die AudioRecord zu erstellen:
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() gibt 0 (dh STATE_UNINITIALIZED) zurück
Ich habe keine vollständigen Beispiele für die Verwendung dieser API gefunden, und ich bin sehr ein Android-Anfänger, so dass die Lösung durchaus etwas Einfaches sein kann. Was kann ich tun, um herauszufinden, warum es scheitert?
Ein paar Leute haben ähnliche Fragen gestellt, aber sie müssen andere Probleme haben als ich, weil die Korrekturen, die sie genehmigen, mir nicht geholfen haben. Am bemerkenswertesten ist this. Aber die genehmigte Lösung ist verwirrend und funktionierte für mich sowieso nicht. Ich habe auch eine Vielzahl von Bitraten (8000, 16000, 11025, 44100), sowohl Mono und Stereo und 8 und 16 Bit versucht. Keine Kombination kommt als erfolgreich initialisiert zurück.
was sagt logcat? Versuchen Sie auch, Anwendungen zu verschieben, die nicht verwendet werden. afaik sollte es in manifest sitzen. – techiServices
Aus irgendeinem Grund hat LogCat nach einigen Runs die meisten Log-Informationen nicht mehr angezeigt - aber das ist ein ganz anderes Problem. Ich würde Ihren Gebrauch-Erlaubniskommentar als die Antwort kennzeichnen ... wenn es eins war (weil es funktionierte!) – Dave