E 'possibile utilizzare WindowManager
in Android.
https://stackoverflow.com/a/10268650/3047840
dovrei dire di sì è necessario SurfaceView
di scattare una foto, ma non deve essere legato a un certo layout di XML. È possibile aggiungerlo alla classe WindowManager
che funziona anche nel servizio. Quindi lo WindowManager
qui apre una "finestra" per fare qualsiasi effetto flottante in Android.
In particolare,
È possibile aggiungere un SurfaceView
nella WindowManager
e impostare i parametri come segue.
mPreview = new CameraPreview(this, mCamera, jpegCallback);
WindowManager wm = (WindowManager) this
.getSystemService(Context.WINDOW_SERVICE);
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
PixelFormat.TRANSPARENT);
params.height = 1;
params.width = 1;
wm.addView(mPreview, params);
Android ha questa funzionalità mentre iOS no. Questo è il motivo per cui puoi avere la chathead di Facebook attiva nella schermata principale in Android piuttosto che in iOS.
Show facebook like chat head from a broadcast receiver in android
E 'possibile farlo con * efficacemente * nessuna anteprima, come mostrato nella domanda che hai collegato. – Sam
@Gridtestmail allora come l'app scatta foto senza che l'utente ne sia a conoscenza? . Hanno avviato un servizio per scattare foto e utilizzare la superficie fittizia/superficie. https://play.google.com/store/apps/details?id=com.zenaapps.backgroundcamera. Come possiamo ottenere lo stesso? potresti fornire qualche esempio di codice, se ne hai? –