Android开发学习之以Camera方式实现相机功能(一)——快速实现相机

  次阅读 来源:互联网(转载协议) 2015-09-29 10:11 我要评论(0)

今天无意当中发现在《Android开发学习之基于ZBar实现微信扫一扫》中的一部分代码可以用来以硬件方式实现一个照相机的功能,在《Android开发学习之调用系统相机完成拍照的实现》中我们是以Intent方式调用系统内置的相机来完成拍照的,今天呢,就让我们来以Camera类为核心来开发自己的相机应用吧。在Android的官方文档中,以硬件方式定制相机应用的步骤如下:

1. 检查和访问Camera

创建代码来检查Camera和所申请访问的存在性;

2. 创建一个预览类

继承SurfaceView来创建一个Camera的预览类,并实现SurfaceHolder接口。这个类用来预览来自Camera的实施图像。

3. 构建一个预览布局

一旦有了Camera预览类,就可以把这个预览类和你想要的用户界面控制结合在一起来创建一个视图布局。

4. 针对采集建立监听

把监听器与响应用户动作(如按下按钮)的界面控制连接到一起来启动图像或视频的采集。

5. 采集和保存文件

针对真正采集的图片或视频,以及输出的保存来编写代码

6. 释放Camera

使用Camera之后,你的应用程序必须释放Camera,以便其他应用程序能够使用。

Camera硬件是一个必须要认真管理的共享资源,因此你的应用程序在使用它时,不能跟其他应用程序发生冲突。下文将讨论如何检查Camera硬件、如何申请对Camera的访问,如何采集图片和视频,以及在应用使用完成后如何释放Camera。

警告:在应用程序使用完Camera时,要记住通过调用Camera.release()方法来释放Camera对象。如果你的应用程序没有正确的释放Camera,所有的后续的视图对Camera的访问,包括你自己的应用程序,都会失败,并可能到你的或其他的应用程序关闭。

下面我们就来按照上面的步骤来一步步的制作一个属于自己的相机应用吧!

第一步:检查和访问相机

/** 官方建议的安全地访问摄像头的方法**/

public static Camera getCameraInstance(){

Camera c = null;

try {

c = Camera.open();

}

catch (Exception e){

Log.d("TAG", "Error is "+e.getMessage());

}

return c;

}

/** 检查设备是否支持摄像头**/

private boolean CheckCameraHardware(Context mContext)

{

if (mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA))

{

// 摄像头存在

return true;

} else {

// 摄像头不存在

return false;

}

}

第二步:创建一个预览类。这里我们使用的是官方API中提供的一个基本的预览类:

package com.android.OpenCamera;

import java.io.IOException;

import android.annotation.SuppressLint;

import android.content.Context;

import android.hardware.Camera;

import android.util.Log;

import android.view.SurfaceHolder;

import android.view.SurfaceView;

/** 一个基本的相机预览界面类**/

本站部分文章来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • teamLab创始人猪子寿之: 抛去衣食住行,我还剩下什么?

    teamLab创始人猪子寿之: 抛去衣食住行,我还剩下什么?

  • 2018深圳国际人工智能展览会 2018 shenzhen International Artif

    2018深圳国际人工智能展览会 2018 shenzhen International Artif

  • Oculus公布原型机,大幅度提升可视角,能实现140°的视场水平

    Oculus公布原型机,大幅度提升可视角,能实现140°的视场水平

  • Michael I. Jordan带你解读百万奖金ATEC蚂蚁人工智能大赛

    Michael I. Jordan带你解读百万奖金ATEC蚂蚁人工智能大赛

网友点评网友点评
阅读推荐阅读推荐

据外媒报道,STEER打造了首款完全自动驾驶停车技术,旨在使常规车辆转变为无人驾驶车辆。STEER的首款技术应用是4级自动驾驶及网络安全停车...

近日,美国软性机器抓手制造商 Soft Robotics 宣布,获得 2000 万美元的融资,本轮投资者包括 Scale Venture Partners,Calibrate Ventures...

据外媒报道,加州车管局发布了《2017自动驾驶脱离报告(California Autonomous Vehicle Disengagement Reports)》,其中谈及了脱离的具体...

用人机语音交互,来解决智能家居适老的问题;通过家庭门禁与安防套件、空气净化套件、可燃气体与有害气体监控套件等相互联动,在不同生活情...