Как я могу получить идентификатор текущей открытой камеры андроида от экземпляра камеры Android? Я не вижу его в параметрах, и getCameraInfo требует идентификатора в качестве параметра.
Получить идентификатор открытой камеры
Ответ 1
Невозможно получить идентификатор текущей открытой камеры Android. Я закончил тем, что сохранил идентификатор, когда открыл его.
Ответ 2
Это всего лишь несколько камер, поэтому вы просматриваете камеру, которую хотите.
Вот фрагмент, чтобы найти фронтальную камеру:
int cameraId = -1;
int numberOfCameras = Camera.getNumberOfCameras();
for (int i = 0; i < numberOfCameras; i++) {
CameraInfo info = new CameraInfo();
Camera.getCameraInfo(i, info);
if (info.facing == CameraInfo.CAMERA_FACING_FRONT) {
Log.d(DEBUG_TAG, "Camera found");
cameraId = i;
break;
}
}
Ответ 3
private int findFrontFacingCameraID() {
int cameraId = -1;
// Search for the front facing camera
int numberOfCameras = Camera.getNumberOfCameras();
for (int i = 0; i < numberOfCameras; i++) {
CameraInfo info = new CameraInfo();
Camera.getCameraInfo(i, info);
if (info.facing == CameraInfo.CAMERA_FACING_FRONT) {
Log.d(TAG, "Camera found");
cameraId = i;
break;
}
}
return cameraId;
}
Ответ 4
Для Kotlin с более новым API камеры:
fun getCameraId(context: Context, facing: Int): String {
val manager = context.getSystemService(CAMERA_SERVICE) as CameraManager
return manager.cameraIdList.first {
manager
.getCameraCharacteristics(it)
.get(CameraCharacteristics.LENS_FACING) == facing
}
}
Допустимые значения для facing
:
CameraCharacteristics.LENS_FACING_FRONT
CameraCharacteristics.LENS_FACING_BACK
CameraCharacteristics.LENS_FACING_EXTERNAL