Android系统移植与调试之------->如何修改Android启动动画和开机声音
2023-09-27 14:29:34 时间
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 首先看一下定义的常量:
#define SYSTEM_ENCRYPTED_BOOTANIMATION_FILE "/system/media/bootanimation-encrypted.zip"
== 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添加方法的声明和头文件的引用
其实这个目录是随便写的,你想从哪个目录读这个文件就从哪个目录读好了,但是你要把这个文件放在对应的目录下 比如,这个目录是system/etc (这个目录是android系统的目录,不是源码的目录),这个文件夹是只有读权限而没有写权限的,所有你不用试adb shell了,没用的 其实system/etc这个目录对应的是我们编译后out文件夹下的xxx,然后在system/etc,所以你把poweron.wav放到这里就行了,当然如果你这时再emulaor 也同样是看不到效果的,因为你修改完还没有编译,和上面修改图片一样,make snod一下
然后和图上一样,你就会生成新的system.img,当然你之前添加的poweron.wav也会自动被编译进去了
然后再修改bootanimation_main.cpp这个文件,因为方法也申明了,也实现了,就是还没有调用,所以调用就在这里调
修改完这写以后还需要修改Android.mk文件
因为播放声音还需要引入库
LOCAL_SHARED_LIBRARIES := \
libcutils \
libutils \
libbinder \
libui \
libskia \
libEGL \
libGLESv1_CM \
libgui \
libmedia 请注意,libmedia是新添加的; 完事后就ok了,当然还是需要编译的 mmm frameworks/base/cmds/bootanimation/ make snod 大功告成,这样你就成功的添加了开机音乐 也许有人会问,那android系统自带的那些音乐和铃声在什么地方呢? 源码目录在framworks/base/data/sounds 至于编译完成后放到什么地方了那是Android.mk文件上配置的 不过这里叫AllAudio.mk
我们可以看到他又包含了很多mk文件,在同一目录下就可以找到,上图中就可以,我们随便打开一个看看
这下你们顿时明白了吧,这些资源编译后都去了神马地方
所以,在刚才添加poweron.wav的时候,其实可以直接把声音资源丢到framworks/base/data/sounds这个目录下
然后再mk文件中这样修改:
$(LOCAL_PATH)/poweron.wav:system/etc/poweron.wav \
不用我说,当然是执行mmm还有make snod命令了
其实还有一种办法,如果你不想这么麻烦,你可以之际把poweron.wav 文件丢到./frameworks/base/core/res/assets/sounds下,用的时候怎么用呢?
加载的时候路径是什么呢?我们看看源码
我们可以看到之前我们修改的那两张图片是怎么被加载进来的
而这个方法的两个参数是:
是不是顿时又明白了?
原来精髓所在是有个Asset可以使用,这个和上层开发中是一样的,这个文件夹中的东西是不编译的。
所以按照这个方法就可以找到poweron.wav 这个文件了,然后修改下bootMusic的代码就可以了。
================================================================================================== 作者:欧阳鹏 欢迎转载,与人分享是进步的源泉! 转载请保留原文地址:http://blog.csdn.net/ouyang_peng ==================================================================================================
转 - Android下一次OOM调试过程 线程数超限,即proc/pid/status中记录的线程数(threads项)突破/proc/sys/kernel/threads-max中规定的最大线程数。
Unity-使用UnityRemote调试手机Android Studio打印日志 众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!
字节卷动 You will never know how excellent you are unless you impel yourself once.
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 首先看一下定义的常量:
#define SYSTEM_ENCRYPTED_BOOTANIMATION_FILE "/system/media/bootanimation-encrypted.zip"
== 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 即可 以下是我修改后的效果图:
![image image](http://images.cnblogs.com/cnblogs_com/jqyp/201203/201203071759169139.png)
其实这个目录是随便写的,你想从哪个目录读这个文件就从哪个目录读好了,但是你要把这个文件放在对应的目录下 比如,这个目录是system/etc (这个目录是android系统的目录,不是源码的目录),这个文件夹是只有读权限而没有写权限的,所有你不用试adb shell了,没用的 其实system/etc这个目录对应的是我们编译后out文件夹下的xxx,然后在system/etc,所以你把poweron.wav放到这里就行了,当然如果你这时再emulaor 也同样是看不到效果的,因为你修改完还没有编译,和上面修改图片一样,make snod一下
![image image](http://images.cnblogs.com/cnblogs_com/jqyp/201203/201203071802376064.png)
![image image](http://images.cnblogs.com/cnblogs_com/jqyp/201203/201203071802463220.png)
![image image](http://images.cnblogs.com/cnblogs_com/jqyp/201203/201203071802512659.png)
libcutils \
libutils \
libbinder \
libui \
libskia \
libEGL \
libGLESv1_CM \
libgui \
libmedia 请注意,libmedia是新添加的; 完事后就ok了,当然还是需要编译的 mmm frameworks/base/cmds/bootanimation/ make snod 大功告成,这样你就成功的添加了开机音乐 也许有人会问,那android系统自带的那些音乐和铃声在什么地方呢? 源码目录在framworks/base/data/sounds 至于编译完成后放到什么地方了那是Android.mk文件上配置的 不过这里叫AllAudio.mk
![image image](http://images.cnblogs.com/cnblogs_com/jqyp/201203/20120307180348761.png)
![image image](http://images.cnblogs.com/cnblogs_com/jqyp/201203/201203071804417307.png)
![image image](http://images.cnblogs.com/cnblogs_com/jqyp/201203/201203071804494355.png)
![image image](http://images.cnblogs.com/cnblogs_com/jqyp/201203/201203071804526151.png)
所以按照这个方法就可以找到poweron.wav 这个文件了,然后修改下bootMusic的代码就可以了。
================================================================================================== 作者:欧阳鹏 欢迎转载,与人分享是进步的源泉! 转载请保留原文地址:http://blog.csdn.net/ouyang_peng ==================================================================================================
转 - Android下一次OOM调试过程 线程数超限,即proc/pid/status中记录的线程数(threads项)突破/proc/sys/kernel/threads-max中规定的最大线程数。
Unity-使用UnityRemote调试手机Android Studio打印日志 众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!
字节卷动 You will never know how excellent you are unless you impel yourself once.
相关文章
- 我的Android进阶之旅------>Android关于Activity管理的一个简单封装
- Android NDK调试出错Unknown Application ABI, Unable to detect application ABI's的解决方式
- Windows平台cocos2d-x 3.0 android开发环境
- Android 动态修改 html 文件的字符串
- Android ViewPager + Fragment 替换 TabActivity
- Android仿iOS7的UISegmentedControl 分段
- Android APP开发笔记
- android ScrollView--Linearlayout可以上下拖动
- 我的Android进阶之旅------>Android Studio使用statistics插件统计项目代码总行数
- 我的Android进阶之旅------>Android Activity的singleTask加载模式和onActivityResult方法之间的冲突
- Android系统移植与调试之------->增加一个双击物理按键打开和关闭闪光灯并将闪光灯状态同步到下拉菜单中
- Android系统移植与调试之------->如何修改Android手机NFC模块,使黑屏时候能够使用NFC
- 我的Android进阶之旅------>HTTP Content-type 对照表
- 我的Android进阶之旅------>Android关于Activity管理的一个简单封装
- Android系统移植与调试之------->安装apk时出现错误Failure [INSTALL_FAILED_DEXOPT]问题解决的方法
- Android系统移植与调试之------->MTK 标准编译命令
- 我的Android进阶之旅------>如何将Android源码导入Eclipse中来查看(非常实用)
- Android系统移植与调试之------->build.prop生成过程分析
- 我的Android进阶之旅------>Android之Animations动画详解
- 我的Android进阶之旅------>Android Service学习之AIDL, Parcelable和远程服务实例
- Android系统移植与调试之------->Android的编译系统简介
- Android系统移植与调试之------->Android常用的一些make命令