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

照相机应用相关内容:
[size=large][b]1.颜色效果:[/b][/size]

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();这里是获取照相机所支持的颜色效果。

整段大意是,首先获取了支持参数、颜色效果,然后把遍历出颜色效果看是否存在所需的颜色效果,如果存在就设置成该效果。

一些效果参数:
[quote]
EFFECT_NONE
EFFECT_MONO
EFFECT_NEGATIVE
EFFECT_SOLARIZE
EFFECT_SEPIA
EFFECT_POSTERIZE
EFFECT_WHITEBOARD
EFFECT_BLACKBOARD
EFFECT_AQUA[/quote]

[size=large][b]2.显示大小:[/b][/size]


……
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();
}
}



[b]parameters.getSupportedPreviewSizes()[/b];获取照相机支持的预览大小。

[b]cameraView.setLayoutParams(new LinearLayout.LayoutParams( bestWidth,bestHeight));[/b]
通知SurfaceView对象,camaraView 来显示那样的大小。如没有这样做,SurfaceView将不会改变显示大小,来自照相机的预览图片将会或扭曲的或非常低质量。


整段代码的大意是:在所技持的预览大小内,自定义预览大小。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值