Debe elegir un tamaño de vista previa que coincida con el tamaño de su pantalla. Sugeriría cambiar la configuración de tamaño de vista previa para que coincida con su SurfaceView
en lugar de al revés. Si bien los datos de la vista previa están bien, no están distorsionados, se verán distorsionados cuando se los arroje a una superficie con una relación de aspecto diferente.
Si tiene una vista de pantalla completa, entonces debe encontrar que la cámara tiene un tamaño de vista previa que coincida con ese tamaño, al menos habrá uno con la misma relación de aspecto. Por ejemplo, si su pantalla es de 640x480, entonces un tamaño de vista previa de 320x240 no aparecerá estirado en una pantalla completa SurfaceView
.
Para establecer el tamaño de vista previa que estoy usando siguiente código pero todavía superficie se ve estirada: privada Camera.Size getBestPreviewSize (int ancho, int altura, \t \t \t parámetros Camera.Parameters) { \t \t Camera.Size result = null; \t \t para (tamaño Camera.Size: parameters.getSupportedPreviewSizes()) { \t \t \t si (Tamano.Width <= ancho && size.height <= altura) { \t \t \t \t si (resultado == null) { \t \t \t \t \t resultado = tamaño; \t \t \t \t} else { \t \t \t \t \t int resultArea = result.width * result.height; \t \t \t \t \t int newArea = size.width * size.altura; \t \t \t \t \t si (newArea> resultArea) { \t \t \t \t \t \t resultado = tamaño; \t \t \t \t \t} \t \t \t \t} \t \t \t} \t \t} \t \t retorno (resultado); \t} – Manjeet
¿Por qué lo haces de esta manera? solo busca una coincidencia exacta simple primero. Parece que estás copiando código muy antiguo de Barcode Scanner. –