Координаты TextureView не совпадают с координатами датчика. Пожалуйста, ознакомьтесь с примерами кодов здесь (Обратите внимание, что «CameraView» еще не является общедоступным в репозитории maven. Поэтому мы не рекомендуем вам использовать его сейчас). Мы понимаем, что это большая работа, поэтому команда CameraX также разрабатывает более удобную для разработчиков версию API Focus / Metering.
Основной поток, как показано ниже:
(1) получить x, y из события касания просмотра.
(2) Рассчитайте относительную ориентацию камеры, используя ориентацию устройства и camera2 CameraCharacteristics.SENSOR_ORIENTATION. Значение представляет собой угол по часовой стрелке, на который необходимо повернуть изображение датчика, чтобы оно находилось в вертикальном положении в текущей ориентации устройства.
(3) поменяйте местами x, y на 90/270 градусов и полностью измените x, y по ориентации. поменять местами для зеркалирования (передняя камера)
(4) преобразовать в координаты датчика, используя CameraCharacteristics.SENSOR_INFO_ACTIVE_ARRAY_SIZE), просмотреть ширину / высоту.
примечание: для идентификатора камеры, сейчас вы можете найти первый camera_id в mCameraManager.getCameraIdList () с правильной ориентацией объектива. Однако алгоритм может быть изменен.