Android Camera 系统框架分析

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

一、在android中开发人员可以做那些工作?

应用程序开发:利用android提供的强大的sdk,开发出各种各样新颖的应用。

系统开发:在android中Google实现了与硬件无关的所有代码,但是与硬件密切相关的硬件抽象层却没有也无法提供,对于移动设备不同的设备提供商 底层硬件是千变万化的,不可能提供统一的硬件驱动以及接口实现,只能提供标准的接口,因此硬件提供商需要自个儿开发设备驱动,

并去实现android框架提供的接口。

二、android框架中Camera系统源码分析

在每个android手机中都有一个Camera应用程序用来实现拍照功能,不同硬件提供商可能会对这个应用程序进行改变来适合自己的UI风格,

这里仅仅分析android原生Camera应用以及框架(Android 4.0)

原生Camera应用代码在Camera.java(android4.0\packages\apps\camera\src\com\android\camera),这个应该算是Camera系统最上层,应用层的实现。

下面是Camera类部分代码

public class Camera extends ActivityBase implements FocusManager.Listener,

View.OnTouchListener, ShutterButton.OnShutterButtonListener,

SurfaceHolder.Callback, ModePicker.OnModeChangeListener,

FaceDetectionListener, CameraPreference.OnPreferenceChangedListener,

LocationManager.Listener, ShutterButton.OnShutterButtonLongPressListener

从上面可以看出,Camera在继承了很多监听接口,用来监听各种事件(对焦事件、用户触摸事件等)。这个应用时继承ActivityBase,

可以重载OnCreate、OnResume等接口,在这些接口中完成相关初始化的工作,基本就是初始化各种监听对象,以及获取相机参数等相关。

比较关键的在 doOnResume这个函数中:

@Override

protected void doOnResume() {

if (mOpenCameraFail || mCameraDisabled) return;

mPausing = false;

mJpegPictureCallbackTime = 0;

mZoomValue = 0;

// Start the preview if it is not started.

if (mCameraState == PREVIEW_STOPPED) {

try {

mCameraDevice = Util.openCamera(this, mCameraId);

initializeCapabilities();

resetExposureCompensation();

startPreview();

if (mFirstTimeInitialized) startFaceDetection();

} catch (CameraHardwareException e) {

Util.showErrorAndFinish(this, R.string.cannot_connect_camera);

return;

} catch (CameraDisabledException e) {

Util.showErrorAndFinish(this, R.string.camera_disabled);

return;

}

}

if (mSurfaceHolder != null) {

// If first time initialization is not finished, put it in the

// message queue.

if (!mFirstTimeInitialized) {

mHandler.sendEmptyMessage(FIRST_TIME_INIT);

} else {

initializeSecondTime();

}

}

keepScreenOnAwhile();

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

人工智能实验室
相关文章相关文章
  • Michael I. Jordan带你解读百万奖金ATEC蚂蚁人工智能大赛

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

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

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

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

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

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

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

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

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

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

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

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