Подтвердить что ты не робот

Получить идентификатор открытой камеры

Как я могу получить идентификатор текущей открытой камеры андроида от экземпляра камеры Android? Я не вижу его в параметрах, и getCameraInfo требует идентификатора в качестве параметра.

4b9b3361

Ответ 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