7 / 7 / 0
Регистрация: 14.03.2013
Сообщений: 231
|
|||||||||||
1 | |||||||||||
Некорректно определяются размеры TextureView в экране предпросмотра камеры20.07.2018, 11:30. Показов 1594. Ответов 14
Всем привет.
Прошу подскажите как можно решить следующую проблему: Имеется приложение камера, в которой при запуске некорректно определяются размеры TextureView (AutoFitTextureView ). Данный view элемент используется для отображения потока изображения на экране с камеры. Т.е. предпросмотр. Соответственно в связи с некорректным определением размеров, неверно рассчитывается параметер AspectRatio и как следствие искажается экран предпросмотра. ! Но все исправляется если выполнить отключение-включение экрана. скриншет №1 при первом включении. Видно как изображение растянуто по горизонтали. скриншет №2 после отключения / включения экрана. Видно что было восстановлена пропорция отношения сторон. Долго не мог разобраться, грешил на ошибку в коде, но пришел к следующиму выводу. Причина в некорректных параметрах события onMeasure из класса TextureView (AutoFitTextureView). Данное событие срабатывает для определения измененной ширины и высоты у элемента TextureView (AutoFitTextureView). Само устройство у меня имеет размеры экрана 1920 x 1080. Но в связи с тем что на экране у меня еще присутствует view элемент для отображения кнопки затвора, кнопки "о приложении" (на скриншете видно). То размер TextureView (AutoFitTextureView) в высоту у меня выходит 1440 пикселей. Эту величину я узнал при отладке, смотрел какие параметры передаются в onMeasure() после отключения-включения экрана. Соответственно в метод onMeasure() должно низначально передаватся параметры 1440 x 1080. Но почему то этого не происходит и размеры TextureView (AutoFitTextureView) передаются как 1920 x 1080. Если принудительно внутри метода onMeasure() жестко задать высоту как 1440 то при первом запуске все корректно. Не знаю, может ошибка в layout XML файле? Т.к. элемент AutoFitTextureView у меня привязан только к верхней границе родителя. Нижняя граница определяется по размерам нижнего view элемента с кнопками управления. класс TextureView (AutoFitTextureView): Кликните здесь для просмотра всего текста
activity_camera.xml: Кликните здесь для просмотра всего текста
Такое некорректное определение размеров возвращается снова при повороте экрана. И опять же помогает исправить отключение-включение экрана. Добавлено через 14 часов 33 минуты Добавлю, что складывается такое ощущение что приложение при первом запуске как бы не успевает изменить размеры AutoFitTextureView на 1440 x 1080 в layout файле. Т.к. если посмотреть layout файл видно что у меня указана и высота и ширина как wrap_content. И в design режиме у меня элемент AutoFitTextureView занимает все окно экрана - т.е. 1920 x 1080.
0
|
20.07.2018, 11:30 | |
Ответы с готовыми решениями:
14
Запись видео с камеры с выводом на textureview Некорректно определяются совпадения if Реальные размеры svg на экране Напишите приложение, которое в заголовке формы выводит ее размеры и координаты на экране |
129 / 126 / 22
Регистрация: 23.06.2009
Сообщений: 700
|
||||||
20.07.2018, 11:35 | 2 | |||||
p.s. но это так.. пальцем в небо
0
|
7 / 7 / 0
Регистрация: 14.03.2013
Сообщений: 231
|
|
20.07.2018, 11:45 [ТС] | 3 |
Добавлено через 8 минут
Спасибо за идею. Проверю как доберусь до студии. Просто этот баг мне ясно видется так, что система как будто не успевает подкорректировать размеры AutoFitTextureView (согласно разметки XML) и сперва выдает 1920 x 1080. А потом при отключении-включении экрана скорректирует AutoFitTextureView на 1440 x 1080, освобождая место для FrameLayout который приклеен четко ниже AutoFitTextureView. Добавлю что иногда, редко приложение запускалось с корректным отношение сторон, т.е. похоже AutoFitTextureView был размерами с 1440 x 1080. Т.е. ошибка плавающая. И непонятно отчего она зависела. На другом устройстве не проверял. Только на одном.
0
|
129 / 126 / 22
Регистрация: 23.06.2009
Сообщений: 700
|
|
20.07.2018, 12:03 | 4 |
пробуй убрать эту строку. Добавь то что я писал выше в текстуру. п.с. нашел я этот проект. Либо ты менял что-то в основном файле . Либо какой-то косячок где-то спрятал. Но у меня нормально отображается после смены двух строк. Добавлено через 16 минут Проверил размеры. Сделай как я сказал. Будет норм. в frame убери below , в texture добавь above
0
|
7 / 7 / 0
Регистрация: 14.03.2013
Сообщений: 231
|
||||||
20.07.2018, 14:56 [ТС] | 5 | |||||
Сделал как ты сказал.
Кликните здесь для просмотра всего текста
Но нарушилось отношение сторон. Сделал фотку под наклоном что бы было видно что отношение сторон нарушилось.
1
|
129 / 126 / 22
Регистрация: 23.06.2009
Сообщений: 700
|
|
20.07.2018, 15:02 | 6 |
0
|
7 / 7 / 0
Регистрация: 14.03.2013
Сообщений: 231
|
||||||
20.07.2018, 15:24 [ТС] | 7 | |||||
В посте выше написал.
Добавлено через 1 минуту Вообщем сейчас для теста качаю проект с гитхаба и установлю на устройство что бы проверить. Просто видишь что, этот проект у меня изначально шел с такой ошибкой. Эта ошибка проявлялась если повернуть несколько раз экран из горизонтального в вертикальный. Добавлено через 12 минут Вообщем как и в прошлый раз. Cкачал проект, ни-че-го в нем не менял. Запустил, и прямо сразу же - искажение. Повернул в горизонтальную ориентацию - дичайшие искажения. Причем опять же, ошибка проявляется случайно. Но нормальное отношение, то дичайшие искажения. Но ведь стоковая программа корректно отрабатывает! Для примера выдаю скрины: https://preview.ibb.co/b8ULZJ/... _13_06.png https://preview.ibb.co/iqym8d/... _13_21.png Добавлено через 2 минуты Это при то что в проекте существует совсем некорректная XML разметка для FrameLayout: Кликните здесь для просмотра всего текста
0
|
129 / 126 / 22
Регистрация: 23.06.2009
Сообщений: 700
|
||||||
20.07.2018, 16:01 | 8 | |||||
ну это понятно. Нада поковырятся. Там при повороте остаются теже размеры экраны и поэтому картинка ростянутая.
Добавлено через 26 минут пробуй это фигню Кликните здесь для просмотра всего текста
0
|
7 / 7 / 0
Регистрация: 14.03.2013
Сообщений: 231
|
|
20.07.2018, 16:03 [ТС] | 9 |
Ты мне скажи, у тебя на устройстве все отношения корректные?
0
|
129 / 126 / 22
Регистрация: 23.06.2009
Сообщений: 700
|
|
20.07.2018, 16:04 | 10 |
да, стакан не растягивается при повороте.
0
|
7 / 7 / 0
Регистрация: 14.03.2013
Сообщений: 231
|
|
20.07.2018, 16:10 [ТС] | 11 |
Погоди, ты какой то другой проект скачал.
Вот этот посмотри: https://github.com/googlesampl... mera2Basic
0
|
129 / 126 / 22
Регистрация: 23.06.2009
Сообщений: 700
|
||||||
20.07.2018, 16:12 | 12 | |||||
смысл. тут теже грабли. Что у тебя не получается?
правь разметку : Кликните здесь для просмотра всего текста
что с видео что с фото у них одинаково идет. :\
0
|
7 / 7 / 0
Регистрация: 14.03.2013
Сообщений: 231
|
|
20.07.2018, 18:13 [ТС] | 13 |
Так и не могу одолеть.
А может нужно переделать представление? Может сделать отображение AutoFitTextureView на весь экран а кнопки установить поверх?
0
|
129 / 126 / 22
Регистрация: 23.06.2009
Сообщений: 700
|
|
23.07.2018, 12:02 | 14 |
Выложи свой проект архивом. Скачаю посмотрю с твоей стороны. Может действительно я не те качал.
0
|
7 / 7 / 0
Регистрация: 14.03.2013
Сообщений: 231
|
|
24.07.2018, 09:40 [ТС] | 15 |
Посмотри личное сообщение.
0
|
24.07.2018, 09:40 | |
24.07.2018, 09:40 | |
Помогаю со студенческими работами здесь
15
В заголовке формы нужно выводить положение формы на экране и ее размеры Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |