采用Android系統(tǒng)做產(chǎn)品時(shí)的定制化功能實(shí)現(xiàn)

原創(chuàng) 2020-03-07 18:00:00 iMX6Q 開(kāi)機(jī)logo 系統(tǒng)源碼

采用Android系統(tǒng)做產(chǎn)品時(shí)的定制化功能實(shí)現(xiàn)

Android系統(tǒng)在當(dāng)今已經(jīng)是無(wú)人不知無(wú)人不曉,其界面美觀、組件豐富、擴(kuò)展性強(qiáng)、交互體驗(yàn)好給我們帶來(lái)很多便利,這也讓Android系統(tǒng)的應(yīng)用從我們熟知的手機(jī)、平板、電視盒子等消費(fèi)產(chǎn)品延伸到了專用產(chǎn)品市場(chǎng),如醫(yī)療設(shè)備、美容儀器、考勤機(jī)、自助售貨機(jī)、點(diǎn)餐收銀系統(tǒng),甚至工業(yè)HMI也可以見(jiàn)到Android的身影。

我們?cè)诋a(chǎn)品開(kāi)發(fā)時(shí)往往要對(duì)Android系統(tǒng)做產(chǎn)品化的定制,例如把開(kāi)機(jī)logo換成自己公司的,讓產(chǎn)品的APP開(kāi)機(jī)后能自動(dòng)啟動(dòng),隱藏安卓系統(tǒng)的虛擬按鈕等。今天,我們基于iMX6Q 四核 FETMX6Q-C核心板的Android4.4系統(tǒng)為例,完成對(duì)系統(tǒng)的定制化改造。


一、開(kāi)機(jī)logo的修改

Android系統(tǒng)的logo分三個(gè)階段,uboot階段、kernel階段、文件系統(tǒng)階段。uboot和kernel階段的logo為靜態(tài)圖,文件系統(tǒng)階段的可以做動(dòng)態(tài)圖。

FETMX6Q-C可以設(shè)置為uboot logo一直顯示到kernel,避免中間切換時(shí)有間隙,設(shè)置的方法可參考飛凌的《OKMX6Q-C Android手冊(cè)-3.1.4 設(shè)置logo從uboot連續(xù)顯示到內(nèi)核》,那么我們只需要修改uboot階段的即可完成前兩個(gè)階段的logo修改。

1、logo文件的制作

1.1、制作靜態(tài)logo,例如用PS設(shè)計(jì)好開(kāi)機(jī)logo圖片后,將其圖片參數(shù)按如下要求保存:

■ 文件格式:.bmp

■ 分辨率:根據(jù)所用顯示屏分辨率設(shè)計(jì),例如480*800

■ 位深度:8

1.2、制作文件系統(tǒng)階段的動(dòng)態(tài)logo,將一張動(dòng)態(tài)圖的每一幀保存成一張圖片,圖片格式說(shuō)明:

■ 格式:.png

■ 分辨:根據(jù)所用顯示屏分辨率設(shè)計(jì),例如480*800

■ 位深:8

a、新建文件夾目錄bootanimation\part0,并將制作好的圖片放在此目錄下,按照順序命名,如:01.png、02.png……15.png。如果有兩組動(dòng)態(tài)圖,可以新建一個(gè)part1文件夾,把第二組動(dòng)態(tài)圖放在這個(gè)文件夾里。

b、新建一個(gè)txt文件,放在bootanimation文件夾下,命名為desc.txt


采用Android系統(tǒng)做產(chǎn)品時(shí)的定制化功能實(shí)現(xiàn)

■ 1280 800 15 --第一位圖片寬,第二位是圖片高,第三位是幀率也就是一秒播放多少幀(多少?gòu)垐D片)。

■ p 1 0 part0----第二位表示part0部分也就是包含圖片的文件夾播放次數(shù),第三位表示這部分播完后下部分開(kāi)始的間隔,默認(rèn)為0,第四位表示文件夾名稱

■ p 0 0 part1----同上但是第二位的0表示循環(huán)播放。

最好一行要換行,保存。 

c、打包文件成 zip格式,壓縮方式為 存儲(chǔ)。

首先要在bootanimation文件夾中選中“part0” “part1”文件夾和“desc.txt”文件進(jìn)行壓縮,而不是選中bootanimation文件夾壓縮。

image.png采用Android系統(tǒng)做產(chǎn)品時(shí)的定制化功能實(shí)現(xiàn)

采用Android系統(tǒng)做產(chǎn)品時(shí)的定制化功能實(shí)現(xiàn)

2、logo的替換

2.1、uboot logo的替換不需要修改源碼,燒寫(xiě)系統(tǒng)時(shí)和系統(tǒng)鏡像放在同一個(gè)目錄下燒寫(xiě)進(jìn)去即可。

如下圖:

采用Android系統(tǒng)做產(chǎn)品時(shí)的定制化功能實(shí)現(xiàn)


2.2、文件系統(tǒng)階段的動(dòng)態(tài)logo替換:

將剛才制作好的bootanimation.zip放到Android系統(tǒng)源碼的/system/media/路徑下,編譯系統(tǒng)后可以完成對(duì)開(kāi)機(jī)動(dòng)畫(huà)的修改。

二、APP自啟動(dòng)

方法一:簡(jiǎn)單講,過(guò)程是接收系統(tǒng)開(kāi)機(jī)廣播,啟動(dòng)APP

這種方法會(huì)在開(kāi)機(jī)后先顯示一下Android桌面再打開(kāi)用戶的APP,顯得不是那么完美。這個(gè)方法就不推薦了,直接采用方法二吧。

方法二:將APP定義為L(zhǎng)AUNCHER

制作Android APP時(shí)需要修改AndroidManfest.xml,在其中添加如下紅色內(nèi)容:

<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終端里,再次啟動(dòng)板子,系統(tǒng)會(huì)讓你選擇LAUNCHER程序,如果你選擇你自己開(kāi)發(fā)的APP并選始終的話,你的APP就會(huì)在每次開(kāi)機(jī)后自動(dòng)啟動(dòng)了。

三、強(qiáng)制隱藏底部按鈕和狀態(tài)欄

方法一:APP強(qiáng)制隱藏的方法

此方法需要獲取system權(quán)限,可以采用對(duì)APP簽名的方式獲取。

“簽名方法詳見(jiàn):http://bbs.witech.com.cn/article-130-1.html

應(yīng)用實(shí)現(xiàn)示例代碼如下:

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系統(tǒng)源碼實(shí)現(xiàn)

1、去掉頂部狀態(tài)欄,修改

android_kk4.4.2_1.0.0/frameworks/base/core/res/res/values$ vim dimens.xml

采用Android系統(tǒng)做產(chǎn)品時(shí)的定制化功能實(shí)現(xiàn)


將dip數(shù)值都改為0dip

2、去掉底部虛擬按鍵,修改

android_kk4.4.2_1.0.0/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone$ vim NavigationBarView.java

采用Android系統(tǒng)做產(chǎn)品時(shí)的定制化功能實(shí)現(xiàn)

3、去掉自動(dòng)鎖屏,修改

android_kk4.4.2_1.0.0/frameworks/base/packages/SettingsProvider/res/values$vim defaults.xml

采用Android系統(tǒng)做產(chǎn)品時(shí)的定制化功能實(shí)現(xiàn)

將鎖屏使能改為true

照此做完,重新編譯安卓源碼,重新燒寫(xiě)鏡像就OK了。

至此,我們完成了對(duì)Android系統(tǒng)的產(chǎn)品化定制改造。


以上內(nèi)容硬件平臺(tái)為 四核  iMX6Q OKMX6Q-C 開(kāi)發(fā)板,其它硬件平臺(tái)可參考設(shè)計(jì)。

相關(guān)產(chǎn)品 >

  • FETMX6Q-C核心板

    i.MX6Q核心板板層出不窮,要如何選擇?飛凌解讀i.mx6Q芯片強(qiáng)性能為您推薦四核A9架構(gòu)的i.MX6Q產(chǎn)品精選,包含iMX6Q 核心板、i.MX6Q 核心板、iMX6Q工業(yè)級(jí)核心板,歡迎采購(gòu)。  i.MX6Q核心板基于NXP(原Freescale)Cortex-A9架構(gòu)的i.MX6Q四核處理器設(shè)計(jì),核心板小尺寸核心板搭配獨(dú)特的薄款連接器,讓設(shè)計(jì)隨心所欲!

    了解詳情
    FETMX6Q-C核心板
  • OKMX6Q-C開(kāi)發(fā)板

    雙千兆飛凌嵌入式iMX6Q開(kāi)發(fā)板,板對(duì)板連接器,纖薄之際,次底板支持iMX6Q和iMX6DL核心板。i.MX6Q開(kāi)發(fā)板與i.MX6DL開(kāi)發(fā)板資源豐富,原理圖、PCB、軟件資源、硬件資源下載,技術(shù)支持等。歡迎選購(gòu)

    了解詳情
    OKMX6Q-C開(kāi)發(fā)板
  • FETMX6Q-S核心板

    NXP iMX6Quad系列具有四個(gè)內(nèi)核,運(yùn)行頻率達(dá)1.2 GHz,帶有1 MB L2緩存和64位DDR3或2通道、32位LPDDR2支持。飛凌提供商業(yè)級(jí)iMX6Q核心板,工業(yè)級(jí)iMX6Q核心板,兼容一同底板。具有抗震,抗氧化,抗干擾,更快速升級(jí)產(chǎn)品等優(yōu)勢(shì)。保定飛凌嵌入式專注imx6,imx6開(kāi)發(fā)板,飛思卡爾imx6等ARM嵌入式核心控制系統(tǒng)研發(fā)、設(shè)計(jì)和生產(chǎn),是imx6,imx6開(kāi)發(fā)板,飛思卡爾imx6提供者,imx6系列產(chǎn)品現(xiàn)已暢銷全國(guó),歡迎咨詢!
    了解詳情
    FETMX6Q-S核心板
  • OKMX6Q-S3開(kāi)發(fā)板

    飛凌嵌入式提供iMX6Q開(kāi)發(fā)板,iMX6解決方案,iMX6Q核心板,i.MX6Q開(kāi)發(fā)板解決方案。iMX6Q穩(wěn)定、快速、性價(jià)比高,歡迎選購(gòu) NXP iMX6系列芯片全支持,升級(jí)簡(jiǎn)配無(wú)憂替換。 了解詳情
    OKMX6Q-S3開(kāi)發(fā)板

推薦閱讀 換一批 換一批