Androidのゼロベースポイント(マルチメディア)の1つ
3525 ワード
詳細
カメラ応用関連内容:
1.色効果:
このコードは「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.表示サイズ:
parameters.getSupportedPreviewSizes();カメラがサポートするプレビューサイズを取得します.
cameraView.setLayoutParams(new LinearLayout.LayoutParams( bestWidth,bestHeight));
Surface Viewオブジェクトに通知し、camaraViewでそのようなサイズを表示します.そうしないと、Surface Viewは表示サイズを変更せず、カメラからのプレビュー画像が歪んだり、非常に低品質になったりします.
セグメントコード全体の意味は、持つプレビューサイズ内でプレビューサイズをカスタマイズすることです.
カメラ応用関連内容:
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は表示サイズを変更せず、カメラからのプレビュー画像が歪んだり、非常に低品質になったりします.
セグメントコード全体の意味は、持つプレビューサイズ内でプレビューサイズをカスタマイズすることです.