采用Android系统做产品时的定制化功能实现

原创 2020-03-07 18:00:00 iMX6Q 开机logo 系统源码


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


采用Android系统做产品时的定制化功能实现

■ 1280 800 15 --第一位图片宽,第二位是图片高,第三位是帧率也就是一秒播放多少帧(多少张图片)。

■ p 1 0 part0----第二位表示part0部分也就是包含图片的文件夹播放次数,第三位表示这部分播完后下部分开始的间隔,默认为0,第四位表示文件夹名称

■ p 0 0 part1----同上但是第二位的0表示循环播放。

最好一行要换行,保存。 

c、打包文件成 zip格式,压缩方式为 存储

首先要在bootanimation文件夹中选中“part0” “part1”文件夹和“desc.txt”文件进行压缩,而不是选中bootanimation文件夹压缩。

image.png采用Android系统做产品时的定制化功能实现

采用Android系统做产品时的定制化功能实现

2、logo的替换

2.1、uboot logo的替换不需要修改源码,烧写系统时和系统镜像放在同一个目录下烧写进去即可。

如下图:

采用Android系统做产品时的定制化功能实现


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

采用Android系统做产品时的定制化功能实现


将dip数值都改为0dip

2、去掉底部虚拟按键,修改

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

采用Android系统做产品时的定制化功能实现

3、去掉自动锁屏,修改

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

采用Android系统做产品时的定制化功能实现

将锁屏使能改为true

照此做完,重新编译安卓源码,重新烧写镜像就OK了。

至此,我们完成了对Android系统的产品化定制改造。


以上内容硬件平台为 四核  iMX6Q OKMX6Q-C 开发板,其它硬件平台可参考设计。

相关产品 >

  • FETMX6Q-C核心板

    i.MX6Q核心板板层出不穷,要如何选择?飞凌解读i.mx6Q芯片强性能为您推荐四核A9架构的i.MX6Q产品精选,包含iMX6Q 核心板、i.MX6Q 核心板、iMX6Q工业级核心板,欢迎采购。  i.MX6Q核心板基于NXP(原Freescale)Cortex-A9架构的i.MX6Q四核处理器设计,核心板小尺寸核心板搭配独特的薄款连接器,让设计随心所欲!

    了解详情
    FETMX6Q-C核心板
  • OKMX6Q-C开发板

    双千兆飞凌嵌入式iMX6Q开发板,板对板连接器,纤薄之际,次底板支持iMX6Q和iMX6DL核心板。i.MX6Q开发板与i.MX6DL开发板资源丰富,原理图、PCB、软件资源、硬件资源下载,技术支持等。欢迎选购

    了解详情
    OKMX6Q-C开发板
  • 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系列产品现已畅销全国,欢迎咨询!
    了解详情
    FETMX6Q-S核心板
  • OKMX6Q-S3开发板

    飞凌嵌入式提供iMX6Q开发板,iMX6解决方案,iMX6Q核心板,i.MX6Q开发板解决方案。iMX6Q稳定、快速、性价比高,欢迎选购 NXP iMX6系列芯片全支持,升级简配无忧替换。 了解详情
    OKMX6Q-S3开发板

推荐阅读 换一批 换一批