time 
设为首页】【收藏本站
当前位置: 主页 > 电脑网络 > 操作系统 > 嵌入式 > Android > Android应用开发入门(六十一)调用系统照相机拍照与摄像示例

Android应用开发入门(六十一)调用系统照相机拍照与摄像示例

时间:2013-11-28 09:28 点击:1818次 字体:[ ]




前言

  在很多场景中,都需要用到摄像头去拍摄照片或视频,在照片或视频的基础之上进行处理。但是Android系统源码是开源的,很多设备厂商均可使用,并且定制比较混乱。一般而言,在需要用到摄像头拍照或摄像的时候,均会直接调用系统现有的相机应用,去进行拍照或摄像,我们只取它拍摄的结果进行处理,这样避免了不同设备的摄像头的一些细节问题。本文将介绍在Android应用中,如何调用系统现有的相机应用去拍摄照片与短片,并对其进行处理,最后均会以一个简单的Demo来演示效果。

  本文的主要内容如下:

  1. 系统现有相机应用的调用
  2. 系统现有相机拍摄照片
  3. 获取系统现有相机拍摄的图片
  4. 系统现有相机拍摄图片Demo
  5. 系统现有相机拍摄视频
  6. 系统现有相机拍摄视频Demo

系统现有相机应用的调用

  对于如何调用系统现有应用,之前就有讲解,这里简单再说一下。在开发的应用中调用系统现有应用,需要使用Intent指定开启的应用的Action和Category,然后通过startActivity(Intent)或者startActivityForResult(Intent,int)开启指定的Activity,如果使用startActivityForResult()方法开启并需要返回值,再重写onActivityResult(int,int,Intent)即可。

  先来看看系统现有相机应用的AndroidManifest.xml清单文件定义的Activity:

  1. <activity 
  2.             android:name="com.android.camera.Camera" 
  3.             android:clearTaskOnLaunch="true" 
  4.             android:configChanges="orientation|keyboardHidden" 
  5.             android:screenOrientation="landscape" 
  6.             android:taskAffinity="android.task.camera" 
  7.             android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" > 
  8.             <intent-filter> 
  9.                 <action android:name="android.intent.action.MAIN" /> 
  10.                 <categroy android:name="android.intent.category.DEFAULT" /> 
  11.                 <categroy android:name="android.intent.category.LAUNCHER" /> 
  12.             </intent-filter> 
  13.             <intent-filter> 
  14.                 <action android:name="android.media.action.IMAGE_CAPTURE" /> 
  15.                 <categroy android:name="android.intent.category.DEFAULT" /> 
  16.             </intent-filter> 
  17.             <intent-filter> 
  18.                 <action android:name="android.media.action.STILL_IMAGE_CAMERA" /> 
  19.                 <categroy android:name="android.intent.category.DEFAULT" /> 
  20.             </intent-filter> 
  21.         </activity> 
  22.         <activity 
  23.             android:name="com.android.camera.VideoCamera" 
  24.             android:clearTaskOnLaunch="true" 
  25.             android:configChanges="origientation|keyboardHidden" 
  26.             android:label="@string/video_camera_label" 
  27.             android:screenOrientation="landscape" 
  28.             android:taskAffinity="android.task.camcorder" 
  29.             android:theme="@android:style/theme.Black.NoTitleBar.Fullscreen" > 
  30.             <intent-filter> 
  31.                 <action android:name="android.media.action.VIDEO_CAMERA" /> 
  32.                 <categroy android:name="android.intent.category.DEFAULT" /> 
  33.             </intent-filter> 
  34.             <intent-filter> 
  35.                 <action android:name="android.media.action.VIDEO_CAPTURE" /> 
  36.                 <categroy android:name="android.intent.category.DEFAULT" /> 
  37.             </intent-filter> 
  38.         </activity> 

  它定义了两个Activity,com.android.camera.Camera表示照相机,com.android.camera.VideoCamera表示摄像机。从字面意思可以看出,为了捕获系统相机返回的数据,一般需要使用一下两个Action即可开启照相机与摄像机:

  • android.media.action.IMAGE_CAPTURE:Intent的Action类型,从现有的相机应用中请求一张图片。
  • android.media.action.VIDEO_CAPTURE:Intent的Action类型,从现有的相机应用中请求一段视频。

  上面两个参数,均在MediaStore类中以静态常量的形式定义好了,分别是:MediaStore.ACTION_IMAGE_CAPTURE(相机)MediaStore.ACTION_VIDEO_CAPTURE(摄像机)。



本文地址 : http://www.fengfly.com/plus/view-214101-1.html
标签: Android 应用开发 系统 拍照 照相机 摄像
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码: