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

原文链接:https://www.forlinx.com/article_view_337.html

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系统的产品化定制改造。

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

相关产品:

FETMX6Q-C核心板

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,366评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,521评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,689评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,925评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,942评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,727评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,447评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,349评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,820评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,990评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,127评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,812评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,471评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,017评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,142评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,388评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,066评论 2 355

推荐阅读更多精彩内容

  • 两种方式,一种是修改/system/framework/framework-res.apk中资源文件,另一种是自定...
    自由之海阅读 4,806评论 1 50
  • 1. 制作bootanimation.zip 参考解压的一个bootanimation.zip, 里面有两个文件夹...
    CocoDoll阅读 7,427评论 3 2
  • Tcp/IP通信也是不安全的,在传输的时候也可能出现漏洞 查看正在运行的进程 adb shell ps -A |g...
    远远飘着云阅读 4,427评论 0 0
  • 放弃一些清晨的泥土, 在起风之前,轻轻封存。 然后我在北方醒来, 抚摸如黄土般干燥的语言, 回味不曾失眠的昨夜。 ...
    三水林枫阅读 489评论 26 30
  • 在盐海公路交界处,有一个美丽的小村庄,这就是我的家乡星马村。 一条条宽阔的马路、一排排整齐的房屋,一颗颗参天的大树...
    吴杰喜阅读 236评论 0 2