移动开发技术3:基于广播组件的简易音乐盒设计

移动开发技术3:基于广播组件的简易音乐盒设计

需求分析:

本次实验目标为完成一个基于广播组件的简单音乐盒
需要实现的功能:播放、暂停、结束、上一首、下一首

BroadcastReceiver简述

BroadcastReceiver是Android四大组件之一,是用来接收来自系统和应用中的广播。BroadcastReceiver有两种注册方式,分别是静态注册和动态注册。

静态注册

注册方式:在AndroidManifest里进行注册。
首先在Application节点里头,添加一个receiver节点。name则是我们的广播接收者。接着,在AndroidMainfest.xml里的application节点里添加receiver节点,并且添加意图过滤的action且需要添加权限
注意
静态注册,内部广播接收者
1、这个内部广播接收者需要声明为静态的;
2、这个内部的静态接收者必须是public的;
3、在receiver的name里是外部类的名字$内部类的名字

动态注册

1.在相关的activity中new MyBroadcastReceiver()
2.new intentFilter,调用其setAction()方法,参数中传入相关值的action调用3.context.registerReceiver()方法进行注册,方法的第一个参数为broadcastReceiver对象,第二个则是intentFilter对象

两种注册方式的区别

静态注册可以一直监听着,即使应用没有起来,也可以监听着,但是耗资源,长期监听着。
静态注册的广播优先级高于动态注册的广播。
动态注册的优点就是省资源,需要的时候才监听,不需要的时候需要取消注册。

值得注意的是,一般Android项目中是禁止静态注册的
原因
:如果不是必须一直监听着的广播,一直监听着会消耗资源,所以静态注册会提高系统的效率。而动态注册的话需要释放资源取消注册,否则会报错。这样子有利于提高系统的速度。

实验内容

1.在AndroidManifest.xml里配置service
        <service
            android:name=".MusicService"
            android:enabled="true"
            android:exported="true">service>
2.添加实验需要的图片以及音乐资源

图片资源复制到res/drawable文件夹下即可(记得调整图片大小)
音乐资源首先要在app下新建一个assets文件夹,然后将MP3文件存放到该文件夹下即可
移动开发技术3:基于广播组件的简易音乐盒设计_第1张图片

3.UI设计部分

使用两个Textview控件显示歌曲信息,四个ImageButton控件以实现相应功能
移动开发技术3:基于广播组件的简易音乐盒设计_第2张图片

4.逻辑控制代码

MainActivity.java
首先在函数最外层定义所需要用到的变量和子类。其中activityReceiver用于监听Service传回的广播;onCreate()函数用于获取相应按钮以及添加监听器、注册receiver;ActivityReceiver子类,负责监听从Service传回来的广播,并用switch控制系统状态,且定义了在音乐播放的不同状态下显示的图片;onClick函数,用switch判断点击事件,向Service发送广播

MusicService.java
onCreate函数
添加监听器、注册receiver,并向Activity发送广播;MyReceiver子类,接收MainActivity发来的信息,并发送广播,定义了接收到来自MainActivity的广播后的处理过程;使用prepareAndPlay函数,准备并播放音乐

结果展示

移动开发技术3:基于广播组件的简易音乐盒设计_第3张图片
代码仓库:
broadcast

你可能感兴趣的:(Android)