采用Android系統做産品時的定制化功能實現
Android系統在當今已經是無人不知無人不曉,其界面美觀、組件豐富、擴展性強、交互體驗好給我們帶來很多便利,這也讓Android系統的應用從我們熟知的手機、平闆、電視盒子等消費産品延伸到了專用産品市場,如醫療設備、美容儀器、考勤機、自助售貨機、點餐收銀系統,甚至工業HMI也可以見到Android的身影。
我們在産品開發時往往要對Android系統做産品化的定制,例如把開機logo換成自己公司的,讓産品的APP開機後能自動啟動,隐藏安卓系統的虛拟按鈕等。今天,我們基于iMX6Q 四核 FETMX6Q-C核心闆的Android4.4系統為例,完成對系統的定制化改造。
一、開機logo的修改
Android系統的logo分三個階段,uboot階段、kernel階段、文件系統階段。uboot和kernel階段的logo為靜态圖,文件系統階段的可以做動态圖。
FETMX6Q-C可以設置為uboot logo一直顯示到kernel,避免中間切換時有間隙,設置的方法可參考飛淩的《OKMX6Q-C Android手冊-3.1.4 設置logo從uboot連續顯示到内核》,那麼我們隻需要修改uboot階段的即可完成前兩個階段的logo修改。
1、logo文件的制作
1.1、制作靜态logo,例如用PS設計好開機logo圖片後,将其圖片參數按如下要求保存:
■ 文件格式:.bmp
■ 分辨率:根據所用顯示屏分辨率設計,例如480*800
■ 位深度:8
1.2、制作文件系統階段的動态logo,将一張動态圖的每一幀保存成一張圖片,圖片格式說明:
■ 格式:.png
■ 分辨:根據所用顯示屏分辨率設計,例如480*800
■ 位深:8
a、新建文件夾目錄bootanimation\part0,并将制作好的圖片放在此目錄下,按照順序命名,如:01.png、02.png……15.png。如果有兩組動态圖,可以新建一個part1文件夾,把第二組動态圖放在這個文件夾裡。
b、新建一個txt文件,放在bootanimation文件夾下,命名為desc.txt
■ 1280 800 15 --第一位圖片寬,第二位是圖片高,第三位是幀率也就是一秒播放多少幀(多少張圖片)。
■ p 1 0 part0----第二位表示part0部分也就是包含圖片的文件夾播放次數,第三位表示這部分播完後下部分開始的間隔,默認為0,第四位表示文件夾名稱
■ p 0 0 part1----同上但是第二位的0表示循環播放。
最好一行要換行,保存。
c、打包文件成 zip格式,壓縮方式為 存儲。
首先要在bootanimation文件夾中選中“part0” “part1”文件夾和“desc.txt”文件進行壓縮,而不是選中bootanimation文件夾壓縮。
2、logo的替換
2.1、uboot logo的替換不需要修改源碼,燒寫系統時和系統鏡像放在同一個目錄下燒寫進去即可。
如下圖:
2.2、文件系統階段的動态logo替換:
将剛才制作好的bootanimation.zip放到Android系統源碼的/system/media/路徑下,編譯系統後可以完成對開機動畫的修改。
二、APP自啟動
方法一:簡單講,過程是接收系統開機廣播,啟動APP
這種方法會在開機後先顯示一下Android桌面再打開用戶的APP,顯得不是那麼完美。這個方法就不推薦了,直接采用方法二吧。
方法二:将APP定義為LAUNCHER
制作Android APP時需要修改AndroidManfest.xml,在其中添加如下紅色内容:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
這樣将自己的APP安裝到Android終端裡,再次啟動闆子,系統會讓你選擇LAUNCHER程序,如果你選擇你自己開發的APP并選始終的話,你的APP就會在每次開機後自動啟動了。
三、強制隐藏底部按鈕和狀态欄
方法一:APP強制隐藏的方法
此方法需要獲取system權限,可以采用對APP簽名的方式獲取。
“簽名方法詳見:http://bbs.witech.com.cn/article-130-1.html”
應用實現示例代碼如下:
protected void hideBottomUIMenu() {
//隐藏虛拟按鍵,并且全屏
if (Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) { // lower api
View v = this.getWindow().getDecorView();
v.setSystemUiVisibility(View.GONE);
} else if (Build.VERSION.SDK_INT >= 19) {
Window _window = getWindow();
WindowManager.LayoutParams params = _window.getAttributes();
params.systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION|View.SYSTEM_UI_FLAG_IMMERSIVE;
_window.setAttributes(params);
}
}
方法二:修改Android系統源碼實現
1、去掉頂部狀态欄,修改
android_kk4.4.2_1.0.0/frameworks/base/core/res/res/values$ vim dimens.xml
将dip數值都改為0dip
2、去掉底部虛拟按鍵,修改
android_kk4.4.2_1.0.0/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone$ vim NavigationBarView.java
3、去掉自動鎖屏,修改
android_kk4.4.2_1.0.0/frameworks/base/packages/SettingsProvider/res/values$vim defaults.xml
将鎖屏使能改為true
照此做完,重新編譯安卓源碼,重新燒寫鏡像就OK了。
至此,我們完成了對Android系統的産品化定制改造。
相關産品 >
-
FETMX6Q-C核心闆
i.MX6Q核心闆闆層出不窮,要如何選擇?飛淩解讀i.mx6Q芯片強性能為您推薦四核A9架構的i.MX6Q産品精選,包含iMX6Q 核心闆、i.MX6Q 核心闆、iMX6Q工業級核心闆,歡迎采購。 i.MX6Q核心闆基于NXP(原Freescale)Cortex-A9架構的i.MX6Q四核處理器設計,核心闆小尺寸核心闆搭配獨特的薄款連接器,讓設計随心所欲!
了解詳情 -
OKMX6Q-C開發闆
雙千兆飛淩嵌入式iMX6Q開發闆,闆對闆連接器,纖薄之際,次底闆支持iMX6Q和iMX6DL核心闆。i.MX6Q開發闆與i.MX6DL開發闆資源豐富,原理圖、PCB、軟件資源、硬件資源下載,技術支持等。歡迎選購
了解詳情 -
FETMX6Q-S核心闆
NXP iMX6Quad系列具有四個内核,運行頻率達1.2 GHz,帶有1 MB L2緩存和64位DDR3或2通道、32位LPDDR2支持。飛淩提供商業級iMX6Q核心闆,工業級iMX6Q核心闆,兼容一同底闆。具有抗震,抗氧化,抗幹擾,更快速升級産品等優勢。保定飛淩嵌入式專注imx6,imx6開發闆,飛思卡爾imx6等ARM嵌入式核心控制系統研發、設計和生産,是imx6,imx6開發闆,飛思卡爾imx6提供者,imx6系列産品現已暢銷全國,歡迎咨詢!
了解詳情 -
OKMX6Q-S3開發闆
飛淩嵌入式提供iMX6Q開發闆,iMX6解決方案,iMX6Q核心闆,i.MX6Q開發闆解決方案。iMX6Q穩定、快速、性價比高,歡迎選購 NXP iMX6系列芯片全支持,升級簡配無憂替換。 了解詳情