上述代碼首先檢查設備配置(通過調(diào)用Context.getResources().getConfiguration())以查看當前的方向。如果方向不是橫向模式,那么它設置Camera.Parameters的“orientation”值為“portrait”。此外,調(diào)用Camera.Parameters的setRotation方法,并傳入90°的參數(shù)。該方法在API Level 5(2.0版)和更高版本上可用,它實際上并不執(zhí)行任何旋轉(zhuǎn);相反,它會告訴Camera對象在EXIF數(shù)據(jù)中指定該圖像應該旋轉(zhuǎn)90°顯示。如果沒有包含該信息,那么在其他應用程序中查看該圖像時,它可能會側(cè)面顯示。
注意:以上所示的通過使用Camera.Parameters修改Camera對象旋轉(zhuǎn)的方法用于Android 2.1和更早的版本。在Android 2.2中引入了Camera類的一個新方法setDisplayOrientation (int degrees)。該方法接受一個整數(shù),表示圖像應該旋轉(zhuǎn)的度數(shù)。有效的度數(shù)為0、90、180和270。
大多數(shù)可以或應該修改的參數(shù)都有與它們相關聯(lián)的特定方法。如同我們所看到的setRotation方法一樣,這些方法遵循Java的獲取器和設置器設計模式。例如,可以使用setFlashMode(Camera.Parameters.FLASH_MODE_AUTO)來設置Camera對象的閃光燈模式,同時可以使用getFlashMode()獲得它的當前值,而無須使用通用的Parameters.set方法。
從Android 2.0開始,存在一個可用于展示的有趣參數(shù),使用該參數(shù)可以修改顏色效果。對應的獲取器和設置器方法是getColorEffect和setColorEffect。同時還存在一個getSupportedColorEffects方法,它返回一個String對象的列表,對應特定設備上所支持的各種效果。事實上,這種方法對于所有具有獲取器和設置器方法的參數(shù)都存在,用于在使用某個功能之前確保所請求的功能是可用的。
Camera.Parameters parameters = camera.getParameters();
List<String> colorEffects = parameters.getSupportedColorEffects();
Iterator<String> cei = colorEffects.iterator();
while (cei.hasNext()) {
String currentEffect = cei.next();
Log.v("SNAPSHOT","Checking " + currentEffect);
if (currentEffect.equals(Camera.Parameters.EFFECT_SOLARIZE)) {
Log.v("SNAPSHOT","Using SOLARIZE");
parameters.setColorEffect(Camera.Parameters.EFFECT_SOLARIZE);
break;
}
}
Log.v("SNAPSHOT","Using Effect:" + parameters.getColorEffect());
camera.setParameters(parameters);