簡體   English   中英

Android API 7(2.1 Eclair)下的相機的字符串參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM