Android源码发开记录-修改开机logo启动页、开机动画

Android源码发开记录-修改开机logo启动页、开机动画,第1张

开机logo主要耐慧与kernel/drivers/video/logo下的logo_linux_clut224.ppm有关。

现kernel源码内一般以提供厂商的logo为主。

我们需要替换的文件也就是该ppm文件。

这里直接提供png转ppm的sh脚本。前提是必须安装了以下工具(pngtopnm,pnmquant,pnmtoplainpnm)

./png2ppm.sh XX.png

用生成的同名ppm文件替换logo_linux_clut224.ppm。

同时删除kernel/drivers/video/logo下的logo_linux_clut224.c和logo_linux_clut224.o

Android开机动画主要是由一个zip格式的压缩包bootanimation.zip组成,压缩包里面包含数张png格式的图片,还有一个desc.txt的文本文档,开机时按desc.txt里面的指令,屏幕上会按文件名称顺序连续的播放一张张的图片。、

这个一般flash制作或者选择交给美工制作了。图片张数尽量不要太多。

关键:图片一定要按顺序命名。

重点在于desc.txt文件。

其中1188 624代表分辨率,表示帧动画以这个分辨率显示。分辨率不是越高越好,容易造成开机卡顿,不流畅。

25表示的是帧数,就是每秒播放的图片数量。

p1(代表着播放一次) 0(空指令)part0 */这句指令就代表这part0文件夹内的图片只按名称顺序播放一次

p0(重复播放)0 (空指令)part1 */这一句指令代表着part1文件夹内的图片会循环反复播放

打包要用zip格式,而不是rar格式。另外压缩的时候压缩方式要选择滑厅存储。将压缩包名修改为bootanimation.zip。

1)可直接将生成的bootanimation.zip放入设备/system/meida目录下重启验证开机动画信亩隐效果。

2)源码上可直接将bootanimation.zip拷贝至/out/target/product/rk3288/system/media目录下,最终打包进成型固件中。

首先打开Android Studio安卓Apps开发工具。

选择单击工具栏Android SDK Manager图标

d出settings对话搭哪框,单击launch Standalone SDK Manager 即启动独立的SDK Manager 程序。

d出Android SDK Manager程笑缓序主界面。

选择下载安装Sources for Android SDK;

使用Android Studio就可以查看Android源码文件了碰枝模。

Android系统通过应用程序自行在系统中登记注册事件(即Intent)来响应系统产生的各类消息。

例如Android实现系统开机自启动程需要在Manifest中加入如下Intent-filter及权限Uses-permission即可。

<intent-filter>

<action android:name="android.intent.action.BOOT_COMPLETED"/>

(修改时候主要是去掉上面该行即可)

<category android:name="android.intent.category.HOME" />

</intent-filter>

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

(修改时候主要是去掉上面该行即可) Android系统为应用程序管理功能提供了大量的API,可以通过API控制Intent和permission,其中

上述配置表示应用程序会响应系统产生的android.intent.action.BOOT_COMPLETED(系统启动完成)信号,以此来实现应用程序自启动。当然知道上述原理后,我们就可以随心所欲的控制程序开机自启动了。具体思路如下:

一、手工方法

基于上述原理,我们可以通过对系统中已安装的程序去除其Manifest的上述配置片段来控制应用程序的对系统的响应,当然没源码可修改编译的情况下只能实现屏蔽其对有些信号的喊散凯响应,例如屏蔽该程序不再开机自启动。手工方法就是利用有关工具直接在解压其APK包后,修改其Manifest的上述配置行后再打包成APK,最后安装到系统中就实现了屏郑唤蔽其自启动功掘迅能。具体相关的工具软件主要有APKTOOL。(请自己放狗去搜索下载)

二、编程实现

当然手工方法需要借助APKTOOL等工具,步骤比较法繁琐,我们可以通过自己开发来实现该功能。幸好

1、PackageManager

本类API是对所有基于加载信息的数据结构的封装,包括以下功能:

·安装,卸载应用

·查询permission相关信息

·查询Application相关信息(application,activity,receiver,service,provider及相应属性等)

·查询已安装应用

·增加,删除permission

·清除用户数据、缓存,代码段等

非查询相关的API需要特定的权限,具体的API请参考SDK文档。

2、ActivityManager相关

本类API是对运行时管理功能和运行时数据结构的封装,包括以下功能

·激活/去激活activity

·注册/取消注册动态接受intent

·发送/取消发送intent

·activity生命周期管理(暂停,恢复,停止,销毁等)

·activity task管理(前台->后台,后台->前台,最近task查询,运行时task查询)

·激活/去激活service

·激活/去激活provider等

task管理相关API需要特定的权限,具体API可参考SDK文档。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12351632.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-22
下一篇2023-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存