预览加载中,请您耐心等待几秒...
1/6
2/6
3/6
4/6
5/6
6/6

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

基于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);