




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
,Android是什么?,Android是一个运行在嵌入式Linux操作系统上的设备上的、可灵活部署、可升级的、完全开源代码的、代码符合ApacheLicense、free-software和opensourcelicense许可完全商业友好的移动系统平台。Android平台由Google等公司发起建立的开发性厂商联盟组织OpenHandsetAlliance共同开发。Android平台的目标是以更低的产品研发、设备部署和服务套件成本来开发具有良好界面的手持设备程序和各种移动设备中间件程序。,Android的特点,无需任何许可就可以发布一个应用程序Android平台所有的API全部透明。无任何隐藏和附加权限即可查看所有API可自由的组合、修改、扩展任何Android系统组件,Android的资源系统,以二维码扫描为例说明:,Android的权限控制,在AndroidManifest.xml中描述一个app的权限,例如:,Activity的生命周期,Activity简介,在Android中规定所有的页面元素都必须以Activity形式展现。Activity类中必须实现onCreate方法(此方法就是第一次程序界面展示给用户的初始化方法),必须在所有继承父类的接口处调用super类方法.setContentView()方法:Android中把界面布局元素的展示,存放在layout文件夹中的对应的xml文档中。此方法,根据自动生成的R对象中缓存的xml文档类装载入Activity.,二维码扫描演示程序详解,一、xml布局,TextView用来存放解码后显示的信息,Surface整个底层界面用来显示照相机拍摄到的图像,FrontView用来把显示到的图像周围都涂成半透明的白色,中间的空白区域用来扫描二维码,ImageView用来显示扫描二维码成功后截取到的图像,TextView用来简单介绍本软件可以扫描的范围,Button用来关闭软件和重新扫描,二、Activity程序重要部分分析,1、FrontView.java,publicvoidinit()paint=newPaint();paint.setColor(Color.WHITE);paint.setAlpha(0 xff/2);protectedvoidonDraw(Canvascanvas)intx;inty;intm=480;intn=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.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-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,(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);canvas.drawLine(240,370,240,430,paint);,设置画笔的颜色在扫描区四个角绘制互相垂直的两条直线在扫描中间区域绘制两条垂直的直线,2、BackGround.java,publicclassBackGroundextendsViewprivatePaintpaint;publicBackGround(Contextcontext,AttributeSetattrs)super(context,attrs);init();publicBackGround(Contextcontext)super(context);init();privatevoidinit()paint=newPaint();paint.setColor(Color.GRAY);protectedvoidonDraw(Canvascanvas)intx,y;x=canvas.getWidth();y=canvas.getHeight();canvas.drawRect(0,700,480,800,paint);,此java文件主要是自定义一个方法,用以在添加的Button下面作为背景图片调用初始化方法init()初始化画笔,并设置颜色得到画布的长和宽,并绘制一个宽480,长100的矩形,2、PictureSurfaceTest.java,publicvoidsurfaceCreated(SurfaceHolderholder)tryLog.e(Camera,Cameraopen);flag=true;mCamera=Camera.open();mCamera.setPreviewDisplay(sfh);catch(Exceptione)Log.e(Camera,Cameraopenexception);e.printStackTrace();mCamera.release();flag=false;mCamera=null;,此java文件用来调用系统照相机,并实现拍照和自动对焦,打开照相机,并实现预览mCamera.setPreviewDisplay(sfh);如果出现异常则释放照相机资源,privatevoidstartPerview()if(mCamera!=null,如果照相机拍到的照片不为NULL,并且没有开始预览,则把拍到的图片旋转90度设置预览照片的大小(800*480);开始调用预览方法mCamera.startPreview();,publicvoidsurfaceDestroyed(SurfaceHolderholder)mCamera.stopPreview();mCamera.release();flag=false;mCamera=null;publicvoidOnfocus()if(mCamera!=null)mCamera.autoFocus(callback);privateAutoFocusCallbackcallback=newAutoFocusCallback()publicvoidonAutoFocus(booleansuccess,Cameracamera)if(success,释放照相机资源并停止拍照,用Onfocus()实现自动对焦Onfocus()的回调函数当成功对焦并且照像不为空时,调用setOneShotPreviewCallback()照相机重新启动,3、PictureTest.java,privatevoidinitView()Log.e(tag,begininit);surCameraView=(PictureSurfaceTest)findViewById(R.id.surfaceView);surretake=(PictureSurfaceTest)findViewById(R.id.surfaceView);frontview=(FrontView)findViewById(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)findViewById(R.id.imageview);surCameraView.previewcallback=previewcallback;mTimer=newTimer();mTimerTask=newMyTimerTask();mTimer.schedule(mTimerTask,0,200);,初始化函数,用来初始化各种控件,初始化定时器mTimer扫描的频率为200ms,publicvoidClickLietener()cancel.setOnClickListener(newOnClickListener()publicvoidonClick(Viewv)surCameraView.flag=false;mTimer.cancel();mTimerTask.cancel();frontview.init();finish(););retake.setOnClickListener(newOnClickListener()publicvoidonClick(Viewv)surCameraView.flag=true;mTimer=newTimer();mTimerTask=newMyTimerTask();mTimer.schedule(mTimerTask,0,200);surCameraView.Onfocus();textView.setText(null);frontview.init();imageView.setVisibility(ImageView.INVISIBLE););,关闭按钮,按下后退出程序,并且释放照相机资源和mTimerTask和Timer,重扫按钮,按下后初始化给种方法,并且取得照相机资源,把开始显示到的二维码信息抹除和把扫描到的二维码相片设置为不可见,这样我们就能看到一个初始化后的扫描界面,publicvoidrun()Log.e(tag,run执行);if(surCameraView.flag=true)surCameraView.Onfocus();elsesurCameraView.flag=false;mTimer.cancel();,线程run()方法中实现,当获得照相机资源时,调用自动对焦方法,否则的话,则释放照相机资源和mTimer资源,privateCamera.PreviewCallbackpreviewcallback=newCamera.PreviewCallback()publicvoidonPreviewFrame(bytedata,Cameraarg1)Log.e(tag,previewcallback);PlanarYUVLuminanceSourcesource=newPlanarYUVLuminanceSource(data,800,480,dsLeft,dstop,dswidth,dsheight);mbitmap=source.renderCroppedGreyscaleBitmap();/显示灰度图Matrixmatrix=newMatrix();matrix.setRotate(90);mbitmap=Bitmap.createBitmap(mbitmap,0,0,400,350,matrix,true);BinaryBitmapbitmap=newBinaryBitmap(newHybridBinarizer(source);MultiFormatReaderreader=newMultiFormatReader();tryResultresult=reader.decode(bitmap);StringstrResult=BarcodeFormat:+result.getBarcodeFormat().toString()+text:+result.getText();frontview.init();textView.setText(strResult);imageView.setImageBitmap(mbitmap);imageView.setVisibility(ImageVi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 幼儿园家园联系记录美篇
- 美容美发电商创新创业项目商业计划书
- 量子精密制造创新创业项目商业计划书
- 电竞战队数据分析师培训创新创业项目商业计划书
- 编程任务平台创新创业项目商业计划书
- 电子词典应用创新创业项目商业计划书
- 农业GIS地图服务创新创业项目商业计划书
- 化工企业无脚本演练范文(2篇)
- 河南九师联盟2026届高三上学期9月开学考地理试卷+答案
- 陕西省汉中市2026届高三上学期第一次校际联考试题 政治 含答案
- 小学五年级数学学科培优辅差专项计划
- 浙江省宁波市五校2024-2025学年高一上学期期中考试生物试卷(含答案)
- 2025云南昆明巫家坝建设发展有限责任公司及下属公司第三季度招聘23人笔试模拟试题及答案解析
- 轮滑教学课件
- 2025年机动车检验检测机构授权签字人考核试题及答案
- 王志乐合规管理课件
- 制药人员卫生培训
- 2025年部编版新教材语文八年级上册全册教案设计(含教学计划)
- 人教版新教材小学二年级《数学》上册新教材解读课件
- 家纺作业安全知识培训课件
- DSA术前术后护理要点
评论
0/150
提交评论