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()方法为例,来讲解相机的配置问题。为了将缩放的功能加入到我们的程序中,我们在这里修改一下程序的布局代码:
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); }最后一起来看运行效果吧
相关文章推荐
- Android调用手机新浪微博客户端分享
- 关于dlna开发使用的若干故障排除
- 安卓开发 解析GZIP压缩发送过来byte[]
- Android消息机制使用注意事项,防止泄漏
- 终于搞定android驱动USB摄像头了!
- Android framwork cpp调用java function
- Android【USB名称修改系列】第13项-如何修改USB存储在PC"我的电脑"中显示的label名称
- Android【USB名称修改系列】第12项-如何修改MTP在windows弹出的自动播放提示框标题
- Android【USB名称修改系列】第11项-如何修改preloader阶段的vcom口在windows右下角的提示框的字符串显示
- Android【USB名称修改系列】第10项-如何修改设备管理器中设备名后的数字
- Android【USB名称修改系列】第9项-如何修改UMS在设备管理器中DiskDrive下的名称
- Android【USB名称修改系列】第8项-如何修改mtp设备在设备管理器中的”Portable Devices”下的名称
- Android【USB名称修改系列】第7项-如何修改PTP设备在PC上弹出的对话框的标题
- Android EditText 监听输入
- Android【USB名称修改系列】第6项-如何修改手机在PC桌面右下角弹出的“MT65xx Android Phone”提示框
- Android【USB名称修改系列】第5项-如何修改MTP在PC设备管理器中制造商的名称
- Android【USB名称修改系列】第4项-如何修改BICR在PC"我的电脑"中显示的label名称
- android来电话按返回键结束来电实现
- Java、Android和iPhone 3DES加密
- Android【USB名称修改系列】第3项-如何修改MTP在PC"我的电脑"中显示的label名称