`
BBjava
  • 浏览: 120410 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

android的零星基础点(多媒体)之一

阅读更多
照相机应用相关内容:
1.颜色效果:
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);


这部份代码引用自 《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<Camera.Size> previewSizes = parameters.getSupportedPreviewSizes();
        if (previewSizes.size() > 1){
             Iterator<Camera.Size> 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));
通知SurfaceView对象,camaraView 来显示那样的大小。如没有这样做,SurfaceView将不会改变显示大小,来自照相机的预览图片将会或扭曲的或非常低质量。



整段代码的大意是:在所技持的预览大小内,自定义预览大小。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics