众所周知,在Android中Camera采用了C/S架构,其中Camera server 与 Camera client之间通过Android Binder IPC机制进行通信.在Camera实现的框架中,除开HAL层以及驱动层以下是采用的C语言进行编写以外,其余的都是c++ 和java这两大经典面向对象的语言来实现的.网络上大部分的分析,是基于一个client端对server端的过程调用,一步一步的深入到驱动底层.而我自己,更愿意从对象的角度来分析camera的脉络.其实,整个Camera框架…
// 在面试中可能会遇到, 思想重要 // 比较两个对象是否是相等的 两个对象 // 1. js 中对象是无法使用 == 来比较的, 比是地址 // 2. 我们一般会定义如果对象的各个属性值都相等 那么对象就是相等的对象. 例如: {} 就与 {} 相等. // 算法描述 // 1. 假定对象 a 和 b // 2. 遍历 a 中的成员, 判断是否每一个 a 中的成员都在 b 中. 并且 与 b 中的对应成员相等. // 3. 再遍历 b 中的成员, 判断是否每一个 b 中的成员都在 a 中. …
前面已经分析过,Client端发起远程调用,而实际完成处理任务的,是Server端的 CameraClient 实例.远程client 和 server是两个不同的进程,它们使用binder作为通信工具,完成进程间的通信. 注:CameraClient定义如下: class CameraClient : public CameraService::Client { //... }; App需要对Camera进行各种操作,framework-java 和framework-c++ 都有对应的操作接…
Android Camera 采用C/S架构,client 与server两个独立的线程之间(CameraService)使用Binder通信. 一 CameraService的注册. 1.手机开机后,会走init.rc流程,init.rc会启动MediaServer Service. service media /system/bin/mediaserver class main user root #### # google default #### # user media #### gr…
本文是camera系列博客,上一篇是: android从应用到驱动之-camera(1)---程序调用流程 本来想用这一篇博客把cameraHAL的实现和流程都给写完的.搞了半天,东西实在是太多了.这篇先写cameraHAL的基本实现框架,下一篇在具体写camerahal的流程吧. cameraHAL的实现: 对于初学者来说,最大的疑问是系统是如何调用hardware的.这里就以camera来举例说明.调用hardware的程序是cameraservice,我们就去它里面看看它是如何找到hard…
一.开篇 写博客还得写开篇介绍,可惜,这个不是我所擅长的.就按我自己的想法写吧. 话说camera模块,从上层到底层一共包含着这么几个部分: 1.apk------java语言 2.camera的java接口----java语言 3.camera的java接口的具体实现,即所谓的JNI-----(java—>C++) 4.camera客户端-----C++语言 5.camera服务器----C++语言 6.camera硬件抽象层,即所谓的HAL------C++语言 7.camera驱动 如上也…
一.开篇 写博客还得写开篇介绍,可惜,这个不是我所擅长的.就按我自己的想法写吧. 话说camera模块,从上层到底层一共包含着这么几个部分: 1.apk------java语言 2.camera的java接口----java语言 3.camera的java接口的具体实现,即所谓的JNI-----(java—>C++) 4.camera客户端-----C++语言 5.camera服务器----C++语言 6.camera硬件抽象层,即所谓的HAL------C++语言 7.camera驱动 如上也…
如何调用本地图片,并调用系统拍摄的图像上一博文解释(http://blog.csdn.net/a123demi/article/details/40003695)的功能. 而本博文将通过实例实现自己定义Camera的功效.详细功能例如以下: 1.实现自己定义Camera拍照: 2.实现前后置摄像头的切换. 3.实现Camera拍照后图片缩小显示以及正常预览: 4.实现Camera拍照后图片保存: 在详细实现代码之前,我们先来了解一下Android api对实现自己定义Camera的介绍. 依据a…
关键词:android  camera CMM 模组 camera参数  GT2005 摄像头常见问题 平台信息: 内核:linux系统:android 平台:S5PV310(samsung exynos 4210) 作者:xubin341719(欢迎转载,请注明作者) android camera(一):camera模组CMM介绍 android camera(二):摄像头工作原理.s5PV310 摄像头接口(CAMIF) android camera(三):camera V4L2 FIMC…
关键词:android  camera CMM 模组 camera参数  CAMIF   V4L2  平台信息:内核:linux系统:android 平台:S5PV310(samsung exynos 4210) 作者:xubin341719(欢迎转载,请注明作者) android camera(一):camera模组CMM介绍 android camera(二):摄像头工作原理.s5PV310 摄像头接口(CAMIF) android camera(三):camera V4L2 FIMC an…
关键词:android  camera CMM 模组 camera参数平台信息:内核:linux系统:android 平台:S5PV310(samsung exynos 4210)  作者:xubin341719(欢迎转载,请注明作者) 下载:常用摄像头规格书(个别有android驱动程序)  :bf3703 30W.gc0308 30W.ov7670.gt2005 200W.gt2015 200W.NT99250 200W.s5k5ba 200W.s5k4ba 新项目开案,代码他们还没给得到,…
修改Android 4.2.2的原生Camera应用,做一些定制,将Camera的包名从之前的 package com.android.* 修改成了com.zhao3546.*. 调整后,应用可以正常运行,但是Camera自带的特效编辑等功能,无法正常使用.一点图片编辑的图标,就出现了下面的异常: 09-12 18:52:48.131: E/AndroidRuntime(6071): java.lang.UnsatisfiedLinkError: Native method not found:…
转自:https://blog.csdn.net/kevinx_xu/article/details/8821818 androidcmm图像处理工作手机三星 关键词:android  camera CMM 模组 camera参数平台信息:内核:linux系统:android 平台:S5PV310(samsung exynos 4210) 下载:常用摄像头规格书(个别有android驱动程序)  :bf3703 30W.gc0308 30W.ov7670.gt2005 200W.gt2015 2…
一.开篇 写博客还得写开篇介绍,可惜,这个不是我所擅长的.就按我自己的想法写吧. 话说camera模块,从上层到底层一共包含着这么几个部分: 1.apk------java语言 2.camera的java接口----java语言 3.camera的java接口的具体实现,即所谓的JNI-----(java—>C++) 4.camera客户端-----C++语言 5.camera服务器----C++语言 6.camera硬件抽象层,即所谓的HAL------C++语言 7.camera驱动 如上也…
源文链接:http://www.cnblogs.com/franksunny/archive/2011/11/17/2252926.html Android Camera 使用小结 Android手机关于Camera的使用,一是拍照,二是摄像,由于Android提供了强大的组件功能,为此对于在Android手机系统上进行Camera的开发,我们可以使用两类方法:一是借助Intent和MediaStroe调用系统Camera App程序来实现拍照和摄像功能,二是根据Camera API自写Came…
上一次讲解了一下startPreview过程,主要是为了画出一条大致的从上到下的线条,今天我们看一下Camera在Framework的sendCommand和dataCallback,这部分属于衔接过程,可以看到上下是如何交流沟通的. 首先,sendCommand Camera.java中并没有sendCommand方法,在Camera.cpp中存在sendCommand函数,所以这个sendCommand是从android_hardware_interface.cpp中开始使用的 androi…
Android5.0 Camera Framework 简介 CameraService启动 CameraService是在MediaServer启动过程中进行的 main_mediaserver.cpp (frameworks\av\media\mediaserver) ...... AudioFlinger::instantiate(); //audioflinger服务,音频相关 MediaPlayerService::instantiate(); //mediaplayerservice…
Android自动化测试之Monkeyrunner学习笔记(一) 因项目需要,开始研究Android自动化测试方法,对其中的一些工具.方法和框架做了一些简单的整理,其中包括Monkey.Monkeyrunner.Athrun.appium,目前仍在了解学习android测试框架.CTS等.本文主要为前段时间学习总结,由于刚接触不久,故本文难免会有些肤浅,大神请绕走~ [目录] 1.Monkeyrunner简介 2.Monkeyrunner工具特性 3.Monkeyrunner工具同Monkey工…
1.前面Android(java)学习笔记159提到Dalvik虚拟机启动初始化过程,就下来就是启动zygote进程: zygote进程是所有APK应用进程的父进程:每当执行一个Android应用程序,Zygote就会孵化一个子线程去执行该应用程序(系统内部执行dvz指令完成的)  Å特别注意:系统提供了一个app_process进程,它会自动启动ZygoteInit.java和SystemServer.java这两个类,app_process进程本质上是使用dalvikvm启动ZygoteIn…
Android中Binder学习(初始篇) 本篇博客学习自侯亮的博客.地址为: 红茶一杯话Binder 1 什么是Binder? 简单地说.Binder是Android平台上的一种跨进程交互技术. 该技术最早并非由Google公司提出的,它的前身是Be Inc公司开发的OpenBinder,并且在Palm中也有应用.后来OpenBinder的作者Dianne Hackborn增加了Google公司,并负责Android平台的开发工作,所以把这项技术也带进了Android. 我们知道.在Andro…
1. 前面Android(java)学习笔记159提到Dalvik虚拟机启动初始化过程,就下来就是启动zygote进程: zygote进程是所有APK应用进程的父进程:每当执行一个Android应用程序,Zygote就会孵化一个子线程去执行该应用程序(系统内部执行dvz指令完成的)  特别注意:系统提供了一个app_process进程,它会自动启动ZygoteInit.java和SystemServer.java这两个类,app_process进程本质上是使用dalvikvm启动ZygoteIn…
原文:Android Camera2 拍照入门学习 学习资料: 肾虚将军android camera2 详解说明 极客学院android.hardware.camera2 使用指南 Android 5.0(21)之后,android.hardware.Camera被废弃(下面称为Camera1),还有一个android.graphics.Camera,这个android.graphics.Camera不是用来照相的,是用来处理图像的,可以做出3D的图像效果之类的,之前的Camera1则由andr…
前言 时至今日,短视频App可谓是如日中天,一片兴兴向荣.随着短视频的兴起,音视频开发也越来越受到重视,而且薪资水涨船高,以一线城市为例,音视频工程开发的薪资比Android应用层开发高出40%. 但是由于音视频开发涉及知识面比较广,入门门槛相对较高,让许许多多开发者望而生畏. 虽然网上有很多的博文总结了音视频打怪升级的路线,但是音视频开发相关的知识都相对独立,有讲"音视频解码相关"的,有讲"OpenGL相关"的,也有讲"FFmpeg相关的",但…
此篇笔记基于sc7731 - android 5.1,对lcd的gralloc库做一个简明笔记. 第一部分 调用gralloc.sc8830.so所谓的Gralloc模块,它就是一个模块,一个操作kernel层framebuffer驱动的动态库模块,它属于大名鼎鼎的HAL层.用的时候就加载到内存空间,不用的时候就从内存空间中卸载掉.下面看下系统如何将该模块加载到内存空间的.在Android系统中,所有访问HAL层模块的应用,都需要通过一个叫 hw_get_module() 的方法去获得需要的HA…
此篇笔记基于sc7731 - android 5.1,对lcd的framebuffer做一个简明笔记. 一共分为两大部分:第一部分,关于LCD的硬件方面的:第二部分,关于lcd核心处理(framebuffer)部分的. 第一部分,LCD硬件相关的 一.液晶 液晶是一种高分子有机材料.当给它加上直流电场后,原本有序的分子排列被打乱,一部分液晶变得不透明,颜色加深,便因此显示出字符和图形. 液晶的光电效应:干涉.散射.衍射.旋光.吸收等. 二.LCD种类 1. 构造: 使用两块玻璃板夹着一块液晶:一…
1.系统相册默认保存地址:android.os.Environment.getExternalStorageDirectory().getAbsolutePath() + "/DCIM/Camera"; File[] list = file.listFiles(new FileFilter() { @Override public boolean accept(File pathname) { if (pathname.lastModified() > maxTime) retu…
Android 系统研究:http://blog.csdn.net/luoshengyang/article/details/8923485 Android 腾讯技术人员博客 http://hukai.me/ Linux:  https://github.com/torvalds/linux Android: https://github.com/android Android 官方资源:https://github.com/kesenhoo Android 技术开发周报:http://www.…
基于展讯sc7731 - Android 5.1 代码分析浏览.将屏蔽细节,把握整体,并且不涉及其他设备和LCD的交互. 以下对sc7731 lcd大体流程进行简要说明. 第一,lcd 的两个阶段 1. 在uboot引导系统阶段,大约1~5秒左右,需要打印一个厂商log.这里对驱动要求非常简单,只要能打印log即可. (下面皆以lcd_ili9486e_mipi.c为例)  驱动文件放置路径: u-boot64/drivers/video/sprdfb/lcd/ 添加新屏时需要修改的文件分别为:…
1. 线程池简介  多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力.     假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁线程时间. 如果:T1 + T3 远大于 T2,则可以采用线程池,以提高服务器性能.                一个线程池包括以下四个基本组成部分:                1.线程池管理器(ThreadPool):用于创建并管理线程池,包括 创建线…
1. 由于android没有自带的gif动画,我在Android(java)学习笔记198:Android下的帧动画(Drawable Animation) 播客中提到可以使用AnimationView(帧动画)方法先将一个gif动画利用软件分割成若干静态图片,然后按照一定的时间间隔和播放顺序一帧一帧播放图片,从而给用户体验仿佛是动画gif播放的效果 2.其实网上的开源项目中有更为完善的gif动画播放的代码,下面以此为例进一步了解开源项目的使用: (1)在https://github.com/网…