您的位置:首页 > 移动开发 > Android开发

Android开发学习之以CameraAPI方式实现相机功能(二)——相机功能配置

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



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐