Android开发二维码扫描

上传人:nbwa****ajie 文档编号:49299739 上传时间:2018-07-26 格式:PPT 页数:21 大小:1.85MB
返回 下载 相关 举报
Android开发二维码扫描_第1页
第1页 / 共21页
Android开发二维码扫描_第2页
第2页 / 共21页
Android开发二维码扫描_第3页
第3页 / 共21页
Android开发二维码扫描_第4页
第4页 / 共21页
Android开发二维码扫描_第5页
第5页 / 共21页
点击查看更多>>
资源描述

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

1、Android是什么?Android是一个运行在嵌入式Linux操作系统上的设备上的、 可灵活部署、可升级的、完全开源代码的、代码符合Apache License、free-software和open source license许可完全商业 友好的移动系统平台。Android平台由Google等公司发起建立的 开发性厂商联盟组织Open Handset Alliance共同开发。Android平台的目标是以更低的产品研发、设备部 署和服务套件成本来开发具有良好界面的手持设备程 序和各种移动设备中间件程序。Android的特点无需任何许可就可以发布一个应用程序 Android平台所有的API全

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

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

4、t() paint = new Paint(); paint.setColor(Color.WHITE); paint.setAlpha(0xff / 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, (y-n)/2, (x-m)/2, (y-n)/2+n,paint); canvas.dr

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

6、(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, (y-n)/2+n-50, paint); canvas.drawLine(x-m)/2+10

7、, (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); canvas.drawLine(240,370,240,430, paint); 设置画笔的 颜色在扫描区四

8、 个角绘制互 相垂直的两 条直线在扫描中间 区域绘制两 条垂直的直 线2、BackGround.javapublic class BackGround extends View private Paint paint; public BackGround(Context context, AttributeSet attrs) super(context, attrs); init(); public BackGround(Context context) super(context); init(); private void init() paint = new Paint(); pain

9、t.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、 PictureSurfaceTest .javapublic void surfaceCrea

10、ted(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; 此java文件用来调用 系统照相机,并实现 拍照和自动对焦打开照相机,并实 现预览

11、 mCamera.setPrevie wDisplay(sfh); 如果出现异常则释 放照相机资源private void startPerview() if (mCamera != null Log.e(“tag“, “set Camera parameters“); Camera.Parameters parameters = mCamera.getParameters(); Log.e(“tag“,parameters.flatten(); parameters.flatten(); parameters.setPreviewSize(800, 480); mCamera.setPara

12、meters(parameters); Log.e(“tag“, “ Camera parameters end“); mCamera.startPreview(); isStartPerview = true; 如果照相机拍到的照片 不为NULL,并且没有开 始预览,则把拍到的图 片旋转90度设置预览照片的大小( 800*480);开始调用预览方法 mCamera.startPreview();public void surfaceDestroyed(SurfaceHolder holder) mCamera.stopPreview(); mCamera.release(); flag=fa

13、lse; 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 ; public void restart()mCamera.startPreview(); 释放照相机资源 并停止拍照用Onfocus() 实现自动对焦 On

14、focus()的 回调函数当成功对焦并 且照像不为空 时,调用 setOneShotPrevi ewCallback( )照相机重新启 动3、PictureTest.javaprivate void initView() Log.e(“tag“,“ begin init“); surCameraView = (PictureSurfaceTest) findViewById(R.id.surfaceView); surretake = (PictureSurfaceTest) findViewById(R.id.surfaceView); frontview = (FrontView) fin

15、dViewById(R.id.frontView); background = (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) f

16、indViewById(R.id.imageview); surCameraView.previewcallback = previewcallback; mTimer = new Timer(); mTimerTask = new MyTimerTask(); mTimer.schedule(mTimerTask, 0,200); 初始化函数,用来 初始化各种控件初始化定时器mTimer 扫描的频率为200mspublic void ClickLietener() cancel.setOnClickListener(new OnClickListener() public void onClick(View v) surCameraView.flag =false; mTimer.cancel(); mTimerTask.cancel(); frontview.init(); fin

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

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