`
ai_longyu
  • 浏览: 505584 次
社区版块
存档分类
最新评论

Android开关机动画/铃音是如何播放的?

 
阅读更多
1.开关机动画的启动

Android系统在init.rc中定义了很多Service,具体定义格式可以参考《Android Platform Developer’s Guide》中的“Android Init Language”。init.rc中定义的Service将会被init进程创建,其中已经定义的服务就包含了开机动画.

每一项服务必须在/init.rc中定义Android系统启动时,init守护进程将解析init.rc和启动属性服务,属性“ctl.start”和“ctl.stop”是用来启动和停止服务的。一旦收到设置“ctrl.start”属性的请求,属性服务将使用该属性值作为服务名找到该服务,启动该服务。这项服务的启动结果将会放入“ init.svc.<服务名>“属性中。客户端应用程序可以轮询那个属性值,以确定结果。

当android系统boot时,开始加载动画和开机铃声,其代码位于

//源文件SurfaceFlinger.cpp

当Android完成boot后,关闭动画和开机铃声,代码位于

//源文件SurfaceFlinger.cpp

在Android系统中,长按Power键默认会弹出对话框让你选择“飞行模式”,“静音”,“关机”等功能。

选择”关机“,弹出“设备将要关机”选择对话框。可以选择“是”关机,和“否”返回系统。

从代码中我们可以看出,如果选择上述对话框的“关机”选项之后,将会调用ShutdownThread.java的shutdown方法来关机。shutdown方法的第二个参数标识是否弹出询问对话框。

ShutdownThread代码位于

frameworks/base/core/java/com/android/internal/app/ShutdownThread.java

shutdown方法中有如下代码

从上述分析可知,开关机动画的启动/停止都会设置ctl.start bootanim property来,最终通过bootanimation service来实现的。

这样就转入 bootanimation这个service来真正处理开关机动画和铃声。

注:可以用setprop ctl.startbootanim:shut 命令动态启动bootanimation service


2. bootanimationservice详解

bootanimationservice 的代码所在位置:/frameworks/base/cmds/bootanimation, 主要有两个文件:

bootanimation_main.cpp

bootAnimation.cpp

bootanimation_main.cpp是主入口文件:

其主要的功能是根据传进来的参数决定是是要播放开机还是关机动画/铃音,并且启动BootAnimation:

BootAnimation.cpp集成自Thread,在创建时会调用readyToRun()->threadLoop():

readyToRun()方法判断/system/media/bootanimation.zip(shutanimaion.zip)是否存在,如果存在,则将 mAndroidAnimation 设置false,这个变量决定threadLoop中调用android()还是movie()来具体实现动画的播放。
threadLoop首先判断system/media/bootaudio.mp3(shutaudio.mp3)文件是否存在,如果存在则调用mediaplayer的接口播放(setdatasoruce,prepare,setvolume,start)。

然后根据 mAndroidAnimation 变量调用android()/movie(). 如果system/media/shutanimation.zip/bootanimation.zip存在的话,调用movie(),该接口会解析zip文件中的desc.txt文件,根据txt文件中的配置来播放动画。



分享到:
评论

相关推荐

    Android开机动画修改

    要修改Android开机动画,我们需要了解几个关键点,包括bootanimation.zip文件、desc.txt文件格式以及可能出现的问题及其解决方法。 首先,开机动画的修改主要涉及到`bootanimation.zip`文件。这是一个特殊的压缩包...

    ANDROID开机动画分析

    这篇文章将深入探讨ANDROID开机动画的分析,涉及到的知识点包括Android系统的启动流程、动画的制作原理以及如何通过源码和工具进行分析。 首先,Android的启动流程是从引导加载器(Bootloader)开始,经过内核加载...

    修改Android开机动画

    首先,开机动画的地址:system\media\bootanimation.zip。。。要修改开机动画就是修改bootanimation这个文件。如果说你的手机里没有这个文件,那就是说明你用的是官方原始版本的rom开机动画没有被修改过,但这不碍事...

    Android开机动画包bootanimation.zip

    1. **帧序列**:Android开机动画由一连串的静态图像帧组成,这些帧以特定的速度连续播放,形成动态效果。这些帧通常是PNG格式的透明图像,因为PNG格式支持透明度,可以让动画更平滑地过渡。 2. **bootanimation.txt...

    Android开机logo开机动画定制

    总之,Android开机logo和开机动画的定制涉及到图像处理、文本编辑、文件打包、系统配置等多个环节,需要对Android系统结构和工作原理有深入理解。通过这个过程,开发者不仅可以打造独特的启动体验,还可以借此了解...

    android 原生开机动画文件

    在Android操作系统中,开机动画是用户首次启动设备时看到的视觉效果,它结合了品牌标识、动画元素以及系统加载过程。了解如何修改和定制Android原生开机动画文件对于开发者来说是一项重要的技能,尤其对于那些希望为...

    MTK Android13 自定义开机动画和铃声

    1.使用google的bootanimation,不支持开机铃声2.所以修改为使用mtkbootanimation,但基线代码会报错,此资源完美解决编译报错问题,并解决首次开机无铃声的问题。

    分享Android TV 11开机动画(附上使用方式)

    首先,开机动画是由一系列图像或视频组成的,它们在系统启动过程中播放,通常包含Android的Logo或其他定制的图形。在Android TV 11中,这些动画文件被存储在设备的特定位置,即 `\system\media` 目录下。这表明系统...

    Android 开机动画启动过程详解

    Android 开机动画启动过程详解, 方便定制自己的开机动画

    android修改开机画面及开机动画

    在Android系统中,修改开机画面和开机动画可以让设备更加个性化,同时也是一种展现技术实力的方式。下面我们将深入探讨如何进行这些更改,以及涉及到的相关知识点。 首先,我们要了解Android的启动流程。Android...

    android开机动画包制作工具

    本文将详细介绍如何使用“Android开机动画包制作工具”来创建自定义的开机动画,以及涉及的相关技术知识。 一、Android开机动画概述 Android开机动画是由一系列图像或视频组成的序列,它们在设备启动过程中显示,为...

    android开机动画若干

    本篇文章将深入探讨Android开机动画的相关知识点。 首先,Android开机动画的制作涉及到多个技术层面。开机动画的格式通常是`.mp4`或`.gif`,因为这些格式支持动画效果且兼容性良好。开发者需要了解如何使用图形编辑...

    Android 开机动画

    Android 开机动画是Android操作系统启动过程中展示的一种视觉效果,它为用户提供了系统加载的状态反馈,同时也增加了设备的个性化体验。Android系统的开机动画通常以一个名为`bootanimation.zip`的压缩包形式存在,...

    Android开机动画

    首先,理解Android开机动画的工作原理至关重要。开机动画并不是在操作系统启动后运行的应用程序,而是在引导加载器(Bootloader)和内核启动期间播放的。这些动画由一系列静止图像或视频帧组成,通过特定的格式如DEX...

    MTK Android12 (S) 开机动画

    在Android系统启动过程中,BootAnimation.cpp负责解析并播放开机动画。它可能包括读取动画帧、同步显示帧率以及处理与硬件交互的相关功能。 2. **audioplay.cpp**: 该文件很可能处理开机动画过程中的音频播放。在...

    Android4.4开机动画源码

    对于Android 4.4(KitKat)版本,开机动画的实现涉及到多个技术层面,包括图形处理、音频播放以及系统服务的启动流程。以下是对Android 4.4开机动画源码的详细解析。 首先,开机动画是通过`bootanimation.zip`文件...

    android 开机动画sample

    本篇将详细探讨Android开机动画的基本原理、制作流程以及如何利用提供的`android 开机动画sample`包进行修改和自定义。 首先,我们要理解Android开机动画的组成。一个基本的Android开机动画由三部分构成:`desc.txt...

    mtk android9 开机动画问题解决

    Android 9.0 中 MTK 开机动画音频问题解决方案 Android 9.0 中,MTK 开机动画音频问题是一个常见的问题,解决这个问题需要对音频相关代码进行修改。下面将对五处修改进行详细的解释,以帮助开发者更好地理解和解决...

    android字样的开机动画

    在Android操作系统中,"android字样的开机动画"是指设备启动时显示的具有"ANDROID"文字的动画效果。这个动画不仅是品牌标识的一部分,也代表了系统启动的过程,为用户提供了视觉反馈,让他们知道设备正在准备进入...

    android开机动画代码

    在Android系统中,开机动画(Boot Animation)是用户开机时看到的一段动画效果,它不仅提升了用户体验,也反映了系统的个性化。本知识点主要探讨在Android 4.1.2版本中如何实现开机动画,我们将从以下几个方面进行...

Global site tag (gtag.js) - Google Analytics