概述
Broadcast Receiver
Broadcast Receiver也就是“广播接收者”的意思,顾名思义,它就是用来接收来自系统和应用中的广播。在Android系统中,在进程和进程之间,应用和应用之间,经常要进行数据的传递,Broadcast Receiver也可以作为应用之间,或者组件之间传递数据的机制。广播体现在方方面面,例如开机完成后系统会产生一条广播,接收到这条广播就能实现开机启动服务的功能。
然后广播的类型有:
普通广播:它对于多个接收者来说是完全异步的,每个接受者不需要等待就可以接收到广播,接收者之间无法相互影响,也无法终止广播;
有序广播:顾名思义,它只发送到优先级较高的接收者那里,然后再由其转播到优先级低的接收者那里,同时,优先级高的接收者可以终止这个广播。例如短信可以被拦截。
粘性广播:就是假如接收者这边没有启动,但是发出了广播,然后接收者这边才启动,但是接收者依然可以接收到这个广播。
广播接收者有两种注册方法,一种是程序动态注册,它的特点是当用来注册的Activity关掉后,广播也就失效了;另一种方法是在AndroidManifest文件中进行静态注册,静态注册不需要担心广播接收器是否被关闭,只要设备是开启状态,广播接收器也是打开着的。
实现
1.注册服务MusicService

2.在布局文件中设置按钮控件,并修改控件id,布局如图:

3.导入音频文件和以往不同,本次导入音频文件要新建assets文件夹 (assets文件比较特殊系统在编译的时候不会编译assets下的资源文件,所以我们不能通过R.XXX.ID的方式访问它们。Android系统为我们提供了一个AssetManager工具类。查看官方API可知AssetManager提供对应用程序的原始资源文件进行访问;这个类提供了一个低级别的API,它允许你以简单的字节流的形式打开和读取和应用程序绑定在一起的原始资源文件。)

4.编写MainActicty文件(主要设置按钮监听方法,并编写广播方法用于接收点击按钮所发出的intent)

5.编写Music按钮点击事件的触发方法,用于完成播放/暂停上一曲,下一曲等功能(代码见后文仓库)
6.编写读取音频文件的方法

7.完善服务启动方法

代码仓库
https://gitee.com/avalonyyy/music-box.git gitee仓库