详细说明Android编程环境搭建过程

移动开发 Android
希望本文能给大家带来自己想要的信息,如果你对Android编程环境有简单的了解,那么看完本文后你一定会得到更多的信息的。

下面我们一起看一下在摄像头应用中如何使用这个接口,首先看一下在Android编程环境中的onCreate方法,看完本文你肯定有不少收获,希望本文能教会你更多东西。

前的智能手机拥有很多强大的功能,例如摄像头、GPS和无线上网等,现在是我们开始充分使用这些功能的时候了。在本篇文章中我们一起学习,如何在谷歌Android编程环境中,以最简单的方式实现谷歌Android摄像头拍照。

  1. super.onCreate(icicle);  
  2.  
  3.   getWindow().setFormat(PixelFormat.TRANSLUCENT);  
  4.  
  5.   requestWindowFeature(Window.FEATURE_NO_TITLE);  
  6.  
  7.   getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,  
  8.  
  9.   WindowManager.LayoutParams.FLAG_FULLSCREEN);  
  10.  
  11.   setContentView(R.layout.camera);  
  12.  
  13.   mSurfaceView = (SurfaceView) findViewById(R.id.surface_camera);  
  14.  
  15.   mSurfaceHolder = mSurfaceView.getHolder();  
  16.  
  17.   mSurfaceHolder.addCallback(this);  
  18.  
  19.   mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);  
  20.  
  21.   } 

在本文示例中,我们需要用到两个文件:布局文件和Activity文件。数日前,Android编程环境(代号cupcake)新版发布,在安全方面有诸多改进。其中之一与摄像头权限控制有关。在此之前,你能够创建无需用户许可就可实现拍照的应用。现在该问题已被修复,如果你想在自己的应用中使用摄像头,需要在AndroidManifest.xml中增加以下代码:

  1. super.onCreate(icicle);  
  2.  
  3.   getWindow().setFormat(PixelFormat.TRANSLUCENT);  
  4.  
  5.   requestWindowFeature(Window.FEATURE_NO_TITLE);  
  6.  
  7.   getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,  
  8.  
  9.   WindowManager.LayoutParams.FLAG_FULLSCREEN);  
  10.  
  11.   setContentView(R.layout.camera);  
  12.  
  13.   mSurfaceView = (SurfaceView) findViewById(R.id.surface_camera);  
  14.  
  15.   mSurfaceHolder = mSurfaceView.getHolder();  
  16.  
  17.   mSurfaceHolder.addCallback(this);  
  18.  
  19.   mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);  
  20.  
  21.   } 

这是开发工作的基础,也就是说我们希望在应用程序中增加多少辅助性元素,如摄像头各种功能按钮等。在本文中我们采取最简方式,除了拍照外,没有多余摄像头功能。下面我们一起看一下本文示例将要用到的布局文件“camera_surface.xml”。

小提示:记住不要在资源文件名称中使用大写字母,如果你把该文件命名为“CameraSurface.xml”,会给你带来不必要的麻烦。该布局非常简单,只有一个LinearLayout视图组,在它下面只有一个SurfaceView视图,也就是我们的摄像头屏幕。

该方法让摄像头做好拍照准备,设定它的参数,并开始在Android编程环境屏幕中启动预览画面。我使用了一个“semaphore”参数来防止冲突:当mPreviewRunning为true时,意味着摄像头处于激活状态,并未被关闭,因此我们可以使用它。

通过这个方法,我们停止摄像头,并释放相关的资源。正如大家所看到的,我们在这儿设置mPreviewRunning为false。以此来防止在surfaceChanged方法中的冲突。原因何在?因为这意味着我们已经关闭了摄像头,而且我们不能再设置其参数或在摄像头中启动图像预览。

【编辑推荐】

  1. 新一代的Android手机介绍 深度剖析Android SDK版本介绍
  2.  
  3. 谷歌Android手机能否站稳中国
  4. PythonAndroid深度剖析Android应用程序的四种构造块
  5. 探秘与众不同的Android系统?
责任编辑:chenqingxiang 来源: 清华大学出版社
相关推荐

2009-12-10 17:54:34

Visual Stud

2010-02-04 14:41:52

Android菜单类型

2010-02-04 15:20:50

Android SDK

2010-03-05 14:16:38

Android设计平台

2010-02-04 09:55:46

Android DEX

2010-03-03 18:17:01

Android手机服务

2010-02-06 17:43:51

Android应用

2010-02-06 15:53:55

2010-02-05 17:34:37

Android 2.1

2010-02-06 16:57:43

Android操作系统

2010-03-05 15:58:11

操作系统Android

2010-02-05 17:04:31

Android版本

2010-02-05 18:09:12

Android

2010-03-03 17:11:08

2009-12-28 09:26:09

ADO对象

2010-03-05 14:43:22

Android浏览器

2010-02-22 16:26:21

Python编辑

2014-09-16 09:57:56

INotifyProp

2010-07-21 13:17:52

Perl文件读写

2009-12-08 09:00:14

WCF线程
点赞
收藏

51CTO技术栈公众号