Android Framework 框架测试之 开机

640?wx_fmt=gif

640?wx_fmt=gif

极力推荐Android 开发大总结文章:欢迎收藏程序员Android 力荐 ,Android 开发者需要的必备技能

640?wx_fmt=jpeg

本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:

  1. Android 开机时间信息

  2. Android 开机大致流程

  3. Android 开机震动添加方法(MTK 、展讯平台)

  4. Android 开机动画、铃声、Logo

  5. Android 开机动画预制规范要求

1. Android 开机时间信息

Android 开机时间信息保存在/proc/bootprof 文件中

MTK 平台开机时间信息如下:640?wx_fmt=jpeg2. Android 开机大致流程

从打印的开机Log 信息可以总结出Android 开机的大致流程如下:

640?wx_fmt=png

Android 开机大致流程

3. 开机震动添加方法(MTK 、展讯平台)

一、MTK 平台lk 层添加开机震动的方法

  • 文件修改大致路径vendor\mediatek\proprietary\bootable\bootloader\lk\platform\mt6739

  • a. 修改platform.c文件

platform.c文件中的mboot_common_load_logo 方法显示开机Logo之前添加震动

640?wx_fmt=png

platform.c

        // add  for lk viber
        vibr_Enable_HW();//开启震动
        mdelay(80); //震动80ms
        vibr_Disable_HW();//关闭震动
        // add  for lk viber
        mboot_common_load_logo((unsigned long)mt_get_logo_db_addr_pa(), "logo");
  • b. 查看mt_pmic.h头文件声明方法

    640?wx_fmt=png

    mt_pmic.h

extern void vibr_Enable_HW(void);extern void vibr_Disable_HW(void);
  • c. 在对应的mt_pmic.c文件中实现方法

    640?wx_fmt=png

    image.png

void vibr_Enable_HW(void){
    pmic_set_register_value(PMIC_RG_VIBR_VOSEL, 5);
    pmic_set_register_value(PMIC_RG_LDO_VIBR_EN, 1);
}void vibr_Disable_HW(void){
    pmic_set_register_value(PMIC_RG_LDO_VIBR_EN, 0);
}

二、展讯平台 添加开机震动的方法

展讯平台修改开机震动的文件路径为u-boot64/common/loader/boot_mode.cboot_mode.c 中修改normal_mode(void)

void normal_mode(void){
        vibrator_hw_init();        // 1 :震动  0:不震动
        set_vibrator(1);  
        vlx_nand_boot(BOOT_PART, BACKLIGHT_ON);        return;
}

4. Android 开机动画、铃声、Logo

一、开机动画、开机铃声 手机中存放地址是system/media/

运营商定制开机动画地址如下:

  • OP01 中国移动

  • OP02 中国联通

  • OP09 中国电信

/vendor/mediatek/proprietary/operator/frameworks/bootanimation/OP01/bootanimation/WVGA/bootanimation.zip
/vendor/mediatek/proprietary/operator/frameworks/bootanimation/OP02/bootanimation/FWVGA/bootanimation.zip
/vendor/mediatek/proprietary/operator/frameworks/bootanimation/OP09/bootanimation/WVGA/bootanimation.zip

或者自己写,用脚本拷贝到手机的system/media/

比如公司自己定义的目录alps\vendor\sprocomm\res\boot

640?wx_fmt=png

脚本中拷贝动作实现

二、开机Logo

开机Logo 存放路径如下:vendor\mediatek\proprietary\bootable\bootloader\lk\dev\logo\

根据使用的运营商或者分辨率修改 kernel Logo ,以及uboot Logo,或者使用覆盖图片覆盖以上目录的图片资源

alps/sprocomm_proj/PD5503SM/vendor/mediatek/proprietary/bootable/bootloader/lk/dev/logo/hdplus/hdplus_kernel.bmp
alps/sprocomm_proj/PD5503SM/vendor/mediatek/proprietary/bootable/bootloader/lk/dev/logo/hdplus/hdplus_uboot.bmp

5. Android 开机动画预制规范要求

解压开机动画文件如下,里面包含多张开机图片。

640?wx_fmt=png

开机动画压缩包文件内容

开机动画规范要求存储格式压缩

  1. 规范的配置文件desc.txt

720 1280 10
p 1 0 folder1
p 0 0 folder2
  • 1.第一行的参数前两位720和1280分别表示要显示动画的 width 和height.

默认情况下应该与Display的width和height一致,如果设置比Display的size要小,则动画会居中显示,周边将用黑框填充.

  • 2.第一行的第三个参数10是定义动画播放的预订帧率(FPS)

这个帧率fps是指:每秒动画播放的帧数。此帧数是一个理想值,并不一定代表动画实际帧率,假设预订帧率为FPS_I,预订每一帧解析的时间t_I, 则t_I=1/FPS_I。实际帧率的规则是:

假设某一帧从解析到渲染耗时为t_r,当t_r<=t_l,则渲染完这一帧后,动画这个thread会sleep(t_l-t_r)的时间,也就说这一帧最后的耗时就t_l;

假设某一帧从解析到渲染耗时为t_r,当t_r>t_l,则渲染完这一帧后,动画这个thread会马上开始下一帧,也就说这一帧最后的耗时就t_r。

所以,desc.txt内设置的这个帧率并不能代表动画的实际帧率,实际的帧率是和系统开机的performance有关,因此不是说在desc.txt设置帧率越大越好,反而容易出现当某一帧耗时较长,就容易给用户某一帧卡顿的体验,目前这个FPS的值一般设置在13左右。

当然,设置FPS为13并不是说系统的performance比较低,本身在开机动画阶段,系统进入Bootup Android阶段,许多进程需要启动,系统的主要工作应该集中与开机启动的进程,因此不建议动画的图片过于复杂,导致系统开机的Performance变差。

  • 3.第二行和第三行情况类似,一般用于分别设置顺序播放和无限循环播放的相关参数.

第一个参数p是google default的设计,请保留以p开头。

第二个参数1表示这一行对应folder所需要循环播放的次数,如果是0则表示是无限循环播放,直到系统ready后通过被动退出。

第三个参数0表示这一行对应folder里面的每一帧图片依次解析渲染完成后,要进入下一个循环,动画这个线程需要pause多久。

第四个参数folder1 表示对应设置规则的folder的path。

注意 1: 默认的设计,都是将顺序播放的动画放在一个folder,定义这个folder所需要循环的次数;在无限循环的folder内放置一张图片,保证动画没有收到退出指令的时候,动画可以一直显示.

注意 2:由于循环播放的folder中的每帧都是以纹理对象存储在纹理内存中再upload到GPU做渲染的,以便下次循环播放不需要重新解析.如果动画包中的图片太多或者图片的size很大时,则会导致占用较多的memory,因此为保证开机的performance,开机动画不建议太复杂.

640?wx_fmt=jpeg

至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

640?wx_fmt=jpeg

如有侵权,请联系小编,小编对此深感抱歉,届时小编会删除文章,立即停止侵权行为,请您多多包涵。640?wx_fmt=other

既然都看到这里,领两个红包在走吧!以下两个红包每天都可以领取

1.支付宝搜索 522398497,或扫码支付宝红包海报。

支付宝扫一扫,每天领取大红包

2.微信红包,微信扫一扫即可领取红包

微信扫一扫,每天领取微信红包

小礼物走一走,来简书关注我

posted @ 2018-12-12 09:13  程序员Android的博客  阅读(118)  评论(0编辑  收藏  举报