二维码扫描课件

上传人:我*** 文档编号:145232579 上传时间:2020-09-18 格式:PPT 页数:23 大小:1.35MB
返回 下载 相关 举报
二维码扫描课件_第1页
第1页 / 共23页
二维码扫描课件_第2页
第2页 / 共23页
二维码扫描课件_第3页
第3页 / 共23页
二维码扫描课件_第4页
第4页 / 共23页
二维码扫描课件_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《二维码扫描课件》由会员分享,可在线阅读,更多相关《二维码扫描课件(23页珍藏版)》请在金锄头文库上搜索。

1、Android开发,-简介二维码扫描,组长:xx,指导老师:xxx,组员:xx xx,Android是什么?,Android是一个运行在嵌入式Linux操作系统上的设备上的、可灵活部署、可升级的、完全开源代码的、代码符合Apache License、free-software和open source license许可完全商业友好的移动系统平台。Android平台由Google等公司发起建立的开发性厂商联盟组织Open Handset Alliance共同开发。 Android平台的目标是以更低的产品研发、设备部署和服务套件成本来开发具有良好界面的手持设备程序和各种移动设备中间件程序。,And

2、roid的特点,无需任何许可就可以发布一个应用程序 Android平台所有的API全部透明。无任何隐藏和附加权限即可查看所有API 可自由的组合、修改、扩展任何Android系统组件,Android的资源系统,以二维码扫描为例说明:,Android的权限控制,在AndroidManifest.xml中描述一个app的权限,例如:,Activity的生命周期,Activity简介,在Android 中规定所有的页面元素都必须以Activity形式展现。 Activity类中必须实现onCreate方法(此方法就是第一次程序界面展示给用户的初始化方法),必须在所有继承父类的接口处调用super类方

3、法. setContentView()方法:Android中把界面布局元素的展示,存放在layout文件夹中的对应的xml文档中。此方法,根据自动生成的R对象中缓存的xml文档类装载入Activity.,二维码扫描演示程序详解,一、xml布局,TextView用来存放解码后显示的信息,Surface 整个底层界面用来显示照相机拍摄到的图像,FrontView 用来把显示到的图像周围都涂成半透明的白色,中间的空白区域用来扫描二维码,ImageView 用来显示扫描二维码成功后截取到的图像,TextView 用来简单介绍本软件可以扫描的范围,Button 用来关闭软件和重新扫描,二、Activit

4、y 程序重要部分分析,1、FrontView.java,public void init() paint = new Paint(); paint.setColor(Color.WHITE); paint.setAlpha(0 xff / 2); protected void onDraw(Canvas canvas) int x; int y; int m=480; int n=350; x=canvas.getWidth(); y=canvas.getHeight(); canvas.drawRect(0, 0,x, (y-n)/2,paint); canvas.drawRect(0, (

5、y-n)/2, (x-m)/2, (y-n)/2+n,paint); canvas.drawRect(x-m)/2+m, (y-n)/2, x, (y-n)/2+n,paint); canvas.drawRect(0, (y-n)/2+n, x, y, paint);,初始化画笔,设置画笔的颜色,并把所绘的地区全部绘为(0 xff/2) 半透明。 得到canvas画布的长和宽(x,y) 绘制四个周边矩形,所绘制的矩形都是半透明的有颜色,只剩下中间一块亮白的地方,paint.setColor(Color.RED); canvas.drawLine(x-m)/2+10, (y-n)/2+10,(x

6、-m)/2+50, (y-n)/2+10, paint); canvas.drawLine(x-m)/2+10, (y-n)/2+10,(x-m)/2+10, (y-n)/2+50, paint); canvas.drawLine(x-m)/2+m-10, (y-n)/2+10,(x-m)/2+m-50, (y-n)/2+10, paint); canvas.drawLine(x-m)/2+m-10, (y-n)/2+10,(x-m)/2+m-10, (y-n)/2+50, paint); canvas.drawLine(x-m)/2+10, (y-n)/2+n-10,(x-m)/2+10,

7、(y-n)/2+n-50, paint); canvas.drawLine(x-m)/2+10, (y-n)/2+n-10,(x-m)/2+50, (y-n)/2+n-10, paint); canvas.drawLine(x-m)/2+m-10, (y-n)/2+n-10,(x-m)/2+m-10, (y-n)/2+n-50, paint); canvas.drawLine(x-m)/2+m-10, (y-n)/2+n-10,(x-m)/2+m-50, (y-n)/2+n-10, paint); canvas.drawLine(210, 400,270, 400, paint); canva

8、s.drawLine(240,370,240,430, paint); ,设置画笔的颜色 在扫描区四个角绘制互相垂直的两条直线 在扫描中间区域绘制两条垂直的直线,2、BackGround.java,public class BackGround extends View private Paint paint; public BackGround(Context context, AttributeSet attrs) super(context, attrs); init(); public BackGround(Context context) super(context); init()

9、; private void init() paint = new Paint(); paint.setColor(Color.GRAY); protected void onDraw(Canvas canvas) int x,y; x=canvas.getWidth(); y=canvas.getHeight(); canvas.drawRect(0, 700, 480, 800, paint); ,此java文件主要是自定义一个方法,用以在添加的Button下面作为背景图片 调用初始化方法init() 初始化画笔,并设置颜色 得到画布的长和宽,并绘制一个宽480,长100的矩形,2、 Pi

10、ctureSurfaceTest .java,public void surfaceCreated(SurfaceHolder holder) try Log.e(Camera, Camera open); flag=true; mCamera = Camera.open(); mCamera.setPreviewDisplay(sfh); catch (Exception e) Log.e(Camera,Camera open exception); e.printStackTrace(); mCamera.release(); flag=false; mCamera = null; ,此j

11、ava文件用来调用系统照相机,并实现拍照和自动对焦,打开照相机,并实现预览mCamera.setPreviewDisplay(sfh); 如果出现异常则释放照相机资源,private void startPerview() if (mCamera != null ,如果照相机拍到的照片不为NULL,并且没有开始预览,则把拍到的图片旋转90度 设置预览照片的大小(800*480); 开始调用预览方法mCamera.startPreview();,public void surfaceDestroyed(SurfaceHolder holder) mCamera.stopPreview(); mC

12、amera.release(); flag=false; mCamera = null; public void Onfocus() if(mCamera != null) mCamera.autoFocus(callback); private AutoFocusCallback callback = new AutoFocusCallback() public void onAutoFocus(boolean success, Camera camera) if(success ,释放照相机资源 并停止拍照,用Onfocus()实现自动对焦 Onfocus()的回调函数 当成功对焦并且照像

13、不为空时,调用setOneShotPreviewCallback() 照相机重新启动,3、PictureTest.java,private void initView() Log.e(tag, begin init); surCameraView = (PictureSurfaceTest) findViewById(R.id.surfaceView); surretake = (PictureSurfaceTest) findViewById(R.id.surfaceView); frontview = (FrontView) findViewById(R.id.frontView); ba

14、ckground = (BackGround) findViewById(R.id.background); cancel = (Button) findViewById(R.id.cancel); retake = (Button) findViewById(R.id.retake); /editText = (EditText) findViewById(R.id.edittext); textView=(TextView) findViewById(R.id.textview); imageView = (ImageView) findViewById(R.id.imageview);

15、surCameraView.previewcallback = previewcallback; mTimer = new Timer(); mTimerTask = new MyTimerTask(); mTimer.schedule(mTimerTask, 0,200); ,初始化函数,用来初始化各种控件,初始化定时器mTimer 扫描的频率为200ms,public void ClickLietener() cancel.setOnClickListener(new OnClickListener() public void onClick(View v) surCameraView.f

16、lag =false; mTimer.cancel(); mTimerTask.cancel(); frontview.init(); finish(); ); retake.setOnClickListener(new OnClickListener() public void onClick(View v) surCameraView.flag = true; mTimer = new Timer(); mTimerTask = new MyTimerTask(); mTimer.schedule(mTimerTask, 0,200); surCameraView.Onfocus(); textView.setText(null); frontview.init(); imageView.setVisibility(ImageView.INVISIBLE); ); ,关闭按钮,按下后退出程序,并且释放照相机资源和mTimerTask和Time

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号