2013-03-22 13 views
16

Ho un'anteprima della fotocamera nella mia app Android. Come probabilmente saprai, è implementato da un surfaceview in Android.Visualizzazione sfocatura Android utilizzata nella fotocamera

Nella mia app fotografica, che consente agli utenti di scattare foto, voglio sfocare l'anteprima della fotocamera (la vista di superficie) se l'utente non ha ancora effettuato l'accesso, se l'utente è loggato, visualizzerò l'anteprima normale (senza sfocatura)

blur come somthing come enter image description here

ma sembra che ci sia alcun modo per farlo

cose Coppia vengono in mente, ma non sono sicuro come raggiungerlo

  1. utilizzare una sovrapposizione di sfocatura e posizionarla sopra la vista di superficie, ma come si crea tale sfocatura?
  2. un altro approccio è modificare l'attributo della finestra, ma non può farlo a SurfaceView,

    getWindow().addFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND); 
    

così possiamo creare una finestra sovrapposta la SurfaceView e impostare il flag in quel modo? Io non la penso così

qualcuno può dirmi come offuscare l'anteprima della fotocamera, che è una superficie vista

nota: sto cercando di offuscare una zona che è l'ooutput Anteprima di fotocamera, quindi è non mi piace che sto sfocando un'immagine statica, l'area sfocatura cambierà a seconda di dove vuoi tu telefono camera

+0

Non sono sicuro se questo è integrato, potrebbe essere necessario elaborare ogni frame: http://stackoverflow.com/questions/8620560/video-processing-in-android –

+0

Forse aggiungendo un'immagine sfocatura trasparente sopra la fotocamera surfaceView sarà una soluzione più facile per te? – Devrim

risposta

2

Il modo migliore per farlo è quello di scattare una schermata del controllo, applicare una sfocatura ad esso, e poi mostra l'immagine sopra la parte superiore del controllo originale. Ecco come funziona l'app meteo yahoo e il suo modo in cui Google suggerisce di fare cose come questa.

Lo script di rendering si blizza velocemente. Ho anche un po 'di codice, ma al momento non è al momento disponibile.

Queste potrebbero aiutare:

http://blog.neteril.org/blog/2013/08/12/blurring-images-on-android http://docs.xamarin.com/recipes/android/other_ux/drawing/blur_an_image_with_renderscript/

Ho anche letto che ci sono metodi integrati in Android che fanno questo, ma l'API non è pubblico, quindi non possiamo usarlo ... che fa schifo

+0

Anche se penso che funzionerebbe è un peccato che sia stato aggiunto solo al livello API 17, quando ne ho bisogno personalmente al livello API 16. – Pete

1

Sebbene la seconda opzione stia perdendo il supporto nelle versioni successive del sistema operativo Android, potrebbe essere una buona opzione. Vorrei pensare di portare una finestra DAVANTI al tuo surfaceview e usare la proprietà blur_behind della tua nuova finestra IN FRONT.

API Android documentazione " Questa costante è stata sconsigliata a livello di API 14. Sfocatura non è più supportato bandiera

Window:. Sfocatura tutto alle spalle questa finestra

Valore costante:. 4 (0x00000004) "

Devo ammettere, non sono sicuro al 100% che funzioni, ma è sicuramente da provare.

+0

Essere deprecato come hai detto è un po 'rischioso ed è un peccato non aver implementato alcuna alternativa dal livello API 14 :(. – Pete

-4

È necessario modificare i parametri della telecamera; in questo caso con Camera.Parameters.setPictureSize().

Il flusso di lavoro di base è:

Camera.Parameters cp = mCamera.getParameters(); // get the current params 
cp.set...(); // change something 
mCamera.setParameters(cp); // write the params back 

Assicurarsi che ogni risoluzione di impostare tramite questa funzione è supportata. È possibile ottenere un elenco delle risoluzioni supportate su un dispositivo tramite Camera.Parameters.getSupportedPictureSizes(). e controllare questa documentazione Camera.

+1

Hai letto davvero la domanda ?? – Pete

+0

Sì .... Ho letto esattamente e lui è accettato quella risposta. –

Problemi correlati