2013-04-22 14 views
6

Czy mogę uruchomić dwie instancje klasy Android MediaRecorder w tym samym czasie? Na przykładAndroid: Dwa wystąpienia nagrywarki Media w tym samym czasie

public MediaRecorder mrec1 ; 
public MediaRecorder mrec2 ; 


mrec1.setCamera(mCamera); 
mrec1.setPreviewDisplay(surfaceHolder.getSurface()); 
mrec1.setVideoSource(MediaRecorder.VideoSource.CAMERA) 
. 
. 
. 
. 
mrec2.setAudioSource(MediaRecorder.AudioSource.MIC); 
mrec2.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
mrec2.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
. 
. 
. 
. 
mrec1.prepare(); 
mrec2.prepare(); 
mrec1.start(); 
mrec2.start(); 

otrzymuję ten błąd, gdy drugi start() jest wywoływana po prostu chcę wiedzieć, czy to dlatego, że istnieje już proces zwany początek lub jest jakiś inny problem. Instancja drugiego nagrywarki multimedialnej jest inicjowana i używana w osobnym wątku.

04-22 11:08:45.869: E/MediaRecorder(7742): start failed: -2147483648 
04-22 11:08:45.869: W/dalvikvm(7742): threadid=9: thread exiting with uncaught exception (group=0x40018578) 
04-22 11:08:45.869: E/AndroidRuntime(7742): FATAL EXCEPTION: Thread-10 
04-22 11:08:45.869: E/AndroidRuntime(7742): java.lang.RuntimeException: start failed. 

Odpowiedz

0

według documentation:

Oprócz niepotrzebnych środków (takich jak pamięć i wystąpienia kodeków) przetrzymywany, niewydolność natychmiast wywołać ten sposób, gdy obiekt MediaRecorder nie jest już potrzebne może również prowadzić do ciągłego zużycia baterii dla urządzeń mobilnych, i niepowodzeń nagrywania dla innych aplikacji, jeśli wiele instancji tego samego kodeka nie jest obsługiwane na urządzeniu. Nawet jeśli obsługiwanych jest wiele instancji tego samego kodeka , można się spodziewać pogorszenia wydajności, gdy niepotrzebne wielokrotne wystąpienia są używane w tym samym czasie.

Moje nieudane próby również nie przyniosły skutku.

Powiązane problemy