原文地址:http://android.xsoftlab.net/training/camera/videobasics.html

这节课解释了如何通过已有的相机应用拍摄视频。

假设你的程序含有摄像功能,但是它只是程序很小的一部分功能,你并不想在这么小的功能上花费很大的精力。幸运的是,大多数的安卓设备已经内置了一款相机应用,并且它可以拍摄视频。这节课将会展示如何拍摄视频。

请求相机权限

为了告知系统程序是基于相机的,需要在清单文件中添加 标签。

<manifest ... ><uses-feature android:name="android.hardware.camera"android:required="true" />...
</manifest>

如果程序需要使用,但是为了整个功能而不强制要求相机,那么可以设置android:required为false。这样做的话,Google Play会允许不带相机的设备下载你的程序。不过你有责任需要在运行时通过调用hasSystemFeature(PackageManager.FEATURE_CAMERA)方法检查设备上的相机是否可用。如果相机是不可用的,你应该禁用掉与相机相关的功能。

通过相机APP摄像

Android通过授权的方式让其他程序通过调用一个Intent来描述你想要做的事情。这个过程包含了三块:Intent本身,一个启动外部Activity的调用,以及一些当焦点返回Activity时处理图像数据的代码。

下面代码的功能用于调用一个意图来捕获视频:

static final int REQUEST_VIDEO_CAPTURE = 1;
private void dispatchTakeVideoIntent() {Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);if (takeVideoIntent.resolveActivity(getPackageManager()) != null) {startActivityForResult(takeVideoIntent, REQUEST_VIDEO_CAPTURE);}
}

要注意,startActivityForResult()方法被一个调用resolveActivity()方法的条件所保护,这个方法返回了可以处理这个Intent的第一个Activity组件。执行这项检查是非常重要的,因为如果你调用startActivityForResult()方法所使用的Intent没有APP可以处理的话,那么你的APP将会崩溃。所以只要结果不是null,那么就意味着可以安全使用这个Intent。

查看视频

Android的相机应用会通过onActivityResult()方法将视频返回,视频位于onActivityResult()方法的回调参数Intent中的Uri所指向的位置。下面的代码展示了接收这个视频并且在VideoView中播放它。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {if (requestCode == REQUEST_VIDEO_CAPTURE && resultCode == RESULT_OK) {Uri videoUri = intent.getData();mVideoView.setVideoURI(videoUri);}
}

Android官方开发文档Training系列课程中文版:调用相机之简单摄像相关推荐

  1. Android官方开发文档Training系列课程中文版:目录

    原文地址 : http://android.xsoftlab.net/training/index.html 引言 在翻译了一篇安卓的官方文档之后,我觉得应该做一件事情,就是把安卓的整篇训练课程全部翻 ...

  2. Android官方开发文档Training系列课程中文版:创建自定义View之View的创建

    原文地址:http://android.xsoftlab.net/training/custom-views/index.html 引言 Android框架含有大量的View类,这些类用来显示各式各样 ...

  3. Android官方开发文档Training系列课程中文版:OpenGL绘图之图形绘制

    原文地址:http://android.xsoftlab.net/training/graphics/opengl/draw.html 如果你还不清楚如何定义图形及坐标系统,请移步:Android官方 ...

  4. Android官方开发文档Training系列课程中文版:使用Fragment构建动态UI之Fragment创建

    原文地址:http://android.xsoftlab.net/training/basics/fragments/index.html 导言 为了在Android中创建动态的多面板用户界面,你需要 ...

  5. Android官方开发文档Training系列课程中文版:性能优化建议

    原文地址:http://android.xsoftlab.net/training/articles/perf-tips.html 本篇文章主要介绍那些可以提升整体性能的微小优化点.它与那些能突然改观 ...

  6. Android官方开发文档Training系列课程中文版:调用相机之控制相机

    原文地址:http://android.xsoftlab.net/training/camera/cameradirect.html 在这节课,我们会讨论如何使用Android框架API来直接控制相机 ...

  7. Android官方开发文档Training系列课程中文版:电池续航时间优化之按需开启广播接收器

    原文地址:http://android.xsoftlab.net/training/monitoring-device-state/manifest-receivers.html 监测设备状态变化最简 ...

  8. Android官方开发文档Training系列课程中文版:打印内容之图像打印

    原文地址:http://android.xsoftlab.net/training/printing/index.html 引言 Android用户会很频繁的浏览设备上的内容,但是有部分情况例外,当屏 ...

  9. Android官方开发文档Training系列课程中文版:分享文件之配置文件共享

    原文地址:http://android.xsoftlab.net/training/secure-file-sharing/index.html 导言 APP经常需要给其它的APP提供一个或多个文件. ...

最新文章

  1. 文件名转换为utf8 c语言,文件名编码转换:从 gb* 转向 utf8 必备工具 convmv
  2. 小白学python系列-(3)基础数量类型
  3. UART接口与COM口的区别
  4. 为Windows mobile编写设计友好的控件[Writing designer friendly controls for Windows Mobile]
  5. DNN网站出现服务不可用
  6. Nginx基于域名的虚拟主机
  7. python语言语句块标记是_Python的基本语法——语句块
  8. SDUT 1149 勾股定理第一弹 勾股数
  9. Asp.Net MVC控制器、控制器动作和动作结果
  10. 机器学习基础:交叉熵损失(Machine Learning Fundamentals: Cross Entropy Loss)
  11. java中this用法
  12. bt4-pre-final下用spoonwep+spoonwpa破解wep或wpa加密的无线网络
  13. 【废了-准备删除01】渗透测试靶机搭建——基于WAMP的drupal7.x管理系统
  14. Nginx 限流的天坑
  15. spark整合hive
  16. 用pygame做经典坦克大战游戏(附源码)
  17. 基于BP神经网络的多因素房屋价格预测matlab仿真
  18. ubuntu linux通过rclone 挂载onedrive 到本地磁盘
  19. 一位工作8年程序员的成长感悟,值得深思
  20. 20年9月wust招新赛writeup

热门文章

  1. STL中map的使用要点
  2. 我最近在学微信小程序开发,一起吗?
  3. STM32 ADC 单次模式、连续模式、扫描模式(转载)
  4. mysql把select结果存到变量中_mysql实例 select into保存到变量的例子
  5. jquery点击事件传值加载页面_jQuery添加options点击事件并传值
  6. python多继承_python作用域和多继承
  7. LeetCode 1147. 段式回文(贪心)
  8. LeetCode 241. 为运算表达式设计优先级(动态规划)
  9. LeetCode 942. 增减字符串匹配
  10. poj 1250 解题(链表法)