版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于android平台的相机调用的研究与应用申洪健,肖凯山东建筑大学左岸团队济南252301摘要Google于2007年11月5日宣布的基于Linux平台的android系统-----首个为移动终端打造的真正开放和完整的移动软件。Android出身豪门,并以其完美的开放性获得了众多开发人员的青睐。在多媒体应用非常普及的今天,很多应用软件需要完成对手机内置相机的调用来实现软件的功能,在我们的左岸易记个人记账软件的储蓄罐模块中也需要实现调用手机内置摄像头的功能,本文正是在我们开发软件的基础上,对于android开发平台上对相机调用的一些认识和见解。内容主要有相机的调用、预览设置、图片设置及传输,并附上源码以供参考。关键词android;camera正文android平台由操作系统、中间件、用户界面和应用软件组成。它采用软件堆层的架构,主要分为三部分。底层以Linux内核工作为基础,由C语言开发,只提供基本功能;中间层包括函数库Library和虚拟机VirtualMachine,由C++开发。最上层是各种应用软件,包括通话程序,短信程序等,应用软件则由各公司自行开发,以Java作为编写程序的一部分。android提供了操作摄像头的API,可以通过两种做法来使用:通过Intent直接调用系统提供的照相机功能,复用它的拍照Activity,这是最简单和最方便的办法,因为你不需要考虑手机的兼容性问题,比如预览拍照图片大小等;Intentintent=newIntent();Intent.setAction(“android.media.action.STILL_IMAGE_CAMERA”);startActivity(intent);默认情况下,如果在intent中不做设置,也就是不写这部分:intent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(newFile(Environment.getExternalStorageDirectory(),"camera.jpg")));那么当从照相机Activity返回的时候,会带一个名为data的Bitmap对象。是照片的缩略图(这也是为什么有些照片会比较小的原因)。如果写上面的代码,则不会返回名为data的对象。但是会按照指定的路径保存原始图片。直接调用摄像头的API,自己编写类似取景框的Activity,这样灵活度更大,缺点是你需要考虑比较底层的东西。要知道android有多个版本,摄像头的分辨率也不一样,需要先获取当前相机的分辨率组合,然后再编写各种屏幕分辨率组合的布局。以下是具体的代码解析:importjava.io.IOException;importandroid.app.Activity;importandroid.content.Context;importandroid.graphics.PixelFormat;importandroid.hardware.Camera;importandroid.hardware.Camera.AutoFocusCallback;importandroid.hardware.Camera.PictureCallback;importandroid.os.Bundle;importandroid.view.KeyEvent;importandroid.view.MotionEvent;importandroid.view.SurfaceHolder;importandroid.view.SurfaceView;importandroid.view.Window;importandroid.view.ViewGroup.LayoutParams;importandroid.widget.ImageView;importandroid.widget.ImageView.ScaleType;publicclassCameraPreviewextendsActivity{ privatePreviewpreview; privateImageViewivFocus; publicvoidonCreate(BundlesavedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); preview=newPreview(this); setContentView(preview); ivFocus=newImageView(this); } publicbooleanonTouchEvent(MotionEventevent) { if(event.getAction()==MotionEvent.ACTION_DOWN) preview.takePicture(); returnsuper.onTouchEvent(event); } publicbooleanonKeyDown(intkeyCode,KeyEventevent) { if(keyCode==KeyEvent.KEYCODE_DPAD_CENTER) { //开始拍照 camera.startPreview(); //准备用于表示对焦状态的图像(对焦符号) ivFocus.setImageResource(R.drawable.icon); LayoutParamslayoutParams=newLayoutParams( LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT); ivFocus.setScaleType(ScaleType.CENTER); addContentView(ivFocus,layoutParams); ivFocus.setVisibility(VISIBLE); //自动对焦 camera.autoFocus(newAutoFocusCallback() { publicvoidonAutoFocus(booleansuccess,Cameracamera) { if(success) { //对焦成功,改变状态图像 ivFocus.setImageResource(R.drawable.camera); } } }); } catch(Exceptione) { } } //停止拍照,并将拍摄的照片传入PictureCallback接口的onPictureTaken方法 publicvoidtakePicture() { if(camera!=null) { camera.takePicture(null,null,pictureCallback); } } }}以上便是我们对于AndroidcameraAPI的一些浅显理解,希望能对大家开发Android应用程序的过程有所帮助,并恳请大家提出改进或分享一些相关的Android开发经验参考
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 主播聘用合同
- 二零二四年度版权许可使用合同(游戏软件)2篇
- 2024年度技术转让合同:某科研机构与科技公司之间的技术转让协议2篇
- 线虫病的临床护理
- 2024年度影视制作合同:制片公司与导演2篇
- 二零二四年度广告制作合同标的为一条电视广告的制作3篇
- 二零二四年度版权运用与管理合同3篇
- 《领导艺术概述》课件
- 2024年度浙江省丽水市二手房买卖及装修工程质量保证合同2篇
- 2024年度教育信息化设备采购与安装合同2篇
- 房屋建筑工程质量检测指引
- 小型割草机的设计
- 诉讼材料接收表
- 部编版四年级上册语文第二十六课《西门豹治邺》课文原文及练习题
- 卫生院紫外线消毒登记表
- 2023江苏“小高考”(化学)(2023江苏省普通高中学业水平测试-化学)
- 六年级上册数学课件-6.4 百分数与分数的互化丨苏教版 (共16张PPT)
- 《西游记》人物介绍PPT模板
- 2023届高三化学一轮复习电化学
- 项目部吊装作业审批表
- 发动机的构造知识课件
评论
0/150
提交评论