[英]Camera's string parameters under Android API 7 (2.1 Eclair)
我正在開發一個使用Camera
預覽,拍照和縮放功能的應用程序。
我試圖保持與Android API級別7(2.1埃克萊爾),它沒有實現兼容Camera.Parameters.getMaxZoom()
Camera.Parameters.setZoom()
等,所以我必須使用String
被返回的參數硬件。 例如:
final String zoomSupportedString = parameters.get("zoom-supported"); // parameters is a Camera.Parameters
final boolean zoomSupported = (zoomSupportedString != null ? Boolean.parseBoolean(zoomSupportedString) : false);
if (zoomSupported) {
// Computes the min an max zoom levels for taking a picture:
final int minTake = parameters.getInt("taking-picture-zoom-min");
final int maxTake = parameters.getInt("taking-picture-zoom-max");
// etc.
}
但是,並非所有設備都使用相同的參數,而且我在互聯網上找不到任何有效的相機參數列表。
通過檢查HTC上Camera.Parameters.flatten()
返回的值(請參閱doc ),我可以找到"zoom-supported"
"taking-picture-zoom-min"
, "taking-picture-zoom-max"
"taking-picture-zoom-min"
, "taking-picture-zoom-max"
和"max-zoom"
。 令人驚訝的是,我沒有發現"min-zoom"
。
但是,例如,參數"taking-picture-zoom-min"
在三星Galaxy S上不存在,這導致返回null
並導致getInt()
引發NumberFormatException: 'null' cannot be parsed as an integer
。
知道我正在嘗試與Android-7兼容,是否有比使用硬件返回的字符串值更好的方法來處理縮放? 如果是這樣,是否有可能在某處找到所有有效縮放參數的列表(甚至是供應商的列表)?
我知道這是一個古老的話題,但是對於那些正在搜索“相機變焦”的人……我遇到了同樣的問題,現在我有2個工作原理不同的android設備,兩者都具有某種通用性。
Camera.Parameters.setZoom(int value)
不適用於它們兩個,所以我開始測試。 一台設備具有“拍照變焦……”功能。 但兩個設備都帶有“ zoom = ...;” 在Camera.Parameters中。 在具有“ take-picture-zoom -...;”的設備上,如果我使用Camera.Parameters.set("zoom", int value)
,它將崩潰,而在另一方面,它將正常工作。 因此,我的解決方案是,在初始化相機時,我會存儲一個布爾值,該布爾值對Camera.Parameters.get("taking-picture-zoom")!=null
,否則為false。 從那一刻起,設置縮放時,只需檢查布爾值並使用適當的縮放命令即可,僅此而已,就像一個魅力! 當然,您也可以僅使String保留適當的命令,並在設置縮放比例時使用該命令。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.