Android已有的原生Camera框架中添加自己的API的实现方案。

在过去的2个月里,基本定制并评估完了项目所需要的基本需求,围绕着全志A31和Android4.2.2来实现。最近由于需要,在修改他的Camera的架构中,需要应用程序给HAL透传一个参数来控制底层图像处理算法的实现,即需要提供一个合理的API供APP的开发使用。

起初想到的,最简单有效的方法就是重新定制SDK,但不断遇到的问题,使得最终切换了部分的思路,但核心没有发生变化。

Android系统的架构层次分明,在复杂的架构中往往理解以后会变得十分的简单,现在看来,过去2个多月的时间基本把Camera架构和SurfaceFlinger这两者有了基本的深入理解,无论是控制流还是数据流,基本都可以定位到源码的位置,也对最低层的HAL进行了算法的添加,同时最核心的是完成了对A31 Resize模块的合理调度。

方案1:

1.在Camera.java中添加一个新的API函数,供APP开发。

2.进行API的更新:make update-api;

3.对源码进行SDK编译,产生新的android.jar。替换sdk,供eclipse下的APP开发

4. 手动安装编译后的APK。

问题:android4.2.2源码制作SDK会有一个天然的Bug,解决方法如下:

cd frameworks/base
git revert 5f9922d7c3bce158e4c7a58929d4075e7c91e32e

但鉴于源码仓库不是自己同步所得,故无法进行git操作。目前也不知道这个是否可以彻底解决这个bug的所在。

方案2:

1.在Camera.java中添加一个新的API函数,供APP开发。

2. 进行make update-api的更新。

3.添加带有新的API到APP,并加入到/package/apps/下,只保留/res,/src, AndroidManifest.xml文件,添加如下的Android.mk:

 LOCAL_PATH:= $(call my-dir)
 include $(CLEAR_VARS)

 LOCAL_MODULE_TAGS := optional

 LOCAL_SRC_FILES := $(call all-subdir-java-files)

 LOCAL_PACKAGE_NAME := A31Camera

 LOCAL_PROGUARD_ENABLED := full

 include $(BUILD_PACKAGE)

4.修改/build/target/product下面的sdk.mk函数

如下添加一行代码,使得自己的APP作为系统默认的APP应用:

PRODUCT_PACKAGES := 	Calculator 	DeskClock 	Email2 	Exchange2 	FusedLocation 	Gallery 	Music 	Mms 	OpenWnn 	libWnnEngDic 	libWnnJpnDic 	libwnndict 	Phone 	PinyinIME 	Protips 	SoftKeyboard 	SystemUI 	Launcher2 	Development 	DevelopmentSettings 	DrmProvider 	Fallback 	Settings 	SdkSetup 	CustomLocale 	sqlite3 	InputDevices 	LatinIME 	CertInstaller 	LiveWallpapersPicker 	ApiDemos 	GestureBuilder 	CubeLiveWallpapers 	QuickSearchBox 	WidgetPreview 	monkeyrunner 	guavalib 	jsr305lib 	jython 	jsilver 	librs_jni 	ConnectivityTest 	GpsLocationTest 	CalendarProvider 	Calendar 	SmokeTest 	SmokeTestApp 	rild 	LegacyCamera 	A31Camera

5.make -j8 生成新的system.img。也完成了新的系统APP的定制。

以上两种方案,前者可以加快app的开发,后者可以完成app直接定制到系统。在本项目中,后者的使用也带来了一定的便利性。

自己定制系统的好处在于,无处不在的源码不会让你的开发以及想法不能继续下去,当然你也不能违反规定进行胡乱的修改。一路走来,还是能发现阅读代码带来的好处的:能加快代码的再设计,以及业务流添加位置的定位以及优化等。

Android已有的原生Camera框架中添加自己的API的实现方案。

时间: 2024-10-25 22:24:03

Android已有的原生Camera框架中添加自己的API的实现方案。的相关文章

Android已上线应用开源分享中(第一季)

这是我上线的第一个android应用,在百度.腾讯.豌豆荚等平台测试通过,也有了部分用户,还是可以的啊,哈哈.现在分享给大家,当然,源码我也会分享. 1.软件是一个管理wifi的小工具 (1)查询.连接周围wifi信号,查看当前使用的wifi信号的基本信息(wifi名称.信号强度等) (2)管理使用过的wifi信号,可以设置不同信号的优先级,在开启自动连接wifi服务的功能时,系统会按照设置的优先级自动连接当前可用wifi信号中优先级最高的信号.其中设置屏蔽的信号不会被连接. (3)查看周围wi

Android笔记:TextView和编辑框中添加图片,ImageSpan,SpannableStringBuilder用法

在TextView或者编辑框EditText中添加图片的方法,代码如下: import java.util.regex.Matcher; import java.util.regex.Pattern; import android.os.Bundle; import android.app.Activity; import android.text.Spannable; import android.text.SpannableStringBuilder; import android.text

在Struts2框架中使用Servlet的API

1. 在Action类中也可以获取到Servlet一些常用的API * 需求:提供JSP的表单页面的数据,在Action中使用Servlet的API接收到,然后保存到三个域对象中,最后再显示到JSP的页面上. * 提供JSP注册的页面,演示下面这三种方式 <h3>注册页面</h3> <form action="${ pageContext.request.contextPath }/xxx.action" method="post"&g

[转]Android使用WebView从相册/拍照中添加图片

原地址:http://blog.csdn.net/djcken/article/details/46379929 解决这个问题花了很长时间搜索了解,网上大部分使用openFileChooser但都没解决一个存在的问题.就是当弹出选择图片/相机框之后,取消选择,就再也不能点击选择按钮了.这篇文章是为了记录这一点,为验证整个流程部署了后端,但是由于很久没接触后端,后端代码是网上的列子,所以后端代码和部署就不说了.单纯的说下Android端的解决方案. 自定义两个文件: [java] view pla

Android已上线应用开源分享中(第二季)

昨天和大家分享了我Android上线的第一个应用,大家还是挺支持的,很高兴,虽然作品没有那么高大上,但是很是有了一点小小的成就感,所以打算继续开源我上线的一些应用,和大家一起交流一下. 我这个作品是一款基于地图的移动定位软件,可以用于老婆对老公.父母对孩子.孩子对老人等多种情况的实时位置查询服务. 代码我放在了git china上,很长一段时间放在首页推荐,还有点受宠若惊的感觉.最近也完善了一个版本,在各个平台也发布了,当然暂时用户还不多.我感觉这个软件是防小三小四的好东西,哈哈.慢慢宣传吧,=

Pipelines - .NET中的新IO API指引(三) 边看边记

Pipelines - .NET中的新IO API指引 作者 marcgravell  原文 此系列前两篇网上已有的译文 Pipelines - .NET中的新IO API指引(一) Pipelines - .NET中的新IO API指引(二) 关于System.IO.Pipelines的一篇说明 System.IO.Pipelines: .NET高性能IO 本篇不是翻译,边看边译边记而已. System.IO.Pipelines 是对IO的统一抽象,文件.com口.网络等等,重点在于让调用者注

Android Multimedia框架总结(十四)Camera框架初识及自定义相机案例

转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52738492 前言:国庆节告一段落,又是新一月,上月主要是围绕MediaPlayer相关展开,从今天开始,开始分析多媒体框架中的Camera模块,看下今天的Agenda: Camera拍照 Camera录像 新API android.hardware.camera2 新旧API特点对比 Camera自定义相机 新API andro

在ns2.35中添加myevalvid框架

在用ns2进行网络视频通信仿真的时候,先要为我们自己的ns2添加evalvid或者myevalvid框架.其中myevalvid框架是由柯志亨老师整合evalvid和ns2之后得出的新框架,笔者建议大家安装该框架,而不要安装原生的evalvid框架.这样就可以结合柯志亨老师的<ns2仿真实验-----多媒体和无线网络通信>这本书,做配套的实验,比较方便. 网上关于myevalvid框架的安装文章很多,大家可以参考去做,笔者会在本文最后给出相关的链接.本文主要是对myevalvid框架源码中的错

Android应用中使用百度地图API并添加标注(一)

网上一些资料这种的内容已经过时了,这里是最新的内容,如果哪里不对,请吐槽... 1)下载百度地图移动版API(Android)开发包 要在Android应用中使用百度地图API,就需要在工程中引用百度地图API开发包,这个开发包包含两个文件: 下载地址:http://pan.baidu.com/s/1i31enrB 2)申请API Key //包名 格式:例如:B7:6C:CF:E2:47:50:9B:3E:34:F7:08:72:F3:AC:F1:BE:55:D3:77:FB;com.maji