zoukankan      html  css  js  c++  java
  • 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直接定制到系统。在本项目中,后者的使用也带来了一定的便利性。

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

     

     

  • 相关阅读:
    CentOS安装配置Tomcat-7
    CentOS搭建VSFTP服务器
    使用DDMS测试安卓手机APP的性能(android)
    Linux常见问题及解决方案
    数据库版本控制工具:NeXtep Designer
    身份证号码编码规则
    无网络安装mysql步骤
    HTTP协议详解
    Jenkins持续集成构建
    Gulp和Webpack对比
  • 原文地址:https://www.cnblogs.com/llguanli/p/8645769.html
Copyright © 2011-2022 走看看