`
ishelf
  • 浏览: 106337 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

ShutdownThread - 关机音乐 (.ogg , SystemProperties)

阅读更多

 关机时候有两种方式可以播放音乐,它们各有优劣,这里给出这两个方法并进行简单的分析:

 1.使用系统提供的命令进行播放,代码如下

 

SystemProperties.set("ctl.start", "haltsound");

     此方法类似于开机动画一样,可以通过adb  shell中的命令进行调用。命令序列如下adb shell

 

adb shell #setprop ctl.start bootanim // 这样就可以单独创建一个main surface 并显示

 

     使用SystemProperties调用关机音乐,可以通过音量键(媒体音量)进行控制,该方法能够独立于动画线程运行,这样缺点也就很明显了,如果调用的位置不对很有可能导致动画音乐不同步,因此要注意上节所将得run方法的执行顺序。

 

2.新建一个音乐类并进行播放,可如下实现

 

class ShutdownSound { private static String DEF_PATH = "/system/media/bootsound/poweroff.ogg"; private String soundFile; private MediaPlayer player; BootSound(Context context) { String path = SystemProperties.get("cfg.sys.bootsound-poweroff"); if ((null == path) || (null != path && !((new File(path)).exists()))) { path = DEF_PATH; } if ((new File(path)).exists()) { new AsyncPlayer(TAG).play(context, Uri.parse("file://"+ path), false, 5); } } }

 

    该种方法可以避免音量键的控制,这也是其优点之一(至少我是认为这样的),还有一个优点就是可以主动的控制播放过程。缺点是如果在一个线程内跑的话非常影响性能。
 
 
这里补充一点关于#setprop ctl.start bootanim  类似这样命令的使用方式,在android源码的system\core\rootdir\文件夹中有这样一个配置文件:Init.rc,该文件定义了很多service的调用方式,例如bootanim的services,如下所示
service bootanim /system/bin/bootanimation user graphics group graphics disabled oneshot

 
    可以根据需要在系统中定义自己的services,并通过系统命令进行调用。
 
 

 
1
3
分享到:
评论

相关推荐

    android关机流程

    1. **调用`shutdownThread`的`shutdown`方法**:当用户确认关机后,系统会调用`shutdownThread`类的`shutdown`方法来开始关机流程。这里需要注意的是,`shutdown`方法的第二个参数决定了是否显示确认关机的提示...

    android定时关机

    在Android系统中,实现定时关机功能涉及到对操作系统底层机制的理解和Java编程技术的应用。以下是对这个主题的详细解析: 1. **定时器基础**: 定时器在Java中通常通过`java.util.Timer`类和`java.util.TimerTask`...

    Android 关机和重启(reboot and shutdown)源码.rar

    - 关机过程中,Android会创建一个ShutdownThread,负责执行实际的关机操作。这个线程会逐步停止系统服务,关闭活动应用,以及断开与硬件的连接。 4. **电源管理**: - 电源管理是关机和重启的关键部分。Android的...

    java 定时关机小程序

    Java定时关机小程序是一种实用的计算机管理工具,它允许用户设定一个特定的时间点,系统将自动执行关机操作。在Java编程中实现这样的功能主要涉及到操作系统交互和时间处理。下面我们将详细探讨如何使用Java来创建...

    java实现的电脑自动关机

    在Java编程环境中,实现电脑自动关机功能是一个实用且有趣的任务,它涵盖了多个核心知识点,包括线程处理、图形化用户界面(GUI)设计以及时间管理。以下将详细阐述这些内容。 首先,Java中的线程是多任务处理的...

    Android关机重启

    在`GlobalActions.java`中,`ShutdownThread`类扮演了关键角色,它包含了执行关机和重启的函数。对于关机,调用的是`ShutdownThread.shutdown(mContext, true);`这个方法。这个函数会触发一系列的系统级操作,最终...

    Android Power On Off

    当用户选择“关机”选项后,系统将调用`ShutdownThread.java`中的`shutdown`方法。该方法内部调用了`beginShutdownSequence`方法,并最终触发了`bootanimationservice`的启动或停止。 - **启动/停止开关机动画**:`...

    安卓开机时间阶段性拆解

    - 在关机log中检索“ShutdownThread”,检查安卓阶段的关机时间。 - 检索“jumping to kernel”,并计算从这里到停止打印log的时间。 - **优化建议**: - 分析jumping to kernel之前的时间,即init进程关闭服务的...

    Android 关机弹出选择菜单的深入解析

    在`onPress()`方法中,调用了`ShutdownThread.shutdown`方法,执行关机操作。该方法的第二个参数决定了是否需要弹出确认对话框。如果参数为`false`,则不弹出确认对话框,直接执行关机;如果参数为`true`,则弹出...

    Android 修改系统关机动画的实现

    在Android 系统移植做自己的移动设备,肯定会遇到更改开机或者关机画面,配置自己产品logo 这点是必须的,这些都要在源码中修改,然后编译,下面给大家介绍个关机动画修改,一个简单示例! 文件路径:frameworks\...

    Android系统关机的全流程解析

    `ShutdownThread`负责显示关机界面,收集日志信息,并执行实际的内核级重启操作。 接下来,我们进入内核空间。在Android系统中,真正的关机过程是由内核完成的。内核通过调用`sys_reboot()`函数来实现这一操作。这...

    关闭线程池

    为了添加关闭监听功能,作者创建了另一个监听线程`shutdownThread`,它监听8001端口,当收到特定的关闭命令时,关闭线程池。这个线程会检查`isShutdown`标志来决定是否已经接收到关闭命令。关闭线程池时,调用`...

Global site tag (gtag.js) - Google Analytics