Desidero utilizzare l'anteprima della fotocamera per il riconoscimento dell'immagine. Per i miei scopi , ho bisogno che la risoluzione di anteprima sia il più alta possibile (e, allo stesso tempo, visualizzi l'anteprima per l'utente).Come ottenere dati di anteprima della fotocamera Android 720p?
Ho creato una classe Anteprima, estendendo SurfaceView e impostato PreviewSize su 1280x720. Ho aggiunto un PreviewCallBack per ottenere il live Image:
camera = Camera.open();
parameters = camera.getParameters();
parameters.setPreviewSize(1280,720);
camera.setParameters(parameters);
byte[] b = new byte[camera.getParameters().getPreviewSize().width *
camera.getParameters().getPreviewSize().height *
ImageFormat.getBitsPerPixel(camera.getParameters().getPreviewFormat())/8];
camera.addCallbackBuffer(b);
camera.setPreviewCallbackWithBuffer(new CameraPreviewCallback());
try {
camera.setPreviewDisplay(this.getHolder());
camera.startPreview()
}
mio array di byte b è 1.382.400 byte e la mia funzione CameraPreviewCallback.onPreviewFrame() riceve quei 1382400 Bytes - ma solo il primo 497.664 Byte contengono dati (corrispondenti a Risoluzione 768x432 (HTC Desire)).
Ho provato questo su diversi dispositivi, tutti con risoluzioni dello schermo di 800x480 (HTC Desire, LG Optimus 3D, Samsung Galaxy S2, scheda Samsung Galaxy , ...). L'unico dispositivo per cui funziona il mio codice è un HTC Desire HD.
Qualcuno sa come ricevere la risoluzione 720p completa come matrice Byte ? "Qualcosa" sembra ridurre la risoluzione di anteprima per adattarsi allo schermo dello smartphone.
saluti
Joern
Sei sicuro che il tuo telefono supporti 720p? Logcat dice qualcosa (come "non può impostare la risoluzione")? – Lennart
Sì, 720p è supportato su tutti i dispositivi come dimensione di anteprima. Logcat non dice nulla di speciale - sembra che "qualcosa" riduca silenziosamente la risoluzione di anteprima. –
getPreviewSize() restituisce la dimensione corretta? – Lennart