Android已有的原生Camera框架中加入自己的API的实现方案。
版权声明:本文为CSDN博主(天才2012)原创文章。未经博主同意不得转载。
https://blog.csdn.net/gzzaigcn/article/details/25707389
在过去的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的实现方案。的更多相关文章
- Struts2框架中使用Servlet的API示例
1. 在Action类中也可以获取到Servlet一些常用的API * 需求:提供JSP的表单页面的数据,在Action中使用Servlet的API接收到,然后保存到三个域对象中,最后再显示到JSP的 ...
- 在Struts2框架中使用Servlet的API
1. 在Action类中也可以获取到Servlet一些常用的API * 需求:提供JSP的表单页面的数据,在Action中使用Servlet的API接收到,然后保存到三个域对象中,最后再显示到JSP的 ...
- Android已上线应用开源分享中(第一季)
这是我上线的第一个android应用,在百度.腾讯.豌豆荚等平台测试通过,也有了部分用户,还是可以的啊,哈哈.现在分享给大家,当然,源码我也会分享. 1.软件是一个管理wifi的小工具 (1)查询.连 ...
- Android已上线应用开源分享中(第二季)
昨天和大家分享了我Android上线的第一个应用,大家还是挺支持的,很高兴,虽然作品没有那么高大上,但是很是有了一点小小的成就感,所以打算继续开源我上线的一些应用,和大家一起交流一下. 我这个作品是一 ...
- Pipelines - .NET中的新IO API指引(三) 边看边记
Pipelines - .NET中的新IO API指引 作者 marcgravell 原文 此系列前两篇网上已有的译文 Pipelines - .NET中的新IO API指引(一) Pipeline ...
- django框架实现restful风格的API开发
RESTful风格的要求:https://www.cnblogs.com/chichung/p/9933116.html 利用django原生的框架直接做RESTful的API开发是怎样的呢?感受一下 ...
- Android Multimedia框架总结(十四)Camera框架初识及自定义相机案例
转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52738492 前言:国庆节告一段 ...
- 修改Android 4.2.2的原生Camera引出的java.lang.UnsatisfiedLinkError: Native method not found,及解决方法
修改Android 4.2.2的原生Camera应用,做一些定制,将Camera的包名从之前的 package com.android.* 修改成了com.zhao3546.*. 调整后,应用可以正常 ...
- android 原生camera——设置模块修改
, 此篇博客是记一次客户需求修改,从上周五到现在正好一周时间,期间的各种酸爽,就不说了,还是来看大家关注的技术问题吧. 首先看下以前效果和修改后的效果: 修改前:修改后: 不知道有没有看明白,我在简单 ...
随机推荐
- spoj Prime Generator
题意:判断ll-rr范围内的质数. 一个个用miller-rabin算法判断 //#pragma comment(linker,"/STACK:1024000000,1024000000&q ...
- Android Studio apk打包,keystore.jks文件生成,根据keystore密钥获取SHA1安全码
keystore.jks文件生成,打包APK 选择Build > Generate Signed APK 出现如下弹框: 然后点击Create new...(创建的意思)出现另一个弹框,在做如下 ...
- robot framework学习笔记2
声明:本笔记都只是自己根据大牛虫师的robot系列文档学习记录的,学习的话还请移步虫师博客:https://www.cnblogs.com/fnng/ 非常感谢大牛的分享,带小白一步一步入门 F5 ...
- Oracle 11g dataguard check real time apply
2017年8月24日 16:38 环境:oracle 11.2.0.1 OEL-5.8 注:以下操作都在备库执行 总结方法: 1.FPYJ(125_7)@fpyj123> select open ...
- failed to load response data
当需要根据后台传回地址跳转页面时 即使使用preserve log 可以查看上一个页面获取地址请求,但是此时请求返回值为failed to load response data 当关闭页面跳转可以查看 ...
- 快照库MV不能成功刷新问题的解决
前几天,一个用户找到我,说他们的物化视图不能刷新了,这得从几天前主库的一次意外down机说起(另文说明),前几天,用户现场的一个中心库因某原因意外down掉了,当时短期内对中心库进行了重启修复,没有造 ...
- POJ 1753 bfs+位运算
T_T ++运算符和+1不一样.(i+1)%4 忘带小括号了.bfs函数是bool 型,忘记返回false时的情况了.噢....debug快哭了...... DESCRIPTION:求最少的步骤.使得 ...
- learning armbian steps(2) ----- armbian 镜像编译
参考:https://docs.armbian.com/Developer-Guide_Build-Preparation/ 通过如下指令进行编译: apt-get -y -qq install gi ...
- 快速切题 hdu2416 Treasure of the Chimp Island 搜索 解题报告
Treasure of the Chimp Island Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ( ...
- 教你如何打开android4.3和4.4中隐藏的AppOps
注:下面的方法在4.4.2更新后已失效! PreferenceActivity的switchToHeaderInner()函数中会调用isValidFragment函数来检查fragment是否合法. ...