2011-11-12 24 views

cevap

6

O belgelerine API düzeyinde 21. (https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#SENSOR_INFO_PHYSICAL_SIZE) itibariyle mümkündür:

public static final Anahtar SENSOR_INFO_PHYSICAL_SIZE

tam piksel dizinin fiziksel boyutları. [...]

Birimleri:

Milimetre

kod bu tür kullanır. Sadece bir kamera daha olabilir, dikkat:

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; 
} 

Not yakalanmış gereken CameraAccessException o istisna.

Bildirime <uses-sdk android:minSdkVersion="21" /> eklemeyi unutmayın.

+1

Mükemmel bir çözüm, ancak, 21 API'dan önceki sürümlerde aynı değeri nasıl edinebilirim? – jucajl

+0

21 ... – DomTomCat

+0

'dan önceki versiyonlar için bir çözüm bulamadım, bu yöntem de yazıyor mu? http://stackoverflow.com/a/41032402/4548520 – user25

0

Fotoğraf makinesinin sensörünün genişliğini ve yüksekliğini Camera1 Api ile de kolayca alabilirsiniz. Yatay ve dikey görüş açıları ve odak uzaklığı elde edin, gerisi küçük trigonometri. görüntüsü, l

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

A = Açı = odak uzunluğu, h = sensör yükseklik/2 => tan (A/2) = odak uzaklığı 1.15 mm ve yatay ile olan cihaz için h/l

görünüşüdür 54.8 derecelik açısı:

Sensör genişliği = kahve renkli (54.8/2) * 2 * 1.15 = 1.19mm

Bu değer, i DomTomCat yayınlanan yöntemi kullanarak elde ne aynıdır.