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?
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