Androidのゼロベースポイント(マルチメディア)の1つ

3525 ワード

詳細
カメラ応用関連内容:
1.色効果:

Camera.Parameters parameters = camera.getParameters();
List colorEffects = parameters.getSupportedColorEffects();
Iterator 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);


このコードは「Pro android media」から引用されています.
camera.getParameters();方法自機カメラのサポートパラメータを取得し、
parameters.getSupportedColorEffects();ここでは、カメラがサポートする色効果を取得します.
まずサポートパラメータ、色効果を取得し、色効果を遍歴して必要な色効果があるかどうかを見て、存在すればその効果に設定します.
いくつかの効果パラメータ:
参照
EFFECT_NONE
EFFECT_MONO
EFFECT_NEGATIVE
EFFECT_SOLARIZE
EFFECT_SEPIA
EFFECT_POSTERIZE
EFFECT_WHITEBOARD
EFFECT_BLACKBOARD
EFFECT_AQUA
2.表示サイズ:


……
public static final int LARGEST_WIDTH = 200;
public static final int LARGEST_HEIGHT= 200;
……

public void surfaceCreated(SurfaceHolder holder) {
    camera = Camera.open();
    try {
         camera.setPreviewDisplay(holder);
         Camera.Parameters parameters = camera.getParameters();
         int bestWidth = 0;
         int bestHeight = 0;
         List previewSizes = parameters.getSupportedPreviewSizes();
        if (previewSizes.size() > 1){
             Iterator cei = previewSizes.iterator();
             while (cei.hasNext()){
                   Camera.Size aSize = cei.next();
                   Log.v("SNAPSHOT","Checking " + aSize.width + " x " + aSize.height);
                   if (aSize.width > bestWidth && aSize.width <= LARGEST_WIDTH
&& aSize.height > bestHeight && aSize.height <= LARGEST_HEIGHT) {
                  // So far it is the biggest without going over the screen dimensions
                   bestWidth = aSize.width;
                   bestHeight = aSize.height;
               }
         }
         if (bestHeight != 0 && bestWidth != 0) {
             Log.v("SNAPSHOT", "Using " + bestWidth + " x " + bestHeight);
             parameters.setPreviewSize(bestWidth, bestHeight);
             cameraView.setLayoutParams(new LinearLayout.LayoutParams( bestWidth,
             bestHeight));
         }
     }
      camera.setParameters(parameters);
      //After we set the parameters, all that remains is to close out the    surfaceCreated method. 
    } catch (IOException exception) {
    camera.release();
   }
}



parameters.getSupportedPreviewSizes();カメラがサポートするプレビューサイズを取得します.
cameraView.setLayoutParams(new LinearLayout.LayoutParams( bestWidth,bestHeight));
Surface Viewオブジェクトに通知し、camaraViewでそのようなサイズを表示します.そうしないと、Surface Viewは表示サイズを変更せず、カメラからのプレビュー画像が歪んだり、非常に低品質になったりします.
セグメントコード全体の意味は、持つプレビューサイズ内でプレビューサイズをカスタマイズすることです.