手机 音乐播放器 后台 播放 如何停止

拒绝访问 | bbs.wfun.com | 百度云加速
请打开cookies.
此网站 (bbs.wfun.com) 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(3ed704b8712a43ad-ua98).
重新安装浏览器,或使用别的浏览器勾兑油, 积分 723, 距离下一级还需 277 积分
勾兑油, 积分 723, 距离下一级还需 277 积分
勾兑油, 积分 723, 距离下一级还需 277 积分
主题 : 16|帖子 : 295|积分 : 723
该用户从未签到
网易云音乐,播放时点清空最近任务就停止播放了。
现在只有在任务里加个锁定,但这样又长驻内存不太科学。
有没其它办法,令播放时不清空退出任务。
勾兑油, 积分 723, 距离下一级还需 277 积分
勾兑油, 积分 723, 距离下一级还需 277 积分
勾兑油, 积分 723, 距离下一级还需 277 积分
主题 : 1|帖子 : 439|积分 : 723
该用户从未签到
这个问题提的好
| 来自:OnePlus3T |
勾兑油, 积分 723, 距离下一级还需 277 积分
勾兑油, 积分 723, 距离下一级还需 277 积分
勾兑油, 积分 723, 距离下一级还需 277 积分
主题 : 1|帖子 : 439|积分 : 723
该用户从未签到
又不让长驻,又让服务不停止,把网易云音乐加到系统服务不知道能不能解决,我也不太懂
| 来自:OnePlus3T |
勾兑油, 积分 723, 距离下一级还需 277 积分
勾兑油, 积分 723, 距离下一级还需 277 积分
勾兑油, 积分 723, 距离下一级还需 277 积分
主题 : 16|帖子 : 295|积分 : 723
该用户从未签到
有一种 思路就是,清除任务不使用深度清除,但是官方 只有全局设置,没有针对某个app的。
润滑油, 积分 1970, 距离下一级还需 30 积分
润滑油, 积分 1970, 距离下一级还需 30 积分
润滑油, 积分 1970, 距离下一级还需 30 积分
主题 : 12|帖子 : 212|积分 : 1970
该用户从未签到
这么多G内存,没事清什么内存呢
| 来自:OnePlus5T |
勾兑油, 积分 723, 距离下一级还需 277 积分
勾兑油, 积分 723, 距离下一级还需 277 积分
勾兑油, 积分 723, 距离下一级还需 277 积分
主题 : 16|帖子 : 295|积分 : 723
该用户从未签到
放在后台耗电,
润滑油, 积分 1970, 距离下一级还需 30 积分
润滑油, 积分 1970, 距离下一级还需 30 积分
润滑油, 积分 1970, 距离下一级还需 30 积分
主题 : 12|帖子 : 212|积分 : 1970
该用户从未签到
何金牛 发表于
放在后台耗电,
听音乐的时候不清理后台,不听的时候再清理咯
| 来自:OnePlus5T |
掺水油, 积分 268, 距离下一级还需 232 积分
掺水油, 积分 268, 距离下一级还需 232 积分
掺水油, 积分 268, 距离下一级还需 232 积分
主题 : 3|帖子 : 59|积分 : 268
该用户从未签到
将音乐小部件添加到氢视窗,可以免被清理,我说我怎么没这问题…刚才我还特意测试一下…
3.jpg (92.21 KB, 下载次数: 0)
10:11 上传
【EXIF信息】
制造商 : 型号 : 拍摄时间 : 快门速度 : 快门光圈 : ISO感光度 : 焦距 : 0.00mm
3.jpg (205.71 KB, 下载次数: 0)
10:09 上传
【EXIF信息】
制造商 : 型号 : 拍摄时间 : 快门速度 : 快门光圈 : ISO感光度 : 焦距 : 0.00mm
| 来自:OnePlus5T |
掺水油, 积分 268, 距离下一级还需 232 积分
掺水油, 积分 268, 距离下一级还需 232 积分
掺水油, 积分 268, 距离下一级还需 232 积分
主题 : 3|帖子 : 59|积分 : 268
该用户从未签到
不忘储薪 发表于
这个问题提的好
看我刚才回复的,添加音乐小部件到氢视窗
| 来自:OnePlus5T |
勾兑油, 积分 723, 距离下一级还需 277 积分
勾兑油, 积分 723, 距离下一级还需 277 积分
勾兑油, 积分 723, 距离下一级还需 277 积分
主题 : 16|帖子 : 295|积分 : 723
该用户从未签到
的确是可以,厉害 了
OnePlus 5T
一加手机5T勋章
一加四周年纪念勋章
深圳市万普拉斯科技有限公司 版权所有(wx.seekBackgroundAudio(OBJECT)
作用:控制音乐播放进度。
注意: 该事件 会触发 wx.onBackgroundAudioPlay(CALLBACK) 事件 ,也就是相当于在调整进度后,后台会自动的调用wx.playBackgroundAudio(OBJECT)函数。
使用 audio组件 制作的播放器,即使点击&显示在微信顶部&,音乐依然会停止,使用 wx.playBackgroundAudio 相关API制作的播放器才不会。
wx.playBackgroundAudio(OBJECT),wx.pauseBackgroundAudio(),wx.seekBackgroundAudio(OBJECT),wx.stopBackgroundAudio()
注意:上述四个操作都是 异步操作,都可以设置OBJECT参数,都有 success , fail , complete 回调 ,参照 wx.playBackgroundAudio(OBJECT) 的 OBJECT说明,
后台播放音乐暂停后怎么从上次播放的地方继续播放?
使用 seekBackgroundAudio。
官网并没有相关解释,初步思路是使用 playBackgroundAudio 播放音乐后,再调用 seekBackgroundAudio 将进度调整到上次停止的地方,但是由上面的第一条所描述,这样做的结果会导致onBackgroundAudioPlay 会被触发两次,所以我们可以直接调用seekBackgroundAudio调整播放进度即可(前提是之前有播放过歌曲,就是确保歌曲地址已经被设置,不然无效),随后音乐会自动播放.
使用 playBackgroundAudio
经测试调用playBackgroundAudio,并且传入的歌曲地址参数和上次相同时,歌曲会从上次暂停的时间位置继续播放
wx.stopBackgroundAudio
注意:经测试,再调用 wx.stopBackgroundAudio 函数之后,紧接着调用 wx.playBackgroundAudio ,在pc端模拟测试时正常,后台会停止播放音乐,然后再播放新的音乐,但是,在手机上却会打断紧接着调用的 wx.playBackgroundAudio 的播放(坑啊T-T),测试真机为phone5。
回调函数的触发时机。
wx.onBackgroundAudioPlay(CALLBACK) 监听音乐播放。
wx.onBackgroundAudioPause(CALLBACK) 监听音乐暂停。
wx.onBackgroundAudioStop(CALLBACK) 监听音乐停止。
上述监听函数会在调用对应的wx.playBackgroundAudio(OBJECT),wx.pauseBackgroundAudio(),wx.stopBackgroundAudio()等函数时,会被立即触发,对应的操作可能并没有完成,比如调用 playBackgroundAudio播放音乐,只是给后台发送信息,要播放音乐,但是此时音乐并没有开始播放,可能还在加载等等,但是onBackgroundAudioPlay的回调函数会立即调用。
而wx.playBackgroundAudio(OBJECT),wx.pauseBackgroundAudio(OBJECT),wx.seekBackgroundAudio(OBJECT),wx.stopBackgroundAudio(OBJECT)中OBJECT里面的回调函数会在如下对应条件触发:
在歌曲加载完成之后,可以播放时触发
在歌曲暂停之后,没有声音之后触发
歌曲进度设置完成并且开始播放之后触发
歌曲停止之后触发
wx.onBackgroundAudioPlay(CALLBACK) , wx.onBackgroundAudioPause(CALLBACK) , wx.onBackgroundAudioStop(CALLBACK) 函数可以监听后台操作歌曲时,触发的事件,比如当小程序退出后,音乐暂停,也包括我们使用 wx.pauseBackgroundAudio 等函数时触发的事件。
在wx.onBackgroundAudioPause(OBJECT)里面的 暂停回调函数函数不会被触发,wx.pauseBackgroundAudio(OBJECT)里面的回调函数只是当次主动操作有效。后台自动暂停歌曲时并不会触发该回调函数,wx.playBackgroundAudio(OBJECT),wx.pauseBackgroundAudio(),wx.seekBackgroundAudio(OBJECT),wx.stopBackgroundAudio()都是一样的机制。
怎么获取歌曲播放时的 回调函数?
微信小程序官方文档,playBackgroundAudio相关额API并没有提供此函数,但是提供了wx.getBackgroundAudioPlayerState函数用于获取歌曲播放时歌曲额进度信息,所以我们可以使用setInterval定时函数模拟这个事件。下面是我模拟的相关事件,
var timer = setInterval(() =& {
wx.getBackgroundAudioPlayerState({
success:function(res){
//调用需要更新的
//self._onUpdate(res);
最重要的一点,pc端的模拟器,上面描述的事件触的顺序会可能和手机端的触发顺序不一样(T-T,天坑,本来调试好好的,pc端app突然就抽风,炸了,有时候播放歌曲后 立刻就暂停,至今不知道是为什么,手机端却是正常的),所以还是多真机调试吧,都是泪。
阅读(...) 评论()Android开发中后台播放音乐(Service方式)功能实现方法
实现后台播放音乐(Service方式)
先导android四大之Service知识可以参考博客:
https://blog.csdn.net/weixin_/article/details/
在res文件夹下添加raw文件夹,添加mp3/4格式的音乐文件
注意命名规则只能是a-z,0-9,和下划线_ 不能大写字母和-
AndroidManifest.xml中
android:exported是否支持其它应用调用当前组件
新建一个MusicService类继承Service并且implements MediaPlayer.OnCompletionListener监听播放完成事件
重写service的onCreate()方法
private MediaPlayer mediaP
//Service初始化时调用
public void onCreate(){
super.onCreate();
//初始化时就创建一个MediaPlayer进行资源链接
mediaPlayer = MediaPlayer.create(this, R.raw.floating_clound);
mediaPlayer.setOnCompletionListener(this);
若只是想简单的进行后台播放
重写onStartCommand 方法
public int onStartCommand (Intent intent,int flag, int startId) {
// TODO Auto-generated method stub
super.onStartCommand(intent,flag,startId);
if(!mediaPlayer.isPlaying()){
// 开始播放
mediaPlayer.start();
// 允许循环播放
mediaPlayer.setLooping(true);
return START_STICKY;
返回值可以参考博客:https://blog.csdn.net/weixin_/article/details/
若想进行绑定
public IBinder onBind(Intent intent) {
if(!mediaPlayer.isPlaying()){
// 开始播放
mediaPlayer.start();
// 允许循环播放
mediaPlayer.setLooping(true);
public boolean onUnbind(Intent intent) {
// TODO Auto-generated method stub
//松绑Service,会触发onDestroy()
if(mediaPlayer.isPlaying()){
mediaPlayer.stop();
return super.onUnbind(intent);
重写Ondestroy方法
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
//先停止 再释放
if(mediaPlayer.isPlaying()){
mediaPlayer.stop();
mediaPlayer.release();
当Audio播放完的时候触发该动作
* 当Audio播放完的时候触发该动作
public void onCompletion(MediaPlayer player) {
// TODO Auto-generated method stub
// 结束Service
stopSelf();
并且写一个类继承Binder
class MyMusicBinder extends Binder{
//返回Service对象
MusicService getService(){
return MusicService.
在Activity中:
// 创建自定义的音乐Service对象
private MusicService musicS
在Activity中创建一个private connector类 (连接服务的Client)监听Service状态的变化
private class MusicConnector implements ServiceConnection {
//成功绑定时调用 即bindService()执行成功同时返回非空Ibinder对象
public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
musicService = ((MusicService.MyMusicBinder) iBinder).getService();
//不成功绑定时调用
public void onServiceDisconnected(ComponentName componentName) {
musicService =
Log.i(&binding is fail&, &binding is fail&);
在点击事件中:(点击播放和暂停按钮)
private View.OnClickListener listener = new View.OnClickListener() {
public void onClick(View v) {
Button btn = (Button)
Intent intent = new Intent();
intent.setClass(MainActivity.this, MusicService.class);
switch (btn.getId()) {
case R.id.play: {
conn= new MusicConnector();
bindService(intent, conn, Context.BIND_AUTO_CREATE);
case R.id.pause: {
//结束Service
unbindService(conn);
} catch (Exception e) {
报错:leaked ServiceConnection
在Activity关闭的时候,没有去关闭Service
解决: 在onDestroy() 方法中解除service的绑定(binding模式)或者stopService(非binding模式)
public void onDestroy(){
super.onDestroy();
unbindService(conn);
问题: 暂停音乐再重新播放会重头开始
因为调用onbind又执行了onDestroy
具体的启动情况有下:
1.当启动时,单独调用bindService方法,在unbindService后,会执行service的onUnbind,再执行onDestroy方法。
2.当启动时,先调用startService,再调用bindService方法后,在unbindService后,会执行service的onUnbind,不会执行onDestroy方法。除非你在执行stopService.
3. 先调用startService,在调用stopService,会执行service的onDestroy方法
点击播放下一首,前一首,以及进度设置待完善&

我要回帖

更多关于 音乐播放器 的文章

 

随机推荐