Android已有的原生Camera架構中添加自己的API的實現方案。

來源:互聯網
上載者:User

標籤:android   des   blog   class   code   java   

    在過去的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/basegit 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直接定製到系統。在本項目中,後者的使用也帶來了一定的便利性。

        自己定製系統的好處在於,無處不在的源碼不會讓你的開發以及想法不能繼續下去,當然你也不能違反規定進行胡亂的修改。一路走來,還是能發現閱讀代碼帶來的好處的:能加快代碼的再設計,以及業務流添加位置的定位以及最佳化等。
 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.