2013-06-26 5 views
3

Я пытаюсь реализовать измерение пятна с помощью телефона android. parameters.set («автоэкспозиция», «точечный замер»);Приложение для камеры для Android: измерение пятна

Однако я немного смущен относительно того, как работает замер. Если я правильно понимаю, Spot Metering работает, выбирая регион, который он использует для установки значений экспозиции.

Однако при выравнивании класса Camera.Parameters и отображении результатов область измерения была (0, 0, 0, 0, 0) [что означает, что она имеет нулевую ширину, высоту и вес], в то время как настройка автоэкспозиции был правильно «точечный замер». В API, однако, в документации «getMeteringAreas()» указано, что область измерения НЕ МОЖЕТ иметь нулевую ширину и высоту.

Так как я могу использовать «точечный замер», а область измерения - размер 0? Я попытался установить зону измерения в верхний правый угол, но это не повлияло на экспозицию.

Это заставляет меня думать, что автоэкспозиция = измерение пятна не имеет ничего общего с областями измерения .... что странно.

Если это не так, может кто-то, пожалуйста, помогите мне понять, что я делаю неправильно? Если вам нужна дополнительная информация, я буду рад включить код.

Если это так (как, в областях измерения не имеет ничего общего с точечным замерами), может кто-нибудь помочь мне выяснить, как ВЫБРАТЬ место, из которого счетчики автоотбора? Я думаю, что это по умолчанию центр.

Спасибо!

ответ

1

Измерение - это вопрос, зависящий от устройства.

До уровня API 14 не было стандартного API для управления измерением, я думаю, что некоторые бренды выбрали свой собственный способ управления им (в вашем случае: ключевое слово «автоэкспозиция»), но не через стандартный API-интерфейсы. Вот почему вы не можете получить действительную область. область замера (0, 0, 0, 0, 0) в вашем parameters.flatten() означает, что замер площади не поддерживаются (вес = 0), я предполагаю, что getMaxNumMeteringAreas() возвращает 0:

приложения должны сначала вызвать getMaxNumMeteringAreas(), чтобы узнать максимальное количество областей измерения. Если значение равно 0, область измерения не поддерживается.

В настоящее время существует несколько устройств, которые поддерживают области измерения (в моем опыте 3/20).

2

MeteringAreas параметр предназначен для автофокусировки.

Существует нет Android api для режимов измерения экспозиции. Вам нужно найти правильное недокументированное имя и значения параметров, чтобы установить его (например, путем сброса всех параметров через native_getParameters).

Например, для Примечания 3 имени параметра Samsung Galaxy является metering и принятых значения center, matrix и spot. Таким образом, вы просто вызываете set("metering", "spot");, и это магически работает.