Android编程实现摄像头临摹效果的方法

本文实例讲述了Android编程实现摄像头临摹效果的方法。分享给大家供大家参考,具体如下:

这篇文章结合本人的开发实例,介绍如何实现摄像头临摹效果,即将摄像头拍摄的画面作为临摹的物体投射到画纸上,用户可以在画纸上继续作画,效果如图1.

主要可以分成四步,第一步在AndroidManifest.xml文件里添加对摄像机的使用许可。

<uses-permissionandroid:name="android.permission.CAMERA"/>

第二步在布局文件里使用framelayout,这样可以实现两个view叠在一起的效果,要保证两个view的大小和位置相同。

<FrameLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <SurfaceView
      android:id="@+id/SurfaceView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"/>
    <com.example.artist.PaintView
      android:id="@+id/PaintView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"/>
</FrameLayout>

其中的surfaceview用来动态显示摄像机当前拍摄的画面,第三步需要打开摄像机并进行相关配置,然后开启预览。

mSurfaceView = (SurfaceView)this.findViewById(R.id.sfView);
mSurfaceHolder = mSurfaceView.getHolder();
mSurfaceHolder.addCallback(SimplePaintActivity.this);
mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
mCamera = Camera.open();
Camera.Parameters parameters = mCamera.getParameters();
parameters.setPictureFormat(PixelFormat.JPEG);
parameters.setPreviewSize(dm.widthPixels, dm.heightPixels);
parameters.setPictureSize(dm.widthPixels, dm.heightPixels);
mCamera.setParameters(parameters);
try {
  mCamera.setPreviewDisplay(mSurfaceHolder);
} catch (IOException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
}
mCamera.startPreview();

第四步需要改变com.example.artist.PaintView的背景透明度,PaintView是本人自己实现的一个view,在onTouchEvent函数和onDraw函数里分别进行了触摸响应和绘画功能,是用来响应用户画画的view,设置背景半透明的语句如下。

mBkColor = Color.argb(100, 255, 255, 255);
canvas.drawColor(mBkColor);

这样,摄像头临摹效果就实现了,大功告成!

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android拍照与图片处理技巧总结》、《Android图形与图像处理技巧总结》、《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》

希望本文所述对大家Android程序设计有所帮助。

(0)

相关推荐

  • Android调用前后摄像头同时工作实例代码

    硬件环境:小米4 Android版本:6.0 咱们先看效果图: 我把代码贴出来: AndroidMainfest.xml文件(需要新增camera权限): <uses-permission android:name="android.permission.CAMERA" /> activity_main.xml文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayo

  • Android中判断是否有前置摄像头、后置摄像头的方法

    通常我们进行摄像头操作,如扫描二维码需要判断是否有后置摄像头(Rear camera),比如Nexus 7 一代就没有后置摄像头,这样在尝试使用的时候,我们需要进行判断进行一些提示或者处理. 以下代码为一系列的方法,用来判断是否有前置摄像头(Front Camera),后置摄像头. 复制代码 代码如下: private static boolean checkCameraFacing(final int facing) {     if (getSdkVersion() < Build.VERS

  • Android 开发随手笔记之使用摄像头拍照

    在Android中,使用摄像头拍照一般有两种方法, 一种是调用系统自带的Camera,另一种是自己写一个摄像的界面. 我们要添加如下权限: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.CAMERA"/> 1.调用系统Camera 调用系统

  • Android开发教程之调用摄像头功能的方法详解

    本文实例讲述了Android调用摄像头功能的方法.分享给大家供大家参考,具体如下: 我们要调用摄像头的拍照功能,显然 第一步必须加入调用摄像头硬件的权限,拍完照后我们要将图片保存在SD卡中,必须加入SD卡读写权限,所以第一步,我们应该在Android清单文件中加入以下代码 摄像头权限: <uses-permission android:name="android.permission.CAMERA"/> SD卡读写权限: <uses-permission androi

  • Android实现手机摄像头的自动对焦

    如何实现Android相机的自动对焦,而且是连续自动对焦的.当然直接调用系统相机就不用说了,那个很简单的.下面我们主要来看看如如何自己实现一个相机,并且实现自动连续对焦. 代码如下: public class MainActivity extends Activity { private SurfaceView surfaceView; private SurfaceHolder surfaceHolder; private boolean flag = false; private Strin

  • android开发之调用手机的摄像头使用MediaRecorder录像并播放

    我们玩玩手机的录像功能吧.做个DEMO. 看看录制过程: 复制代码 代码如下: mediarecorder = new MediaRecorder();// 创建mediarecorder对象 // 设置录制视频源为Camera(相机) mediarecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); // 设置录制完成后视频的封装格式THREE_GPP为3gp.MPEG_4为mp4 mediarecorder.setOutputFo

  • Android实现调用摄像头

    应用场景: 在Android开发过程中,有时需要调用手机自身设备的功能,本文侧重摄像头拍照功能的调用. 知识点介绍: 使用权限:调用手机自身设备功能(摄像头拍照功能),应该确保已经在AndroidManifest.xml中正确声明了对摄像头的使用及其它相关的feature 1. 摄像头相关权限设置 <!--摄像头权限 --> <uses-permission android:name="android.permission.CAMERA" /> <!--存

  • Android判断用户是否允许了摄像头权限实例代码

    如题,既然是判断用户是否允许了摄像头权限,那么,咱们就忽略是Manifest配置的问题,因为这是开发者的事. 用户在使用APP时,如果首次进入用摄像头的地方,手机会提示是否允许该应用使用摄像头.有些用户小手一抖.或者压根就不想开启摄像头,咔擦,就给你关了,那好了.下回再进入该功能,就会出现APP一片黑,或者崩溃的情况. 作为开发者,正常思路是要提示用户,摄像头权限被你关了,赶紧去手动开启,不然,就别想用该功能了!那,咱们该怎么实现这个思路呢? 一.判断摄像头权限 Android API没提供判断

  • Android编程实现摄像头临摹效果的方法

    本文实例讲述了Android编程实现摄像头临摹效果的方法.分享给大家供大家参考,具体如下: 这篇文章结合本人的开发实例,介绍如何实现摄像头临摹效果,即将摄像头拍摄的画面作为临摹的物体投射到画纸上,用户可以在画纸上继续作画,效果如图1. 主要可以分成四步,第一步在AndroidManifest.xml文件里添加对摄像机的使用许可. <uses-permissionandroid:name="android.permission.CAMERA"/> 第二步在布局文件里使用fra

  • Android编程实现图标拖动效果的方法

    本文实例讲述了Android编程实现图标拖动效果的方法.分享给大家供大家参考,具体如下: 最近优化图标拖动时的速率,稍微有一点点效果,直接把代码贴出来,有兴趣一起讨论的朋友可以给我留言. 代码如下: DragView.java package com.android.dragtest; import android.content.Context; import android.util.AttributeSet; import android.util.Log; import android.

  • Android编程使用光线传感器获取光线强弱的方法【LightSensorManager封装类】

    本文实例讲述了Android编程使用光线传感器获取光线强弱的方法.分享给大家供大家参考,具体如下: 在Android开发中,有时我们需要获知设备所在环境的光线强弱情况,当然这需要我们设备拥有光线传感器.通常我们手机的屏幕自动亮度都是用光线传感器来实现的.该传感器在前置摄像头附近,此外,还有一个距离传感器.这里我们主要讲解如何使用Android手机的光线传感器. 下面是我简单封装的一个光线传感器管理类,主要提供了3个方法: 1.start():启动,在获取光照强度前调用. 2.stop():停止,

  • Android编程绘图操作之弧形绘制方法示例

    本文实例讲述了Android编程绘图操作之弧形绘制方法.分享给大家供大家参考,具体如下: /** * 绘制弧形图案 * @description: * @author ldm * @date 2016-4-25 下午4:37:01 */ public class ArcsActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedIns

  • Android编程画图之抗锯齿解决方法

    本文实例分析了Android编程画图之抗锯齿解决方法.分享给大家供大家参考,具体如下: 在画图的时候,图片如果旋转或缩放之后,总是会出现那些华丽的锯齿.其实Android自带了解决方式. 方法一:给Paint加上抗锯齿标志.然后将Paint对象作为参数传给canvas的绘制方法. 复制代码 代码如下: paint.setAntiAlias(true); 方法二:给Canvas加上抗锯齿标志. 有些地方不能用paint的,就直接给canvas加抗锯齿,更方便. 复制代码 代码如下: canvas.

  • Android编程实现大图滚动显示的方法

    本文实例讲述了Android编程实现大图滚动显示的方法.分享给大家供大家参考,具体如下: 问题: 我有一张比较大的图片,比如长宽都是屏幕的两倍大小,我想实现的功能是首先将图片居中显示,由于图片太大显然只能显示一部分,然后可以通过拖动,实现图片的平滑滚动(既看不出来滚动刷新痕迹). 就像google地图一样,如果用mapView这个控件,那么可以在屏幕上拖动整个地图,但是由于地图信息量太大,如果一次拖动过快,那么屏幕会暂时显示出一些刷新痕迹(灰白的格子). 想使用mapView来加载已有图片,但是

  • Android编程实现3D滑动旋转效果的方法

    本文实例讲述了Android编程实现3D滑动旋转效果的方法.分享给大家供大家参考,具体如下: 这里我们通过代码实现一些滑动翻页的动画效果. Animation实现动画有两个方式:帧动画(frame-by-frame animation)和补间动画(tweened animation) 本示例通过继承Animation自定义Rotate3D,实现3D翻页效果.效果图如下: 1.Rotate3D(Animation) 首先,自定义Animation的3D动画类Rotate3D public clas

  • Android编程实现列表侧滑删除的方法详解

    本文实例讲述了Android编程实现列表侧滑删除的方法.分享给大家供大家参考,具体如下: 前言:今天突然想起来了列表的滑动删除功能,一些下拉刷新的框架也会带这个侧滑删除的功能,比如一些listview的和recycleview的刷新框架都有这个功能,我今天写这个博客的目的是如何不依赖这些框架也是实现侧滑删除,如果自己已经使用的列表框架没有侧滑删除怎么给单独加入侧滑删除功能. 概括:我今天写的这个文章就是讲的是怎么单独给列表加入侧滑删除功能,不去为了侧滑删除而依赖一个列表框架,就是说如果需要的话可

  • Android编程实现震动与振铃的方法详解

    本文实例讲述了Android编程实现震动与振铃的方法.分享给大家供大家参考,具体如下: 1.Android的震动实现--Vibrator类 (1)实现震动,首先要加上使用震动所需的权限 <uses-permission android:name="android.permission.VIBRATE" /> 注:更多关于Android权限控制说明可参考http://tools.jb51.net/table/AndroidManifest (2)需要用到的API boolea

  • Android编程实现popupwindow定时消失的方法

    本文实例讲述了Android编程实现popupwindow定时消失的方法.分享给大家供大家参考,具体如下: 因为是在其他界面弹出的popupwindow,要在横屏切换回竖屏的时候,让popupwindow自动消失,因为弹出popupwindow是普通的类,没有监听横竖屏的函数,所以想到了使用定时器,定时3秒之后如果用户没有操作就让popupwindow消失,代码如下: // 创建弹出窗口 popupMenu = new PopupWindow(view, sourceView.getWidth(

随机推荐