2014-11-06 115 views
1

我有一個正確實現相機預覽的問題。我查看了StackOverflow和許多教程中提供的許多答案。我創建了自己的項目,讓它正確完成。Android上的拉伸相機預覽

https://bitbucket.org/rdkit/cameratutorial

我認爲它工作正常,但檢查對索尼XPERIA SP的代碼,不幸的是它沒有後橫空出世。

任何人都可以看看這段代碼並幫助我嗎?

從Moto G的

Moto G

和索尼的Xperia SP Sony Xperia SP

+0

http://stackoverflow.com/questions/19577299/android-camera-preview-stretched – 2014-11-06 13:34:06

+0

謝謝,但這是導致我的源寫一個我自己的代碼。也許在執行過程中我錯過了一些東西。這就是爲什麼我提供源代碼,也許有人可以指出我犯的錯誤 – rdkit 2014-11-06 13:37:45

+0

是的,你必須寫你自己的方法來選擇預覽尺寸 – 2014-11-06 14:05:06

回答

0

最後我自己找到了解決方案。在進行更改之前,我沒有停止預覽。

由於意見在方法

surfaceChanged() 

如果您預覽可以改變或旋轉,把這些事件的關心在這裏說。 確保在調整大小或重新格式化之前停止預覽。

所以我需要添加

try { 
    mCamera.stopPreview(); 
} catch (Exception e) { 
    // ignore: tried to stop a non-existent preview 
} 
0

相機PreviewSize截圖是非常棘手的設置。

在某些手機上,不考慮頂部狀態欄的高度,但其他實施方式會考慮此高度。還有底部的虛擬按鈕區域。

例如,如果總屏幕的寬度= 1080和高度= 1920,那麼當不考慮狀態欄的高度和虛擬按鈕區域的高度時,如果將預覽大小設置爲16:9的比例,看起來不錯。但!當考慮到狀態欄的高度和按鈕的高度時,可用的屏幕高度將永遠不會達到1920,那麼屏幕中的比率將與預覽大小不同,並且會拉長。

要解決該問題,您應該實現自己的getOptimalPreviewSize()方法,並根據可用屏幕高度選擇適當的預覽比例。