Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android已有的原生Camera框架中添加自己的API的實現方案。

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

編輯:關於Android編程

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

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

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved