Android MediaRecorder - Crash nach 2. Start

MaHi84

Mitglied
Nabend,

als Frischling habe ich direkt eine Frage an euch. Sicherlich kann mir hier jemand ganz schnell helfen. Für mich ist JAVA und insbesondere die Android-SDK völliges Neuland. Programmiererfahrungen bringe ich jedoch ein wenig mit (PHP und ein paar (10 Jahre zurückliegende) Grundkenntnisse zu Visual Basic) und mir war irgendwie danach etwas neues zu lernen. Ein wirkliches Ziel habe ich nicht vor Augen und daher experimentiere ich nur ein wenig herum, füge eine Funktion an die nächste und habe letztes Endes irgendwann ein Schweizer Taschenmesser für Android, welches überladen ist und keiner haben möchte. ;-)

Genug Geschwafel, zurück zu meinem eigentlichen Problem: Momentan spiele ich mit dem MediaRecorder ein wenig herum. Ohne mich bisher großartig mit den Einstellungen beschäftigt zu haben, lässt sich bereits eine Aufnahme starten und stoppen. Rufe ich jedoch ein zweites Mal die Start-Anweisung auf (Start => Stopp => Start), stürzt die App auf meinem Desire HD ab. Was mache ich falsch?

Hier der Code (habe nur das wesentliche herauskopiert, sonst wird’s zu lang):

Java:
    private static final String APP_TAG = "de.mh.justtesting";
    private MediaRecorder SoundRec = new MediaRecorder();
    private File SoundRec_Outfile = null;

    private void cmdSoundRec_Start() {
		try {
			// Output-Filename
			File SoundRec_storageDir = new File(Environment.getExternalStorageDirectory(), "DRC/");
			SoundRec_storageDir.mkdir();
			Log.d(APP_TAG, "Storage directory set to " + SoundRec_storageDir);
			SoundRec_Outfile = File.createTempFile("DRC", ".3gp", SoundRec_storageDir);
			Log.d(APP_TAG, "Storage file set to " + SoundRec_Outfile);
					
			// init recorder
			SoundRec.setAudioSource(MediaRecorder.AudioSource.MIC);
			SoundRec.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
			SoundRec.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
			SoundRec.setOutputFile(SoundRec_Outfile.getAbsolutePath());
		}
		catch (IOException e) {
			Log.w(APP_TAG, "File not accessible ", e);
		} catch (IllegalArgumentException e) {
			Log.w(APP_TAG, "Illegal argument ", e);
		} catch (IllegalStateException e) {
			Log.w(APP_TAG, "Illegal state, call reset/restore", e);
		}
		Log.d(APP_TAG, "start recording..");
		try {
			SoundRec.prepare();
			SoundRec.start();
		} catch (IllegalStateException e) {
			Log.w(APP_TAG, "Invalid recorder state .. reset/release should have been called");
		} catch (IOException e) {
			Log.w(APP_TAG, "Could not write to sd card");
		}
    }
    
    private void cmdSoundRec_Stop() {
		Log.d(APP_TAG, "stop recording...");
		SoundRec.stop();
		SoundRec.reset();
		SoundRec.release();
    }

Mit folgendem Fehler stürzt das ganze ab (ebenfalls gekürzt):

Code:
01-15 20:50:35.784: D/View(8861): onTouchEvent: viewFlags: 0x18004001
01-15 20:50:35.784: D/View(8861): onTouchEvent: isFocusable: true, isFocusableInTouchMode: false, isFocused: false; focusTaken: false
01-15 20:50:35.784: D/de.mh.justtesting(8861): Storage directory set to /mnt/sdcard/DRC
01-15 20:50:35.784: D/de.mh.justtesting(8861): Storage file set to /mnt/sdcard/DRC/DRC-400199155.3gp
01-15 20:50:35.784: V/MediaRecorderJNI(8861): setAudioSource(1)
01-15 20:50:35.784: V/MediaRecorderJNI(8861): getMediaRecorder E
01-15 20:50:35.894: I/DEBUG(1252): debuggerd: 2012-01-15 20:50:35
01-15 20:50:35.894: I/DEBUG(1252): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
01-15 20:50:35.894: I/DEBUG(1252): Build fingerprint: 'htc_wwe/htc_ace/ace:2.3.5/GRJ90/$:user/release-keys'
01-15 20:50:35.894: I/DEBUG(1252): pid: 8861, tid: 8861  >>> de.mh.justtesting <<<
01-15 20:50:35.894: I/DEBUG(1252): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000010
01-15 20:50:35.894: I/DEBUG(1252):  r0 00000000  r1 00000001  r2 00000000  r3 00000001
…
01-15 20:50:35.965: I/DEBUG(1252):     bef4e340  42154d94  
01-15 20:50:35.965: I/DEBUG(1252):     bef4e344  80018178  /system/lib/libdvm.so
01-15 20:50:36.165: I/ActivityManager(1357): Process de.mh.justtesting (pid 8861) has died.
01-15 20:50:36.165: I/WindowManager(1357): WIN DEATH: Window{407c8530 de.mh.justtesting/de.mh.justtesting.DRC_StartActivity paused=false}

EDIT: Der Fehler liegt am "SoundRec.release();", wo baue ich das alternativ am besten ein?
 
Zuletzt bearbeitet:

schlingel

Gesperrter Benutzer
Laut Doku sollst du das release() nur aufrufen wenn onPause or onStop der Activity aufgerufen wird. Ich weiß nicht wann deine Methode cmdSoundRec_Stop aufgerufen wird aber prüf einmal ob das den Fehler behebt.
 

MaHi84

Mitglied
Habe mir helfen können, indem ich MediaRecorder SoundRec = new MediaRecorder(); dem Startbefehl hinzugefügt habe und im gleichen Zuge die Variable sowohl im Kopf wie auch dem Ende-Befehl noch einmal genullt habe. Läuft nun wunderbar. ;-)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T MediaRecorder setAudioSource() --> "App angehalten" Android & Cross-Platform Mobile Apps 3
W App crash bei leere Zeile Android & Cross-Platform Mobile Apps 1
D Android Taschenrechner - crash Android & Cross-Platform Mobile Apps 3
P Android Android-App Crash - Unable to start activity ComponentInfo Android & Cross-Platform Mobile Apps 2
R Android App-Crash bei Serverzugriff Android & Cross-Platform Mobile Apps 9
C Android - OpenGL Crash Android & Cross-Platform Mobile Apps 2
AllBlack Auf der Suche nach einem App-Entwickler Android & Cross-Platform Mobile Apps 1
J Android zugrif auf Thread nach Handy drehen. Android & Cross-Platform Mobile Apps 10
AGW App schließt nach 2 Sekunden Android & Cross-Platform Mobile Apps 2
ruutaiokwu Android Daten von "Activity A" nach "Activity B" umleiten? Android & Cross-Platform Mobile Apps 13
A Android-Studio: 2. Layout nach kurzer Zeit aufzeigen Android & Cross-Platform Mobile Apps 2
B Profilpic wird nach anmeldung nicht angezeigt. Android & Cross-Platform Mobile Apps 2
J BLOB nach dem Download unbrauchbar Android & Cross-Platform Mobile Apps 0
B App schließt nach Start. Android & Cross-Platform Mobile Apps 12
J Android Nach Appsprachenänderung die Systemsprache ermitteln Android & Cross-Platform Mobile Apps 2
G App wird nach Installation auf Smartphone beendet Android & Cross-Platform Mobile Apps 1
B Android wie kann ich in einer xml nach bestimme item suchen (DOM) Android & Cross-Platform Mobile Apps 7
Fischkralle Android Nach Textdateien in Ordner suchen Android & Cross-Platform Mobile Apps 5
V Android Fehlermeldung beim Öffnen von Eclipse nach Installation der Android Erweiterung Android & Cross-Platform Mobile Apps 4
T Android Nach Buttonclick neu laden Android & Cross-Platform Mobile Apps 3
B Android Activity nach gedrückte Returntaste weiterlaufen lassen Android & Cross-Platform Mobile Apps 2
B Android ringProgressDialog nach Erfolg Button einfärben Android & Cross-Platform Mobile Apps 2
N PriceScannerApp: warum wird nach dem Scannen Display gleich schwarz? Android & Cross-Platform Mobile Apps 4
L Android Bildschirm bleibt dunkel nach neustarten der App nach betätigen des Home-Buttons Android & Cross-Platform Mobile Apps 3
N Android EditText.setError() funktioniert nicht nach Rotation Android & Cross-Platform Mobile Apps 1
B Android Button erstellen nach Vorlage Android & Cross-Platform Mobile Apps 4
L Android Button mit Pfeil nach rechts Android & Cross-Platform Mobile Apps 1
M Android App startet nach Tastensperre neu Android & Cross-Platform Mobile Apps 3
P Android Nach Animation Layout auf alten Platz Android & Cross-Platform Mobile Apps 3
G Werteübergabe nach unbestimmter Zeit Android & Cross-Platform Mobile Apps 28
A Fehlermeldung nach Neuinstallation von Eclipse/bestehenden Projekten... Android & Cross-Platform Mobile Apps 2
E Android App stürzt nach Modifizierung ab Android & Cross-Platform Mobile Apps 2
N Textview macht immer nach einem Beistrich einen Abstand Android & Cross-Platform Mobile Apps 6
K Apps durchsuchen nach verwendeter Methode Android & Cross-Platform Mobile Apps 4
S rms recordstore bleibt nach schießen der anwengung nicht erhalten Android & Cross-Platform Mobile Apps 4
M Text in txt-Datei schreiben und nach ABC sortieren? Android & Cross-Platform Mobile Apps 2
H FileConnection: Frage nach Dateisystem-Zugriff unterdrücken Android & Cross-Platform Mobile Apps 5
K suche nach der richtigen dokumentationh Android & Cross-Platform Mobile Apps 2
S ein String nach vorgegebenen Zeichen teilen Android & Cross-Platform Mobile Apps 3
L Ungültiges Java-Archiv (jar) nach Programmentwicklung Android & Cross-Platform Mobile Apps 4

Ähnliche Java Themen

Neue Themen


Oben