może ktoś wie, jak uzyskać rozmiar czujnika aparatu w urządzeniu z systemem Android?Jak uzyskać rozmiar sensora kamery w urządzeniu z Androidem?
Dzięki
może ktoś wie, jak uzyskać rozmiar czujnika aparatu w urządzeniu z systemem Android?Jak uzyskać rozmiar sensora kamery w urządzeniu z Androidem?
Dzięki
Jest to możliwe, gdyż z poziomu API 21. Z dokumentacji (https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#SENSOR_INFO_PHYSICAL_SIZE):
public static końcowego Key SENSOR_INFO_PHYSICAL_SIZE
Fizyczne wymiary pełnej tablicy pikseli. [...]
Jednostki: Milimetry
Używam tego rodzaju kodu. Strzeż się, nie może być więcej niż tylko jednej kamery:
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;
}
Zauważ, że wyjątek CameraAccessException
musi zostać złapany.
Nie zapomnij dodać <uses-sdk android:minSdkVersion="21" />
do swojego manifestu.
Łatwo jest uzyskać szerokość i wysokość czujnika aparatu również za pomocą Ap1 Api. Uzyskaj poziomy i pionowy kąt widzenia i ogniskową, a reszta to mała trygonometria.
Camera.Parameters params = mCamera.getParameters();
focalLength = params.getFocalLength();
horizontalViewAngle = params.getHorizontalViewAngle();
verticalViewAngle = params.getVerticalViewAngle();
A = kąt widzenia, L = długość ogniskowej, h = wysokość czujnika/2 => tg (A/2) = h/l
dla urządzenia z ogniskowej 1,15 mm poziomy kąt widzenia 54.8 stopni:
szerokość Sensor = tg (54,8/2) * 2 * 1,15 = 1.19mm
Ta wartość jest taka sama z tym, co się stosując metodę DomTomCat wysłana.
Doskonałe rozwiązanie, jednak jak uzyskać tę samą wartość w wersjach przed 21 API? – jucajl
Nie znalazłem rozwiązania dla wersji wcześniejszych niż 21 ... – DomTomCat
czy ta metoda jest również zapisana? http://stackoverflow.com/a/41032402/4548520 – user25