接着我们在上一篇文章中实现的简单项目,现在我们继续为这个相机添加功能。首先,在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); }最后一起来看运行效果吧