接着我们在上一篇文章中实现的简单项目,现在我们继续为这个相机添加功能。首先,在Camera中,我们可以对相机进行简单的控制,而当我们需要进行更多的功能上的配置上的时候,我们需要使用Camera下面的Parameters类。Parameters类中封装了我们需要的大部分功能,下面我们来一一讲解:
1、setPictureFormat()方法用于设置相机照片的格式,其参数是一个字符型参数,位于PixelFormat类中,我们在这里选择PixelFormat.JPEG。
2、setSceneMode()方法用于设置相机场景类型,其参数是一个字符型参数,位于Parameters类中,以SCENE_MODE_开头。
3、setZoom()方法用于设置相机焦距,其参数是一个整型的参数,该参数的范围是0到Camera.getParameters().getMaxZoom()。
4、setPictureSize()方法用于设置相机照片的大小,参数为整型。
5、setWhiteBalance(),方法用于设置相机照片白平衡,其参数是一个字符型参数,位于Parameters类中,以WHITE_BALANCE开头。
6、setJpegQuality()方法用于设置相机照片的质量,其参数是一个整型参数,取值范围为1到100。
7、setFlashMode()方法用于设置闪光灯的类型,其参数是一个字符型参数,位于Parameters类中,以FLASH_MODE_开头。
8、setColorEffect()方法用于设置照片颜色特效的类型,其参数是一个字符型参数,位于Parameters类中,以EFFECT_开头。
好了,在这里我们只研究这个基本的方法,其它的方法大家可以自行了解,下面我们以setZoom()方法为例,来讲解相机的配置问题。为了将缩放的功能加入到我们的程序中,我们在这里修改一下程序的布局代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="0.8">
<FrameLayout
android:id="@+id/PreviewView"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
<SeekBar
android:id="@+id/ZoomBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true" />
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.2"
android:background="@drawable/main_bg">
<Button
android:id="@+id/BtnCapture"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:background="@drawable/camera"/>
<ImageView
android:id="@+id/ThumbsView"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_margin="15dp"
android:contentDescription="@string/Description" />
</RelativeLayout>
</LinearLayout>
对应地,我们修改我们的逻辑代码,添加下面的代码:
/** 焦距调节 **/
mZoomBar=(SeekBar)findViewById(R.id.ZoomBar);
/** 设置焦距调节的最大值 **/
mZoomBar.setMax(mCamera.getParameters().getMaxZoom());
mZoomBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener()
{
@Override
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2)
{
setZoom(mZoomBar.getProgress());
}
@Override
public void onStartTrackingTouch(SeekBar arg0)
{
}
@Override
public void onStopTrackingTouch(SeekBar arg0)
{
}
});
其中,setZoom()方法是这样定义的:
/** 设置相机焦距 **/
private void setZoom(int mValue)
{
Camera.Parameters mParams=mCamera.getParameters();
mParams.setZoom(mValue);
mCamera.setParameters(mParams);
}
最后一起来看运行效果吧