2011-11-12 9 views

答えて

6

パブリック静的最終鍵SENSOR_INFO_PHYSICAL_SIZE

フルピクセルアレイの物理的寸法。 [...]

単位:ミリメートル

私はこの種のコードを使用します。キャッチする必要CameraAccessExceptionその例外

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

注:ひとつのカメラよりもあるかもしれません、注意してください。

マニフェストに<uses-sdk android:minSdkVersion="21" />を追加することを忘れないでください。

+1

しかし、21 APIより前のバージョンでは完全な解決策はどのように同じ値を得るのですか? – jucajl

+0

私は21の前のバージョンの解決策を見つけませんでした... – DomTomCat

+0

このメソッドも書いてありますか? http://stackoverflow.com/a/41032402/4548520 – user25

0

Camera1 Apiでもカメラのセンサーの幅と高さを取得するのは簡単です。ビューの水平と垂直の角度と焦点距離を取得し、残りは小さな三角法です。ビュー、Lの

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

A =角度=焦点距離、H =センサ高さ/ 2 =>黄褐色(A/2)=焦点距離1.15ミリメートル、横で自分のデバイスのためにH/L

画角54.8度:

センサ幅=黄褐色(54.8/2)* 2 * 1.15 = 1.19ミリメートル

この値iがDomTomCat投稿方法を使用し得るものと同じです。

関連する問題