2012-04-04 7 views
1

Ich habe ein Problem mit Media Recorder in Android. Ich nehme ein Audio auf, das gut mit LG P500 funktioniert, aber der gleiche Code funktioniert nicht auf Samsung GT - S5360. Ich bekomme einen Fehler, da der Start fehlgeschlagen ist -22.Android Media Recorder starten fehlgeschlagene Ausnahme

Dies ist der Code ich verwende:

final MediaRecorder recorder = new MediaRecorder(); 
recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL‌​); 
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GP‌​P); 
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
recorder.setOutputFile(path); 
try { 
    recorder.prepare(); 
    recorder.start(); 
} catch (Exception e) { Log.d(TAG, "Exception : " + e); } 

Wenn bekam als null Fehlersuche verursachen in logcat.

Bitte schlagen Sie mir eine Lösung vor.

+0

jeder Code oder logcat wird geschätzt. So können wir keine Lösung anbieten. –

+0

Dies ist der Code, den ich verwende: letzte MediaRecorder Recorder = neue MediaRecorder(); recorder.setAudioSource (MediaRecorder.AudioSource.VOICE_CALL); recorder.setOutputFormat (MediaRecorder.OutputFormat.THREE_GPP); recorder.setAudioEncoder (MediaRecorder.AudioEncoder.AMR_NB); recorder.setOutputFile (Pfad); versuchen { \t recorder.prepare(); \t recorder.start(); } catch (Exception e) { \t Log.d (TAG, "Exception:" + e) ​​ } –

+2

Schließlich fand ich die Lösung nach einer langen Suche, habe ich Erlaubnis und jetzt funktioniert mein Code gut. –

Antwort

-2

Basierend auf dem Kommentar des eigentlichen Posters ... schlug er seine Antwort im Kommentar vor. Setzen dieses in eine tatsächliche Antwort der Hoffnung, dass es anderen hilft:

Der OP hinzugefügt, um die folgende Berechtigung und seinen Code funktionierte gut für ihn:

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

+0

Dies ist entweder veraltet oder nicht vorhanden. – wieczorek1990

1

Die von der op vorgeschlagene Erlaubnis nicht für Arbeit ich, wahrscheinlich, weil es nicht existiert :)

Wenn Sie diesen Fehler bekommen, überprüfen Sie die Art, wie Sie den Medienrekorder einrichten. In meinem Fall ist es nur bei einigen Geräten auch gescheitert. Ich war dies für alle Geräte tun Os Version läuft> API 10:

mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_WB);  
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB); 

Es stellte sich heraus, dass die Verwerfungen Gerät JB lief aber nicht Breitband hat unterstützen, so dass es zu roh/Schmal Wechsel gearbeitet:

mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.RAW_AMR);  
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
0

Ich hatte das gleiche Problem, und ich habe versucht, ein Diktiergerät aus dem Play Store zu überprüfen. Es erlaubte mir nicht VOICE_CALL aufzunehmen. Daraus habe ich erkannt, dass einige Gerätehersteller dies nicht unterstützen. Nehmen Sie also mit dem MIC auf, wenn das Gerät VOICE_CALL nicht unterstützt.