Android修改开关机动画声音
开机画面,按照国际惯例,一般是分为2屏,当然也有3屏的说法,不管怎样,我这里说得就是最后的一屏,按照bootanimation的字面意思翻译,大概也就是开机动画的意思,那这就不说第几屏了,直接用开机动画这词。

首先,开机动画的地址:system\media\bootanimation.zip。。。要修改开机动画就是修改bootanimation这个文件。如果说你的手机里没有这个文件,那就是说明你用的是官方原始版本的rom,开机动画没有被修改过,但这不碍事,没有就放一个进去,到时候想换回最原始的开机画面,也可以把bootanimation这个文件删了。官方最原始的开机动画在system\ framework\framework-res.apk\assets\images里面,里面主要是2张图片,高手面可以去研究一下,说不定通过这个文件可以用代码实现动画的过程。

接下来,说说bootanimation.zip这个文件的结构。bootanimation里面主要包含一个desc.txt以及N个文件夹。而文件夹里面放着的就是你要的开机动画的图片。的作用就是指导系统如何去执行你的开机画面。
下面继续说说这个文档要怎么写。
先看例子,如果我的开机动画要用到2个文件夹,分别是part1part2,。。。。我希望开机的时候,先把part1里面的图片都播放一遍,然后再循环播放part2里面的文件,直到进入系统。那么文档的内容应该如下:
302 480 5
p 1 0 part1
p 0 0 part2

就这么多,现在解释一下这些命令吧。
第一行,320 480是代表你屏幕的分辨率,因为我们的胖6320*480的,这就不多说了。后面的5是说,5帧每秒,不懂的可以这么理解,5是代表一秒钟播放5张图片。就这么简单。
第二行,p 1 0 part1p应该是play吧,也就是播放的意思。1是播放一次。0是空指令,就是什么都不做。part1就是说,这条指令是针对part1这个文件夹的。整条指令的意思就是,播放part1里面的图片1次,然后什么都不做,马上进入下一条指令。
第三行,p 0 0 part2p依然是播放。第一个0这里是代表循环播放,第二个0和上面第二条
指令一样,代表什么也不做。part2也就不多说了。
至于为什么第一个0为什么是代表循环,只能这么说,这事国际惯例,就像用迅雷的时候,0代表不限制速度一样,系统规定的,你知道就好,别纠结。

总结公式如下
第一条指令:屏幕的分辨率(空格)播放频率
第二条指令:p(空格)播放次数(空格)后续操作(空格)作用文件夹
第三条指令:同上
N条指令:同上
屏幕分辨率的格式是:宽(空格)高,胖6的就是320 480。。。播放频率,上面已经说清楚了,至于到底要用多大的数字,视你开机动画的张数而定,比如说,一共有100张图片,开机时间是20秒,那么100/20就是5
播放次数,1是代表一次,0代表循环播放。如果要播放2次的话,就是就是打个2上去,应该是这样吧,反正我是没试过,只试过01.
后续操作,0代表什么都不做,直接进入下一条指令。10是代表稍作停顿。


至于文件夹里面的图片,比较简单,首先,纠正一个说法,之前说必须要是png格式,经过我试验证明,jpg格式的也可以,其他的有待试验,不过只支持静态图片这点应该是真的,动态图片同样有待试验。其次,关于图片的尺寸,是不做要求的,只要在txt文档里写好手机的分辨率即可,开机的时候系统会自动适配。其其次要按播放循序命名,建议用5位数字,比如说,第一张图片是00010,第二张就是00020.。。。。为什么要从00010开始,而不是00001?因为这事预防以后要在第一张和第二张中间再插一张图片进去的话,就可以把插进去的图片命名为00011,在00010之后,00020之前。就这么简单。至于图片那里来嘛,当然是自己网上啦,也可以下载别人的bootanimation,然后修改一下。

最后就是压缩包了,把需要用到的part文件夹跟打包成zip格式,必须是zip,不能是rar,而且打包的时候压缩方式要选择存储模式。然后改名成为bootanimation.zip,复制到SD卡里,再通过RE文件管理器复制到system\media\下面,重启。

要注意一下,bootanimation不能太大,大了会卡,一般不要超过3M,。
 
————————————————————————————————————————————————————————————————————————————————————
1. Linux 系统启动,出现Linux小企鹅画面(reboot)(Android 1.5及以上版本已经取消加载图片)
2. Android平台启动初始化,出现"A N D R I O D"文字字样画面;
3. Android平台图形系统启动,出现含闪动的ANDROID字样的动画图片世界十大豪车(start)
现在我们说的是第三种方式(基于模拟器)
android开机动画叫源码位于肥肠怎么洗frameworks/base/cmds/bootanimation下,这个程序会将/data/local/bootanimation.zip/system/media/bootanimation.zip里面的png图片以动画的形式播放出来。
首先,我们先来分析一下源码:
frameworks/base/cmds/bootanimation/BootAnimation.cpp
首先看一下定义的常量:
1
2
3
4
#define USER_BOOTANIMATION_FILE "/data/local/bootanimation.zip"
 
#define SYSTEM_BOOTANIMATION_FILE "/system/media/bootanimation.zip"
#define SYSTEM_ENCRYPTED_BOOTANIMATION_FILE "/system/media/bootanimation-encrypted.zip"
开普勒 22b
BootAnimation::readyToRun()
进入一个if判断语句
1
2
3
4
5
6
7
8
9
10
11
if ((encryptedAnimation &&
            (access(SYSTEM_ENCRYPTED_BOOTANIMATION_FILE, R_OK) == 0) &&
            (mZip.open(SYSTEM_ENCRYPTED_BOOTANIMATION_FILE) == NO_ERROR)) ||
 
            ((access(USER_BOOTANIMATION_FILE, R_OK) == 0) &&
            (mZip.open(USER_BOOTANIMATION_FILE) == NO_ERROR)) ||
 
            ((access(SYSTEM_BOOTANIMATION_FILE, R_OK) == 0) &&
            (mZip.open(SYSTEM_BOOTANIMATION_FILE) == NO_ERROR))) {
        mAndroidAnimation = false;
    }
BootAnimation::threadLoop()
理科高考科目
1
2
3
4
5
if (mAndroidAnimation) {
 r = Android(); // 执行android字体闪动的图片
 } else {
 r = movie(); // 执行bootanimation.zip中提供的动画图片
 }
1
 
==> BootAnimation::Android()会加载"images/android-logo-mask.png""images/android-logo-shine.png"
==> BootAnimation::movie()会加载bootanimation.zip中的内容
我们下载的源码里默认是没有那些个.zip动画的,所以总会跳到android字体闪动的画面
所以如果你系那个用.zip的动画那么把你做好的动画拷贝到编译好对应的目录下即可,然后执行make snod整合进img包就可以看到效果了
如果你想修改android闪动的那两张图片的话,最简单的方法是直接替换图片,如果你懂openGL的话也可以自己做酷炫的动画
那两张图片放在./frameworks/base/core/res/assets/images  目录下,一张镂空的android图,一张发光效果,动画效果就是下面那张发光的效果图不断左右移动。
我是用Photoshop直接修改的
修改完后直接替换,然后再 mmm frameworks/base  , make snod 即可
以下是我修改后的效果图:
 
看样子还想那么回事
国庆节祝福语 简短
接下来我们给系统添加开机声音
由于动画是在BootAnimation播放的,所以我们的声音肯定也在这个类中做,照猫画虎
首先在BootAnimation.h添加方法的声明和头文件的引用
1
2
#include <media/AudioSystem.h>
#include <media/mediaplayer.h>
 
添加方法 void bootMusic();
梦见自己杀猪
然后在BootAnimation.cpp中实现这个方法:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。