2013-12-18 5 views
1

Я использую API-интерфейс Android для проекта, над которым я сейчас работаю, и я столкнулся с довольно странным поведением. Когда я изменяю размер предварительного просмотра, чтобы перейти к более высокому разрешению, я действительно получаю более качественный предварительный просмотр, но есть и этот раздражающий эффект масштабирования: Скажем, я держу свое устройство на расстоянии 5 см от объекта в 1024x512, я могу см. его полностью. Но если я перейду на 1920x1080, это похоже на то, что я увеличил масштаб объекта, и мне нужно идти дальше, чтобы полностью его захватить. Теперь это немного разочаровывает, так как я хочу получить более высокое разрешение, чтобы получить более подробную информацию о моем объекте, но если мне нужно уйти от него, то датчик не достаточно разумен, чтобы получить эти детали. Возможно ли что-то, что я неправильно понял с помощью API-камеры?Android Camera API - Weird zoom effect

+0

Как вы представляете кадр предварительного просмотра камеры? (Мне интересно, не масштабируется ли оно до окна на экране.) – fadden

+0

Использование SurfaceView. Я полагал, что API установит разрешение SurfaceView в соответствии с разрешением предварительного просмотра. Возможно, нет. Не просмотрел параметры SurfaceView ... –

+0

TextureView будет масштабироваться и обычно вести себя как вид. SurfaceView - это просто прозрачный прямоугольник, который находится поверх слоя, обработанного непосредственно поверхностным компоновщиком. В документе TextureView doc (http://developer.android.com/reference/android/view/TextureView.html) приведен пример маршрутизации предварительного просмотра камеры в представление. – fadden

ответ

1

Это может быть ошибка на вашей стороне, или ошибка (или функция, если хотите) камеры на вашем устройстве. Чтобы проверить, зарегистрируйтесь для предварительного просмотра (setOneShotPreviewCallback()), сохраните буферы, которые вы получаете в том же положении для разных разрешений, и сравните изображения.

Из моего личного опыта переход от разрешения 4: 3 до 16: 9 часто уменьшает поле зрения. Но в вашем примере обе настройки сохраняют одинаковое соотношение сторон.

+1

Я пробовал играть с разными пропорциями и оказалось, что вы были правы. Именно по этой причине я заметил. Спасибо –

+0

Здравствуйте, я также заметил этот эффект, когда я играю в приложение для системной камеры Android. Соотношение 4: 3 имеет большее поле, чем 16: 9 на том же расстоянии. Но я столкнулся с проблемой, мне нужен этот эффект в моем собственном приложении, но когда я изменяю предварительный просмотр с помощью API Camera.Parameters.setPreviewSize (int, int), поле предварительного просмотра не изменяется. Как вы реализуете этот эффект? Использовал ли я неправильный метод? – dragonfly

+0

@ dragonfly: Я не совсем понимаю ваш вопрос. Нет * контракта *, который контролирует поле зрения камеры, когда изменяется его размер предварительного просмотра. Пожалуйста, дайте более подробную информацию. Это не будет стоить вам денег, чтобы открыть новый вопрос, если вы ожидаете чего-то, кроме ответа на один лайнер. –