大家都应该知道,我们的手机有一个功能是关机带音乐的,那么现在我们要怎么样才能来实现一个关机音乐的实例那,我们现在就来说说现在关机都有哪几种方法吧,我们在来说一说它们的优势与劣势。
关机时候有两种方式可以播放音乐,它们各有优劣,这里给出这两个方法并进行简单的分析:
1.使用系统提供的命令进行播放,代码如下
Java代码:
SystemProperties.set("ctl.start", "haltsound");
复制代码 此方法类似于开机动画一样,可以通过adb shell中的命令进行调用。命令序列如下adb shell
Java代码:adb shell #setprop ctl.start bootanim // 这样就可以单独创建一个main surface 并显示
复制代码 使用SystemProperties调用关机音乐,可以通过音量键(媒体音量)进行控制,该方法能够独立于动画线程运行,这样缺点也就很明显了,如果调用的位置不对很有可能导致动画音乐不同步,因此要注意上节所将得run方法的执行顺序。
2.新建一个音乐类并进行播放,可如下实现
Java代码:
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源码的systemcore ootdir文件夹中有这样一个配置文件:Init.rc,该文件定义了很多service的调用方式,例如bootanim的services,如下所示
Java代码:
service bootanim /system/bin/bootanimation user graphics group graphics disabled oneshot
复制代码 可以根据需要在系统中定义自己的services,并通过系统命令进行调用。
大家在看完以后是不是明白了怎么样才能实现一个可以自定义的关机音乐了,那还等什么呀,快去整理自己的关机音乐吧。希望这篇内容能对大家有帮助,如果大家好有别的实例可以给大家分享一下。
线程, 显示, 动画
本帖地址: http://www.eoeandroid.com/thread-71219-1-1.html [复制链接]
关机时候有两种方式可以播放音乐,它们各有优劣,这里给出这两个方法并进行简单的分析:
1.使用系统提供的命令进行播放,代码如下
Java代码:
SystemProperties.set("ctl.start", "haltsound");
复制代码 此方法类似于开机动画一样,可以通过adb shell中的命令进行调用。命令序列如下adb shell
Java代码:adb shell #setprop ctl.start bootanim // 这样就可以单独创建一个main surface 并显示
复制代码 使用SystemProperties调用关机音乐,可以通过音量键(媒体音量)进行控制,该方法能够独立于动画线程运行,这样缺点也就很明显了,如果调用的位置不对很有可能导致动画音乐不同步,因此要注意上节所将得run方法的执行顺序。
2.新建一个音乐类并进行播放,可如下实现
Java代码:
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源码的systemcore ootdir文件夹中有这样一个配置文件:Init.rc,该文件定义了很多service的调用方式,例如bootanim的services,如下所示
Java代码:
service bootanim /system/bin/bootanimation user graphics group graphics disabled oneshot
复制代码 可以根据需要在系统中定义自己的services,并通过系统命令进行调用。
大家在看完以后是不是明白了怎么样才能实现一个可以自定义的关机音乐了,那还等什么呀,快去整理自己的关机音乐吧。希望这篇内容能对大家有帮助,如果大家好有别的实例可以给大家分享一下。
线程, 显示, 动画
本帖地址: http://www.eoeandroid.com/thread-71219-1-1.html [复制链接]