Domanda

Sto usando le basi AV per catturare le immagini continuamente dopo che Apple ha rilasciato iOS 4.0 seguendo i codici forniti da,http://developer.apple.com/iphone/library/qa/qa2010/qa1702.html

Tuttavia, quando chiamo [sessione startrunning];" Ci vogliono circa 1-2 secondi per iniziare l'anteprima della fotocamera. Quindi, questo è frustrante per l'utente finale in quanto deve aspettare un po 'di tempo.

Esiste un modo per mettere in pausa la sessione invece di fermarla poiché posso iniziare la sessione al lancio del programma e mantenerla in pausa fino a quando l'utente non va alla schermata della fotocamera e iniziare a eseguirlo lì? Grazie per qualsiasi aiuto.

È stato utile?

Soluzione

Non c'è modo di "mettere in pausa" la sessione, ma puoi iniziare la sessione di acquisizione in esecuzione in qualsiasi momento e lasciarla in esecuzione. Se stai catturando le immagini fisse, chiama catturalestillimageasynchronouslyfromconnection quando sei pronto. Se stai acquisendo video, puoi avere il tuo catturauTutput: didoutputsampleBuffer: da Conconnection: Metodo nel delegato basta buttare via i fotogrammi fino a quando non vuoi fare qualcosa con loro. Potresti anche essere in grado di avviare la sessione di acquisizione senza un dispositivo di output fino a quando non sei pronto (non l'hai provato).

Altri suggerimenti

Invece di mettere in pausa la sessione puoi piuttosto disabilitare la connessione di input.

per esempio

<your_video_preview_layer>.connection.enabled = NO;

in modo che non consumerà i dati dal dispositivo di input.

Spero che questo sia quello che stai cercando.

Questo è quello che ho fatto per impedire all'interfaccia utente di bloccare 1-2 secondi iniziali quando si chiama -startrunning.

1) Add UIActivityIndicator
2) Add observer to AVCaptureSession
3) call -startRunning in a background thread
4) Resume the UI in the notification callback
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top