Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Nexus 4 aspecto de vista previa de la cámara ¿La relación siempre requiere una vista de superficie 16×9? Por qué

Dispositivo Nexus 4 Android versión: 4.2.2

Esperando que alguien más haya encontrado esto y pueda explicar cómo resolverlo ….

  • Xamarin Android Player / Visual Studio: Estancado en "Emulador de inicio"
  • SDK de Android no reconoce el dispositivo debugable
  • Cómo establecer la gravedad (o márgenes) de ImageView con código?
  • No se puede establecer la actividad de los padres para nuevas actividades en Android Studio. Error: padre jerárquico ya debe existir
  • Generación dinámica de bytecode Dalvik en una aplicación en ejecución de Dalvik / Android
  • Android Vibrar en el tacto?
  • Nexus 4 admite los siguientes tamaños de vista previa:

    W:1280 H:720 Ratio: 1.777777 W:800 H:480 Ratio: 1.6666666 W:768 H:432 Ratio: 1.7777778 W:720 H:480 Ratio: 1.5 W:640 H:480 Ratio: 1.3333334 W:576 H:432 Ratio: 1.3333334 W:480 H:320 Ratio: 1.5 W:384 H:288 Ratio: 1.3333334 W:352 H:288 Ratio: 1.2222222 W:320 H:240 Ratio: 1.3333334 W:240 H:160 Ratio: 1.5 W:176 H:144 Ratio: 1.2222222 

    MyCamera.setPreviewSize () los pone, y cuando llamo a myCamera.getPreviewSize () consigo el correcto que fijé, PERO …. Si fijo mi opinión de la superficie al mismo tamaño que mi previsualización de la cámara entonces consigo un estirado imagen. p.ej

     setPreviewSize(640,480) getPreviewSize -> I get 640,480 Surface view (640,480) -> Stretched image 

    Solamente si fijo mi opinión de la superficie a 16×9 (1.77777) consigo una imagen perfecta.

     Surface view (1280,720) -> Perfect image 

    Este es el único dispositivo con el que tengo este problema. Por favor, alguien puede aconsejar si hay una configuración de la cámara me falta para el modo de pantalla completa o algo que está deteniendo esto de trabajar.

    En mi larga búsqueda encontré 1 otro post que también se refiere a este problema, pero no una respuesta, sólo un poco más de evidencia de mi problema PictureCallback no se llama a menos que use supportsizes [0]

    Gracias

  • OnKeyListener no funciona
  • ¿Cuál es el huso horario seguido por Google Developer Console?
  • ¿Cómo pedir al usuario que active GPS_PROVIDER y / o NETWORK_PROVIDER?
  • Android: ¿Cómo combinar Spannable.setSpan con String.format?
  • Error al cambiar la configuración regional de db '/data/data/my.easymedi.controller/databases/EasyMediInfo.db' a 'en_US'
  • ¿Cómo puedo recortar un mapa de bits para ImageView?
  • 3 Solutions collect form web for “Nexus 4 aspecto de vista previa de la cámara ¿La relación siempre requiere una vista de superficie 16×9? Por qué”

    En el Nexus 4, hay un problema lamentable en el que la relación de aspecto de vista previa y la relación de aspecto de imagen fija están unidas, incluso si nunca tomas una foto. Si no coinciden, uno de los dos se distorsiona (normalmente una vista previa, ya que es la resolución más baja).

    Si desea utilizar una vista previa de 4: 3, configure el tamaño de imagen fija para que sea 4: 3, antes de comenzar la vista previa. Por ejemplo, una vista previa de 640×480 con un tamaño de imagen de 8MP (3264 x 2448) en N4 no debería provocar un estiramiento de la vista previa.

    Use Camera.Parameters.setPictureSize para seleccionar el tamaño de la imagen; La lista de tamaños disponibles se puede leer de Camera.Parameters.getSupportedPictureSizes .

    Este método calcula el mejor (para mí) tamaño de pantalla para cada dispositivo. Pero, tengo el mismo problema como usted cuando probé este código en el Nexus 4. Así que, mi solución es tener un caso especial al final de este método que obtiene el ancho del nexo 4 y calcula la mejor altura para esto dispositivo.

    El último caso podría ser utilizado en todos los dispositivos. Puede eliminar la primera parte del método.

     private void setAspectResolutionCamera(Parameters camParams, int screen_width, int screen_height) { boolean chosen_one_resolution = false; //Init screen sizes width_video = ConstantsCamera.VIDEO_ASPECT_WIDTH; height_video = ConstantsCamera.VIDEO_ASPECT_HEIGHT; float aspect_ratio = 1f; int aspect_width = 6000, aspect_height = 6000; List<Size> supported_sizes_list = camParams.getSupportedPreviewSizes(); for (int i = 0; i < supported_sizes_list.size(); i++) { Size size = supported_sizes_list.get(i); float aspect = (float) size.height / size.width; if (ConstantsCamera.VIDEO_ASPECT_RATIO - aspect <= aspect_ratio && (aspect - ConstantsCamera.VIDEO_ASPECT_RATIO >= 0)) { if (screen_width - size.height <= aspect_width && size.height - screen_width >= 0) { if (screen_height - size.width < aspect_height) { height_video = size.width; width_video = size.height; aspect_ratio = ConstantsCamera.VIDEO_ASPECT_RATIO - (float) size.height / size.width; aspect_width = screen_width - size.height; aspect_height = screen_height - size.width; chosen_one_resolution = true; } } } } //Special case if (width_video != screen_width && !chosen_one_resolution) { height_video = screen_width * height_video / width_video; width_video = screen_width; } } 

    Pruebe a configurar el tamaño de su vista de superficie en función de la relación de los parámetros de la cámara que está utilizando.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.