2011-11-12 25 views

Trả lời

6

Có thể như cấp API 21. Từ các tài liệu (https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#SENSOR_INFO_PHYSICAL_SIZE):

public static thức SENSOR_INFO_PHYSICAL_SIZE chính

Các kích thước vật lý của mảng đầy đủ pixel. [...]

lô: Millimet

tôi sử dụng loại mã này. Cẩn thận, có thể có nhiều hơn một camera:

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

Lưu ý rằng ngoại lệ CameraAccessException cần phải bị bắt.

Đừng quên thêm <uses-sdk android:minSdkVersion="21" /> vào tệp kê khai của bạn.

+1

Giải pháp hoàn hảo, cách nhận được cùng một giá trị trong các phiên bản trước 21 API? – jucajl

+0

Tôi không tìm thấy giải pháp cho các phiên bản trước 21 ... – DomTomCat

+0

là phương pháp này cũng được viết không? http://stackoverflow.com/a/41032402/4548520 – user25

0

Thật dễ dàng để có được chiều rộng và chiều cao của cảm biến của máy ảnh với Camera1 Api quá. Nhận góc nhìn ngang và thẳng đứng và tiêu cự và phần còn lại là ít lượng giác.

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

A = Góc nhìn, l = chiều dài tiêu cự, h = chiều cao cảm biến/2 => tan (A/2) = h/l

Đối với điện thoại của tôi với tiêu cự 1,15 mm và chiều ngang góc nhìn 54,8 độ:

Sensor width = tan (54,8/2) * 2 * 1,15 = 1.19mm

giá trị này là tương tự với những gì tôi được sử dụng phương pháp DomTomCat đăng. Tuy nhiên,

Các vấn đề liên quan