2012-12-17 127 views
0

我有一個應用程序,我正在使用該設備上的前置攝像頭。我試圖通過獲取支持的預覽大小列表來設置預覽大小,並通過它們循環查找非常接近的預覽大小。我寫這樣做的方法與操作系統自帶的相機應用程序基本相同。該方法工作正常,我想怎麼樣,這不是我在這裏的原因。Android前置攝像頭預覽大小

我在某些設備上出現明顯偏斜的相機預覽問題;或者壓扁或拉伸圖像的預覽。我無法弄清楚它爲什麼這樣做,所以我通過它瀏覽了我的前置攝像頭可用的所有支持的預覽尺寸,發現只有2個,並且它們都不是可用的正確方面。我的SurfaceHolder.Callback類中的「surfaceChanged」方法報告前端攝像頭的寬度和高度爲762x480,但支持的兩種預覽尺寸(使用cam.getParameters().getSupportedPreviewSizes()獲取)的寬度和高度都在相反方面:480x800,320x640。

有了這些作爲唯一的選擇,似乎不可能預覽我的前置攝像頭沒有歪斜。我知道在版本2.3或更低版本中,任意值可以用於寬度和高度,而不考慮支持的大小,但我試圖讓我的應用程序也適用於較新版本的操作系統。我如何使預覽看起來正確?

回答

1

我的第一個問題在技術上仍然沒有解決(我仍然認爲這是不可能的),但是我確實弄清楚了非歪斜預覽的技巧。

鑑於支持的預覽大小與我的設備的屏幕相比都不正確,所以確實看起來不可能有填充整個屏幕的正常預覽在不同設備上查看了幾個本機相機應用程序(所有這些應用程序都顯示前面預覽並沒有任何偏斜),我注意到很少的設備(實際上只有一個設備,標準屏幕尺寸)的預覽覆蓋了整個屏幕,正如我在我的應用程序中試圖做的那樣。

我重新編寫了我的應用程序,以獲得與設備屏幕最接近的寬度和高度的尺寸,但無需以任何尺寸或高寬比進行翻閱,然後手動設置SurfaceView的高度和寬度以匹配所選尺寸。事實上,現在在某些設備上預覽周圍存在少量黑色空間,但它絕對看起來比傾斜更好。無論如何,我有一個帶有按鈕的面板,用於捕捉圖片和操縱閃光燈設置等,所以它實際上並不像人們想象的那麼明顯。