2009-08-09 12 views
10

Sto costruendo un'app per fotocamera, in cui i video vengono continuamente catturati e salvati sulla scheda SD. I video sono brevi (pochi minuti) e la loro lunghezza è preimpostata con setMaxDuration().Android: Come inizializzare MediaRecorder senza una superficie valida per l'anteprima video?

L'intero processo funziona correttamente, mentre l'attività principale è in primo piano. Ma, quando vado a un'altra attività (ad esempio le impostazioni), la registrazione video funziona in background solo fino al raggiungimento della durata massima. Il file viene salvato, ma una nuova sequenza non può essere avviata perché prepare() fallisce, apparentemente perché setPreviewDisplay() non gli piace non avere una superficie adeguata a cui collegarsi.

Ho provato a utilizzare un manichino Surface, un dummy SurfaceHolder, lockCanvas() e vari altri trucchi, ma nulla funziona. C'è un modo per inizializzare MediaRecorder senza una superficie valida?

risposta

-1

Stai implementando i callback di Surface?

Perché è necessario inizializzare MediaRecorder senza una superficie valida?

Si suppone che si stia registrando anche quando si lascia l'attività principale? o la registrazione si interrompe prima che venga generata l'altra attività?

+0

Sì, ho implementato i callback di Surface. Tutto funziona bene quando c'è una superficie di anteprima valida. Ma, voglio registrare anche quando lascio l'attività principale. L'app dovrebbe essere in grado di avviare la registrazione del video, indipendentemente dal fatto che la superficie di anteprima sia visibile o meno. Ma, tutto ciò che ho provato suggerisce che questo non è ancora possibile con Android. Qualcuno può dimostrarmi sbagliato? – Robert

0

Penso che l'app IP Webcam possa farlo, anche se non so come. Forse funziona solo su> = 2.3. Non sono sicuro di quale versione l'ho visto in esecuzione. Ho fatto una domanda per scoprire come funziona.

Problemi correlati