Кто-нибудь может знать, как получить размер сенсора камеры в устройстве Android?
Спасибо
Кто-нибудь может знать, как получить размер сенсора камеры в устройстве Android?
Спасибо
Это возможно, начиная с уровня API 21. Из документации (https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#SENSOR_INFO_PHYSICAL_SIZE):
общедоступный статический окончательный ключ SENSOR_INFO_PHYSICAL_SIZE
Физические размеры полного массива пикселей. [...]
Единицы: миллиметры
Я использую такой код. Осторожно, может быть больше одной камеры:
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;
}
Обратите внимание, что исключение CameraAccessException
должно быть перехвачено.
Не забудьте добавить <uses-sdk android:minSdkVersion="21" />
в свой манифест.
Также легко получить ширину и высоту сенсора камеры с помощью Camera1 Api. Получите горизонтальный и вертикальный угол обзора и фокусное расстояние, а остальное — небольшая тригонометрия.
Camera.Parameters params = mCamera.getParameters();
focalLength = params.getFocalLength();
horizontalViewAngle = params.getHorizontalViewAngle();
verticalViewAngle = params.getVerticalViewAngle();
A = угол обзора, l = фокусное расстояние, h = высота сенсора/2 => tan(A/2) = h/l
Для моего аппарата с фокусным расстоянием 1,15 мм и углом обзора по горизонтали 54,8 градуса:
Ширина сенсора = tan(54,8/2)*2*1,15 = 1,19 мм
Это значение совпадает с тем, что я получаю, используя опубликованный метод DomTomCat.