实验三 广播和服务

本文介绍如何在Android中创建一个广播接收器SmsReceiver,当接收到短信时启动音乐服务MyAudioService。同时,通过MainActivity实现按钮逻辑,使得在收到短信时按钮变为可点击,用于停止音乐播放。详细步骤包括广播接收器的注册、服务的创建与注册、权限申请以及用户交互。实验结果显示,音乐播放与停止功能正常工作。
摘要由CSDN通过智能技术生成

首先确定实验目的:

编写广播接收者程序,当收到短信时,对短信广播做出响应:app会启动音乐播放服务。
顺便,写一个按钮,当收到短信广播时,由不可点击切换为可点击,点击按钮,就可以停止音乐播放。

1. 创建广播接受组件:SmsReceiver.java

1.1 创建一个类SmsReceiver继承类BroadcastReceiver

当接收到广播时,执行重写的onReceive()方法

/*
    本广播接收者程序分别调用了应用的主Activity程序和播放音乐的服务程序
*/
public class SmsReceiver extends BroadcastReceiver {
   
    @Override
    public void onReceive(Context context, Intent intent) {
   

        Intent serviceIntent = new Intent(context, MyAudioService.class);
        //在广播组件里,通过上下文对象启动音乐播放服务组件
        context.startService(serviceIntent);

        //新建调用Activity组件的意图
        Intent activityIntent = new Intent(context, MainActivity.class);
        activityIntent.putExtra("iscast", true);  //携带数据
        //新建栈用来存放被启动的Activity(当已经存在时,只做移动处理)
        activityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        //在广播组件里,通过上下文对象启动Activity组件
        context.startActivity(activityIntent);
    }
}

而这个广播接收组件是接收谁发出的广播呢?

1.2 注册广播接受程序

在manifests中的application标签内添加receiver标签
name绑定类,intent-filter过滤请求触发广播

        <receiver
            android:name=".SmsReceiver"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
            </intent-filter>
        </receiver>

注意其中的intent-filter标签,里面的配置就是用于过滤其中指定的请求,这里的action标签就是用于过滤出短信消息触发广播。

当手机收到短信时,系统发出一个广播,这里receiver所绑定的SmsReceiver类接受到广播,然后执行onReceive()函数。

2. 添加音乐服务文件MyAudioService.java

我们想要收到广播时,播放音乐,那么我们得添加一个音乐服务

2.1 创建一个类MyAudioService继承类Service

public class MyAudioService extends Service {
   
    MediaPlayer mediaPlayer;

    @Override
    
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值