东莞cms建站模板,wordpress数据库编码,常见的手机网站,帮人做网站 怎么收费1. Linux 系统启动#xff0c;出现Linux小企鹅画面(reboot)(Android 1.5及以上版本已经取消加载图片)#xff1b;2. Android平台启动初始化#xff0c;出现A N D R I O D文字字样画面#xff1b;3. Android平台图形系统启动#xff0c;出现含闪动的ANDROID字样…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 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 BootAnimation::readyToRun() 进入一个if判断语句 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() if (mAndroidAnimation) {r Android(); // 执行android字体闪动的图片} else {r movie(); // 执行bootanimation.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添加方法的声明和头文件的引用 #include media/AudioSystem.h
#include media/mediaplayer.h 添加方法 void bootMusic(); 然后在BootAnimation.cpp中实现这个方法 void BootAnimation::bootMusic()
{int index;MediaPlayer* mp new MediaPlayer();if (mp-setDataSource(/system/etc/poweron.wav, NULL) NO_ERROR) {mp-setAudioStreamType(AUDIO_STREAM_ENFORCED_AUDIBLE);mp-prepare();}AudioSystem::getStreamVolumeIndex(AUDIO_STREAM_ENFORCED_AUDIBLE, index);if (index ! 0) {mp-seekTo(0);mp-start();}}请注意这个目录setDataSource(/system/etc/poweron.wav, NULL) 其实这个目录是随便写的你想从哪个目录读这个文件就从哪个目录读好了但是你要把这个文件放在对应的目录下 比如这个目录是system/etc (这个目录是android系统的目录不是源码的目录),这个文件夹是只有读权限而没有写权限的所有你不用试adb shell了没用的 其实system/etc这个目录对应的是我们编译后out文件夹下的xxx然后在system/etc所以你把poweron.wav放到这里就行了当然如果你这时再emulaor 也同样是看不到效果的因为你修改完还没有编译和上面修改图片一样make snod一下 然后和图上一样你就会生成新的system.img当然你之前添加的poweron.wav也会自动被编译进去了 然后再修改bootanimation_main.cpp这个文件因为方法也申明了也实现了就是还没有调用所以调用就在这里调 //play boot music -ypBootAnimation *animation new BootAnimation();animation-bootMusic(); 修改完这写以后还需要修改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可以使用这个和上层开发中是一样的这个文件夹中的东西是不编译的。 Asset* asset assets.open(name, Asset::ACCESS_BUFFER);if (!asset)return NO_INIT;SkBitmap bitmap;SkImageDecoder::DecodeMemory(asset-getBuffer(false), asset-getLength(),bitmap, SkBitmap::kNo_Config, SkImageDecoder::kDecodePixels_Mode);asset-close();delete asset; 所以按照这个方法就可以找到poweron.wav 这个文件了然后修改下bootMusic的代码就可以了。转载于:https://www.cnblogs.com/jqyp/archive/2012/03/07/2383973.html