大家好,感谢邀请,今天来为大家分享一下Android O 8.0 自定义启动画面与铃声教程的问题,以及和的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!
两个文件夹都是开机动画图片,desc.txt:
1080 1920 10
p 1 0 第1 部分
p 0 0 第2 部分
1080 1920是分辨率,10表示每秒10帧
p 1 0 第1 部分:p 正在播放。 1表示播放一次,0表示无限次。 0表示舞台间隔的帧数为0,即以帧动画的形式播放画面。 part1指定第一个播放的文件夹为part1(也可以给它起另一个名字并做相应的修改)
p 0 0 part2:第一个0表示循环播放。第二个0表示每张图片之间的帧数为0(与上面的命令相同)。 part2代表要循环播放的文件夹
只需将准备好的文件打包成bootanimation.zip即可。注意:必须是zip格式,且包大小不能超过3M。然后放到/system/media/目录下。
最近在制作启动动画的过程中,发现添加启动动画后一直无法显示。经过一番苦心寻找,我终于得出以下结论:
在Linux环境下尽可能压缩开机动画zip。在Windows或Ubuntu的UI界面下压缩bootanimation.zip可能会导致开机动画不显示。 Linux下,进入素材目录,执行压缩命令:
zip-Z 存储bootanimation.zip part0/*.pngpart1/*.pngdesc.txt
Windows下打包ZIP也需要进入素材目录。例如:选择part0、part1、desc.txt这三个文件,右键选择“添加到压缩文件”,选择“ZIP”压缩,“存储”模式。
2. 定制到系统
开机动画一般放在系统device/xx/xx/media/bootanimation.zip中,且必须在具体项目mk文件中声明:
PRODUCT_COPY_FILES +=device/xxx/$(TARGET_PRODUCT)/media/bootanimation.zip:system/media/bootanimation.zip
我们可以看到,这个配置的目的是将bootanimation.zip复制到系统system/meida目录下。
在
3. 跟踪源码
surfaceflinger.rc下启动surfaceflinger
服务surfaceflinger /系统/bin/surfaceflinger
SurfaceFlinger.cpp启动动画
startBootAnim() -mStartPropertySetThread-Start();
/frameworks/native/services/surfaceflinger/StartPropertySetThread.cpp
bool StartPropertySetThread:threadLoop() {
//设置属性service.sf.present_timestamp,消费者需要检查其准备情况
property_set(kTimestampProperty, mTimestampPropertyValue ? "1" : "0");
//清除BootAnimation 退出标志
property_set("service.bootanim.exit", "0");
//如果没有启动则启动BootAnimation
property_set("ctl.start", "bootanim");
//立即退出
返回假;
}
首先,将“service.bootanim.exit”标志设置为0。该标志用于检测bootanim进程中开机动画是否结束。
然后通过向init 进程发送“ctl.start”请求来启动“bootanim”服务。
Frameworks/base/cmds/bootanimation/bootanimation_main.cpp中的main函数启动BootAnimation.cpp
onFirstRef-准备运行
在readyToRun中,会有一个获取动画的判断getAnimationFileName
/** 获取开机动画文件
*参数:
* 1.defaultfile: 系统默认媒体文件
* 2.isShutdown : 是关机或开机状态
* 返回值: 动画文件路径
**/
const char *BootAnimation:getAnimationFileName(const char *defaultfile,bool isShutdown)
{
//通过区域化环境加载Carrier动画
如果(环境:isSupported()){
环境*环境=新环境();
int isShutdownState=环境:BOOT_STATUS;
如果(正在关机){
isShutdownState=环境:SHUTDOWN_STATUS;
}
const char* animFile=环境-getMediaFile(
环境:ANIMATION_TYPE,isShutdownState);
ALOGE("获取航母动画类型: %d,status:%d",Environment:ANIMATION_TYPE,isShutdown);
if (animFile !=NULL strcmp(animFile, "") !=0) {
返回动画文件;
}别的{
ALOGD("获取载体动画文件: %s失败", animFile);
}
删除环境;
}
返回默认文件;
}
继续关注环境-getMediaFile
在frameworks/base/libs/regionalization/Environment.cpp中,我们在getMediaFile方法中找到了BOOT_SHUTDOWN_FILE常量
静态常量字符* BOOT_SHUTDOWN_FILE[2][2]={
{"/system/media/bootanimation.zip", "/system/media/shutdownanimation.zip"},
{"/system/media/boot.wav", "/system/media/shutdown.wav"} };
这是我们对应的配置。
后续是在mZipFileName时播放动画BootAnimation.threadLoop
if(mZipFileName.isEmpty()) {
r=android(); //播放Android系统默认的启动动画
}
android() 播放系统原生动画,带有“android”字样加上不断移动的光影效果。
movie()读取bootanimation.zip中的帧动画,并一一旋转,形成动画效果。
检测到service.bootanim.exit的值被修改为1后,调用requestExit()结束动画。
期间会去wms的enableScreenAfterBoot(),最终调用SurfaceFlinger:bootFinished()完成启动。
----------------------------------------------------------分隔线--- --------------------------------------------------
最近,添加开机铃声的请求越来越多。
修改这个的方法有很多:1.自己添加播放2.直接使用bootAnimation
第二个更简单:
首先我们要查看frameworks/base/cmds/bootanimation目录:
我们需要添加一个audio.wav启动铃声。
放到bootanimation/part0/中,然后在bootanimation/中执行打包命令:
zip -0qry -i *.txt *.png *.wav @ ./bootanimation.zip *.txt 部分*
将生成一个bootanimation.zip,然后执行
adb Push bootanimation.zip /system/media
对于这些内容,请参阅文件FORMAT.md。
如果直接使用的话,以上步骤就够了。请参考门户代码:
好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!
【Android O 8.0 自定义启动画面与铃声教程】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
终于可以替换原先那段老旧的动画和铃声了!
有11位网友表示赞同!
我已经找到好几个酷炫的新动画,现在开手机就很有仪式感了。
有13位网友表示赞同!
这下终于不用看到每次开机都一样的东西啦。
有11位网友表示赞同!
真希望能支持更多自定义选项,比如壁纸或者主题也能换!
有11位网友表示赞同!
想把我的照片做成开机动画,这功能太棒啦
有10位网友表示赞同!
这个真的挺方便啊,换个喜欢的铃声早上起来就不那么烦了。
有6位网友表示赞同!
期待开发者能出更多优秀的自定义动画和铃声资源。
有5位网友表示赞同!
终于不用看着那条无聊的进度条了!
有7位网友表示赞同!
不知道有没有什么可以修改开机音乐重复播放次数的设置?
有10位网友表示赞同!
这个功能很实用,而且还可以提升手机的个性化程度。
有6位网友表示赞同!
我的朋友告诉我安卓8.0的开机动画效果很棒,我一定要试试看!
有13位网友表示赞同!
现在用手机感觉更加贴心了!
有12位网友表示赞同!
以前开手机总是无感的,现在有新听觉和视觉体验了。
有15位网友表示赞同!
这个功能应该早点出来啊,安卓一直没有办法自定义开启这些内容。
有11位网友表示赞同!
好希望以后能支持更多手机型号。
有18位网友表示赞同!
感觉安卓8.0更新后更人性化了!
有20位网友表示赞同!
定制开机动画可以很有创意和趣味性!
有18位网友表示赞同!
这个功能会让手机变得更加独特。
有8位网友表示赞同!
终于不用再忍受默认的那些老旧的声音啦!
有19位网友表示赞同!
很期待未来会有更多关于安卓8.0的小技巧分享!
有14位网友表示赞同!