Есть ли более надежный способ определить, является ли фронтальная камера зеркально на устройстве Android?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Есть ли более надежный способ определить, является ли фронтальная камера зеркально на устройстве Android?

Сообщение Anonymous »

Я работаю с фронтальной камерой в приложении Flutter, и я заметил, что на некоторых устройствах Android предварительный просмотр выглядит зеркальным, в то время как на других он выглядит правильно. Мне нужен надежный способ определить, является ли фронтальная камера зеркально. В cameracontroller.description:
i предположил, что устройства с сенсорориентацией 90 или 270 отражат фронтальную камеру, но этот метод ненадежен.
< /ol>
bool isFrontCameraMirrored() {
if (_cameraController?.description.lensDirection == CameraLensDirection.front) {
int sensorOrientation = _cameraController?.description.sensorOrientation ?? 0;

// Devices with sensor orientation 90 or 270 are likely to mirror the front camera.
return sensorOrientation == 90 || sensorOrientation == 270;
}
return false;
}

Проблема: это не работает, потому что у меня есть два разных устройства с сенсорориентацией 270 - один зернут, а другой нет.

Сделать снимки и проверку различий в пикселях:
Я попытался снять изображение и сравнить пиксели с левой и правой стороны, чтобы обнаружить зеркальное зеркальное оборудование. < /li>
< /ol>
bool checkHorizontalMirroring(img.Image image) {
int width = image.width;
int height = image.height;

var leftPixel = image.getPixel(10, height ~/ 2);
var rightPixel = image.getPixel(width - 10, height ~/ 2);

return leftPixel != rightPixel;
}
< /code>
Проблема: Этот метод всегда возвращает true, даже если изображение не зеркально. < /p>
Как я хочу использовать этот результат обнаружения:
Как только я обнаружил, является ли камера зеркально, я хочу использовать _ismirroredhorizontally в моем пользовательском интерфейсе, как это:
_isMirroredHorizontally
? Positioned.fill(
child: Transform.flip(
flipX: true,
child: CameraPreview(_cameraController!),
),
)
: Transform.scale(
scale: 1 / tempScale,
child: Center(
child: CameraPreview(_cameraController!),
),
),


Подробнее здесь: https://stackoverflow.com/questions/794 ... rroring-on
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»