Sto provando a creare una vista di superficie per una fotocamera in modo da renderla sulla superficie ogni volta che si trova nella vista della fotocamera. Al momento tutto quello che posso vedere sulla mia vista della fotocamera è una schermata nera. Ho provato a cercare su Google e qui ma finora non ho trovato quello che sto cercando. Chiunque può suggerirmi qualche idea.Vista superficie fotocamera Android
risposta
Ho scritto una lezione questo può aiutarti
public class Preview_can_work extends Activity {
private SurfaceView surface_view;
private Camera mCamera;
SurfaceHolder.Callback sh_ob = null;
SurfaceHolder surface_holder = null;
SurfaceHolder.Callback sh_callback = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFormat(PixelFormat.TRANSLUCENT);
surface_view = new SurfaceView(getApplicationContext());
addContentView(surface_view, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
if (surface_holder == null) {
surface_holder = surface_view.getHolder();
}
sh_callback = my_callback();
surface_holder.addCallback(sh_callback);
}
SurfaceHolder.Callback my_callback() {
SurfaceHolder.Callback ob1 = new SurfaceHolder.Callback() {
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
mCamera.stopPreview();
mCamera.release();
mCamera = null;
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
mCamera = Camera.open();
try {
mCamera.setPreviewDisplay(holder);
} catch (IOException exception) {
mCamera.release();
mCamera = null;
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
mCamera.startPreview();
}
};
return ob1;
}
}
nella vostra copia file manifesto di questo codice per il permesso fotocamera
<uses-permission android:name="android.permission.CAMERA"/>
Spiegazione:
SurfaceView è un tipo di vista che contiene un SurfaceHolder. SurfaceHolder contiene la superficie su cui possiamo visualizzare i nostri media (in genere frame).
m La telecamera è un oggetto Camera che contiene l'istanza della telecamera.
Quando si desidera mantenere l'istanza Camera predefinita, è sufficiente chiamare Camera.open();
Camera mCamera = Camera.open();
Ora è stata aperta la telecamera o si dispone di un'istanza della telecamera predefinita. Ora è necessario acquisire i fotogrammi dalla fotocamera e visualizzarli su una superficie. Ma non è possibile visualizzarlo senza alcun
superficie. Qui surfaceView fornisce surfaceHolder e surfaceHolder fornisce una superficie per visualizzare i fotogrammi delle telecamere. Ora, quando verranno create le superfici, saranno richiamate tre funzioni di callback
chiamato.
1. public void surfaceCreated(SurfaceHolder holder)
2. public void surfaceChanged(SurfaceHolder holder, int format, int width, int height)
3. public void surfaceDestroyed(SurfaceHolder holder)
Nota: - Surface sarà distrutto quando l'applicazione andrà in pausa.
surfaceCreated: surfaceCreated è una funzione di callback che verrà chiamata quando verrà creata la superficie. In questo, puoi aprire la tua fotocamera e impostare altri attributi.
surfaceChanged: Questo sarà chiamato atleast una volta quando verrà creata la superficie. Dopodiché verrà chiamato ogni volta che la superficie cambierà (nella rotazione del dispositivo). Qui è possibile
avviare l'anteprima perché la superficie è già stata creata.
surfaceDestroyed: Questo sarà chiamato ogni volta che la superficie distruggerà.Ora, se non si dispone di una superficie, è possibile visualizzare i fotogrammi della telecamera, quindi ho rilasciato la fotocamera utilizzando
mCamera.release(). Questo è molto importante perché se la tua attività sarà in pausa e qualsiasi altra attività tenta di aprire la fotocamera, non sarà in grado di aprirla dato che hai già aperto la fotocamera
. La fotocamera è una risorsa condivisa quindi è possibile utilizzarla solo una volta. Quindi ricorda una cosa ogni volta che apri una videocamera e poi la rilasci sempre.
stopPreview: Quando si avvia l'anteprima, la fotocamera inizia a catturare i fotogrammi e visualizzarli su una superficie. Ora se la superficie è stata distrutta, è necessario interrompere l'acquisizione dei fotogrammi
dalla fotocamera, quindi è necessario chiamare mCamera.stopPreview.
Fai shure si è aggiunto il permesso:
<uses-permission android:name="android.permission.CAMERA"/>
anche queste proprietà della finestra:
getWindow().setFormat(PixelFormat.TRANSLUCENT);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,
WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
postale del codice, se questo non funziona, al fine di aiutare a
Grazie, ho già aggiunto il permesso come suggerito; e stavo pensando di usare 'surfaceChanged'? Al momento tutto quello che posso vedere sulla mia superficie perview è nero ..... non capisco perché. – Kitaro
- 1. Usa fotocamera Android senza superficie Visualizza
- 2. Superficie vista con fotocamera non funzionante su Android API 23 (Android 6+)
- 3. Visualizzazione superficie fotocamera Immagini Esteso
- 4. Fotocamera Android - l'app ha superato la superficie NULL
- 5. Come salvare l'immagine insieme alla vista di superficie in Android?
- 6. Visualizzazione sfocatura Android utilizzata nella fotocamera
- 7. in Android, l'anteprima della fotocamera in streaming su una vista
- 8. Anteprima fotocamera Android - Come "congelare" la fotocamera?
- 9. Ritagliare la fotocamera Android
- 10. Fotocamera Android setDisplayOrientation non funziona
- 11. Animazione e rotazione di un'immagine in una vista di superficie
- 12. Anteprima fotocamera Android Passa da una fotocamera all'altra
- 13. Android - Riduzione dell'abbagliamento sulla fotocamera (foto/video)
- 14. intenzione fotocamera Android
- 15. Errore fotocamera Android 5001
- 16. Fotocamera emulatore ICS Android
- 17. fotocamera Android Anteprima rotazione
- 18. Tutorial anteprima fotocamera Android
- 19. Filtro live fotocamera Android
- 20. Come aggiungere la vista come sfondo alla superficie?
- 21. come modificare la superficie personalizzata Larghezza e altezza della vista
- 22. Ridimensionamento della vista della superficie OpenGL per diversi DPI
- 23. Registrazione video Android della superficie OpenGL (GLSURFACEVIEW)
- 24. Attenzione Android: CONTROLLARE superficie infomation creazione = false
- 25. Disegno Android su superficie e tela
- 26. Android. Come riprodurre video su superficie (OpenGL)
- 27. Come implementare il doppio tocco per la vista di superficie in Android
- 28. Android come ridimensionare la larghezza e l'altezza in vista di superficie per il lettore multimediale
- 29. Fotocamera Android Cattura utilizzando FFmpeg
- 30. Android personalizzato qualità della fotocamera
Grazie Bharat, mi proverò a fare un tentativo! grazie ancora. Qualcuno conosce un buon articolo in cui posso leggere "La videocamera non funziona quando si esegue l'emulatore"? È vero ancora? – Kitaro
ya effettivamente durante la creazione di emulatore è necessario aggiungere la fotocamera in esso quindi penso che funzionerà. cercherò di farti sapere .. –
Ok, quindi non abbiamo bisogno di un dispositivo per utilizzare la fotocamera per vedere dal vivo? Per alcuni dell'articolo che ho letto diciamo che non è possibile eseguire la fotocamera in emulatore, ma non sono sicuro che sia stato risolto. Per favore mi faccia sapere. Grazie. – Kitaro