2013-06-26 61 views
3

我正在嘗試使用android手機實現點測光。參數設置(「自動曝光」,「點測光」);Android相機應用程序:點測光

但是,我對計量如何工作有些困惑。如果我理解正確,點測光通過選擇用於設置曝光值的區域進行工作。

但是,當展平Camera.Parameters類並顯示結果時,測光區域爲(0,0,0,0,0)[表示它具有零寬度,高度和重量],而自動曝光設置正確地「點測光」。但是,在API中,「getMeteringAreas()」文檔指出,測量區域的寬度和高度不能爲零。

那麼我怎樣才能使用「點測光」,而計量面積大小爲0?我試圖將測光區域設置在右上角,但對曝光沒有任何影響。

這使我相信自動曝光=點測光與測光區域沒有任何關係......這很奇怪。

如果情況並非如此,有人可以幫助我瞭解我做錯了什麼嗎?如果您需要更多信息,我很樂意收錄代碼。

如果是這種情況(因爲測光區域與點測光無關),有人可以幫我弄清楚如何選擇自動曝光測光點的位置嗎?我認爲它默認爲中心。

謝謝!

回答

1

計量是一個設備相關的問題。

在API級別14之前,沒有用於管理計量的標準API,我認爲有些品牌選擇了自己的方式來管理它(在您的案例中:「auto-exposure」關鍵字),但不通過標準蜜蜂。 這就是您無法獲得有效區域的原因。 計量區域(0,0,0,0,0)中的parameters.flatten()表示測光區域不被支持(重量= 0),我想這getMaxNumMeteringAreas()返回0:

應用程序應該調用getMaxNumMeteringAreas()來首先知道測光區域的最大數量。如果該值爲0,則不支持測光區域。

到目前爲止,很少有支持測量區域的設備(以我的經驗3/20)。

2

MeteringAreas該參數用於自動對焦測光。

曝光測光模式沒有Android API。您需要找到適當的未記錄參數名稱和值來設置它(例如,通過native_getParameters轉儲所有參數)。

例如,對於Samsung Galaxy Note 3,參數名稱爲metering,接受的值爲center,matrixspot。所以你只需撥打set("metering", "spot");,它神奇地工作。