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——设置模块修改
, 此篇博客是记一次客户需求修改,从上周五到现在正好一周时间,期间的各种酸爽,就不说了,还是来看大家关注的技术问题吧. 首先看下以前效果和修改后的效果: 修改前:修改后: 不知道有没有看明白,我在简单 ...
随机推荐
- Android Studio使用Gradle引入包
方法一 jar包直接复制到lib中右击add as library,等自动构建完成后,打开build.gradle会发现dependencies中多了一个compile file('libs/***. ...
- 用Javascript 实现倒计时
用Javascript 实现倒计时<!DOCTYPE html> <html lang="en"> <head> <meta charse ...
- 让CLOVER默认引导WINDOWS
解决问题帖子: http://www.insanelymac.com/forum/topic/296000-force-clover-to-always-choose-win-81-efi-as-de ...
- python dict sorted 排序
https://www.cnblogs.com/linyawen/archive/2012/03/15/2398292.html 我们知道Python的内置dictionary数据类型是无序的,通过k ...
- win32com问题
py -3 -m pip install adodbapi win32com.__gen_path__, "dicts.dat" 问题解决 pip install xl ...
- Chrome nacl开启
Chrome nacl开启
- node.js express 4.x 安装指南 (找了很久呀,痛苦之路)
问题出现这,版本的问题,还有express4.0以上的版本启动node app.js指令的变更,蛋疼.参考这个
- Spring的DAO模块
Spring的DAO模块提供了对JDBC.Hibernate.JDO等DAO层支持. DAO模块依赖 commons-pool.jar.commons-collections.jar package ...
- 深入理解Linux网络技术内幕——PCI层和网络接口卡
概述 内核的PCI子系统(即PCI层)提供了不同设备一些通用的功能,以便简化各种设备驱动程序. PCI层重要结构体如下: pci_device_id 设备标识,根据PCI标志定 ...
- HackPwn:TCL智能洗衣机破解细节分析
上周结束的Hackpwn上,黑客们脑洞大开,破解了比亚迪汽车.小米手环.乐小宝.长虹电视.TCL洗衣机和九阳豆浆机等一系列最新的智能硬件,据黑客介绍,TCL是一家把家门“砌死”的企业,由于得到了将要被 ...