2011-11-12 22 views

Respuesta

6

Es posible que el nivel de API 21. De la documentación (https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#SENSOR_INFO_PHYSICAL_SIZE):

pública SENSOR_INFO_PHYSICAL_SIZE clave static final

Las dimensiones físicas de la matriz de píxeles completos. [...]

Unidades: Milímetros

utilizo este tipo de código. Ten cuidado, puede haber más de una sola cámara:

import android.hardware.camera2.CameraAccessException; 
import android.hardware.camera2.CameraCharacteristics; 
import android.hardware.camera2.CameraManager; 

private SizeF getCameraResolution(int camNum) 
{ 
    SizeF size = new SizeF(0,0); 
    CameraManager manager = (CameraManager) getSystemService(Context.CAMERA_SERVICE); 
    try { 
     String[] cameraIds = manager.getCameraIdList(); 
     if (cameraIds.length > camNum) { 
      CameraCharacteristics character = manager.getCameraCharacteristics(cameraIds[camNum]); 
      size = character.get(CameraCharacteristics.SENSOR_INFO_PHYSICAL_SIZE); 
     } 
    } 
    catch (CameraAccessException e) 
    { 
     Log.e("YourLogString", e.getMessage(), e); 
    } 
    return size; 
} 

Tenga en cuenta que Excepción CameraAccessException necesita ser capturado.

No olvide agregar <uses-sdk android:minSdkVersion="21" /> a su manifiesto.

+1

Solución perfecta, sin embargo, ¿cómo obtener el mismo valor en versiones anteriores a 21 API? – jucajl

+0

No encontré una solución para las versiones anteriores a 21 ... – DomTomCat

+0

¿Este método también se escribe? http://stackoverflow.com/a/41032402/4548520 – user25

0

Es fácil obtener el ancho y la altura del sensor de la cámara con Camera1 Api también. Obtenga ángulo de visión horizontal y vertical y distancia focal, y el resto es poca trigonometría.

Camera.Parameters params = mCamera.getParameters(); 
focalLength = params.getFocalLength(); 
horizontalViewAngle = params.getHorizontalViewAngle(); 
verticalViewAngle = params.getVerticalViewAngle(); 

A = ángulo de vista, l = longitud, h = altura del sensor focal/2 => tan (A/2) = h/l

para mi dispositivo con longitud focal 1,15 mm y horizontal ángulo de visión 54,8 grados:

anchura sensor = tan (54.8/2) * 2 * 1,15 = 1,19 mm

Este valor es igual con lo que consigo usando el método DomTomCat publicada.

Cuestiones relacionadas