Android 音乐APP(六)Activity和Notification通讯

//打开权限

mVersionField.setAccessible(true);

//得到的就是mVersion在当前类中的值

Object o = mVersionField.get(this);

//把它的值给mLastVersion

mLastVersionField.set(observerWrapper,o);

}

}

}

这里面的代码是我在第一次听课的过程中一步一步写的,整体的思路并不是我想的,也可以说是学习了。上面的代码也都有注释,就不过多解释了,下面看怎么去用,首先通过通知栏控制Activity,也就是页面,下面我就都用页面二字代替Activity了。说白了其中的思路就是当我点击了通知栏上的某一个按钮的时候,服务会知道这个事情,因为之前注册了广播,但是页面怎么知道这个事情呢,所以其实就是要让服务去告诉页面,我当前点击了通知栏上某一个按钮。然后页面就去做出相应的操作,在这里服务是被观察者,而页面是观察者,所以我们可以在服务中安插一个卧底,让它告诉我们通知栏干了啥事。这么一想思路就很清晰了,下面来看具体的实现。

进入MusicService中,

/**

  • 通知栏控制Activity页面UI

*/

private LiveDataBus.BusMutableLiveData activityLiveData;

创建对象,传入String就代表接收的也是String,这里你可以传递任何类型的数据。

然后要在onCreate进行实例化。

activityLiveData = LiveDataBus.getInstance().with(“activity_control”, String.class);

这样,卧底就安插好了,下面就是要告诉卧底什么时候要给页面传递消息了。

在这里插入图片描述

首先当然是播放了,注意上图中红色方框中的代码,postValue就是发送消息,PLAY是在Constant中定义的全局变量。就是告诉页面,我当前的音乐开始播放了。

在这里插入图片描述

当我点击通知的播放按钮时回调用这个方法,那么在这个方法里面首先控制了通知栏本身的按钮UI,于是我再加上对页面的控制,就是一举两得。

在这里插入图片描述

关闭通知栏的时候也要告诉页面,这个时候页面上的UI也要做出改变,

在这里插入图片描述

在这里插入图片描述

下一首和上一首都要通知页面,到这里该告诉页面的信息都说了,再说的话卧底可能就要暴露了,不太好吧。既然卧底的消息都发出去了,那么页面怎么做出相应的改变呢?进入MainActivity。

/*

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值