播放音乐的行为写在服务里,Activity去调用Service里面到方法,进行音乐播放,当Activity结束后,音乐播放器停止播放

界面:

MainActivity:

package liudeli.service1;

import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.Environment;
import android.os.IBinder;
import android.view.View;
import android.widget.Button;
import android.widget.Toast; import liudeli.service1.service.MyService5;
import liudeli.service1.service.inter.IMusicPlay; public class MainActivity5 extends Activity implements View.OnClickListener { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main5); initView();
initListener();
} @Override
protected void onStart() {
super.onStart();
// 绑定服务
bindService(new Intent(this, MyService5.class), connection, BIND_AUTO_CREATE);
} private Button btPlayMusic;
private Button btPausedContinue;
private Button btStop; private void initView() {
btPlayMusic = findViewById(R.id.bt_play_music);
btPausedContinue = findViewById(R.id.bt_paused_continue);
btStop = findViewById(R.id.bt_stop);
} private void initListener() {
btPlayMusic.setOnClickListener(this);
btPausedContinue.setOnClickListener(this);
btStop.setOnClickListener(this);
} private IMusicPlay iMusicPlay; private ServiceConnection connection = new ServiceConnection() {
/**
* 连接到服务
* @param name
* @param service
*/
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
iMusicPlay = (IMusicPlay) service;
} /**
* 断开连接
* @param name
*/
@Override
public void onServiceDisconnected(ComponentName name) {
}
}; @Override
protected void onDestroy() {
super.onDestroy();
// 解绑服务:注意bindService后 必须要解绑服务,否则会报 连接资源异常
if (null != connection) {
unbindService(connection);
}
} // 音乐文件到路径
private final String MUSIC_PATH = Environment.getExternalStorageDirectory() + "/cjyy.mp3"; @Override
public void onClick(View v) { if (iMusicPlay == null) {
Toast.makeText(this, "音乐播放服务连接失败", Toast.LENGTH_LONG).show();
return;
} switch (v.getId()) { case R.id.bt_play_music:
iMusicPlay.playMusic(MUSIC_PATH);
break; case R.id.bt_paused_continue:
if ("暂停播放".equals(btPausedContinue.getText().toString())) {
btPausedContinue.setText("继续播放");
iMusicPlay.pausedPlay();
} else {
btPausedContinue.setText("暂停播放");
iMusicPlay.continuePlay();
}
break; case R.id.bt_stop:
iMusicPlay.stopPlay();
break; default:
break;
}
}
}

增强版Binder扩展,接口定义:

package liudeli.service1.service.inter;

public interface IMusicPlay {

    /**
* 播放音乐
* @param musicPath 音乐文件的路径
*/
void playMusic(String musicPath); /**
* 暂停播放
*/
void pausedPlay(); /**
* 继续播放
*/
void continuePlay(); /**
* 停止播放
*/
void stopPlay();
}

Service代码:

package liudeli.service1.service;

import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Binder;
import android.os.IBinder;
import android.util.Log; import java.io.IOException; import liudeli.service1.service.inter.IMusicPlay; public class MyService5 extends Service { private final String TAG = MyService5.class.getSimpleName(); @Override
public IBinder onBind(Intent intent) {
Log.d(TAG, "绑定成功");
return new PlayMusicBinder();
} private MediaPlayer mediaPlayer; /**
* 增强版Binder,扩展出播放音乐

Android-bindService本地服务-音乐播放-上的更多相关文章

  1. Android-bindService本地服务-音乐播放(后台播放)-下

    在上一篇  Android-bindService本地服务-音乐播放-上,博客中是不能在后台中播放到,这次博客增加了一个后台播放 通常情况下,Activity切换到后台,Service提升到前台进程, ...

  2. Android应用开发--MP3音乐播放器代码实现(一)

    需求1:将内存卡中的MP3音乐读取出来并显示到列表当中 1.   从数据库中查询所有音乐数据,保存到List集合当中,List当中存放的是Mp3Info对象 2.   迭代List集合,把每一个Mp3 ...

  3. Android基于发展Service音乐播放器

    这是一个基于Service组件的音乐播放器,程序的音乐将会由后台的Service组件负责播放,当后台的播放状态改变时,程序将会通过发送广播通知前台Activity更新界面:当用户单击前台Activit ...

  4. 项目源码--Android类似酷狗音乐播放器

    下载源码 知识技能概要: 1.音乐文件的扫描与管理 2.音频流的解码 3. UI控件的综合使用 4.播放列表方式管理 5.随机播放方式 6.源码带详细的中文注释 ...... 详细介绍 1. 音乐文件 ...

  5. Android 仿百度网页音乐播放器圆形图片转圈播放效果

    百度网页音乐播放器的效果  如下 : http://www.baidu.com/baidu?word=%E4%B8%80%E7%9B%B4%E5%BE%88%E5%AE%89%E9%9D%99& ...

  6. android测试本地服务调试流程

    我今天调试的整个过程 1,安卓发现连不上本地的tomcat 2,使用浏览器直接尝试,发现可以连上 3,怀疑是安卓APP和浏览器访问有差异,后上网搜索不到APP,只有浏览器尝试       再不就是改I ...

  7. Android多媒体框架对音乐播放器的支持

    下面介绍一下Andriod多媒体框架对开发者提供的支持有哪些.               1. MediaScannerReceiver                   这个广播接收者在接收到A ...

  8. ios手机Safari本地服务连不上

    问题: 今天在本地起服务准备测下ios手机端页面,结果发现:页面可以打开,但是登录不上. 用alert定位了下,await fn() 报错被try()catch(){}捕获了... 原因: 该机子不支 ...

  9. Android课程---简单的音乐播放器

    第一个:用Activity实现 activity_music_play1.xml <?xml version="1.0" encoding="utf-8" ...

随机推荐

  1. VS2010 C++环境下DLL和LIB文件的生成与调试 备忘

    利用VS2010工具,调试DLL文件的方法现总结如下: 在一个解决方案中生成两个工程,假设MYDLL和MYDLG两个工程,前者是DLL工程,后者DLG调用前边的DLL工程.设置如下: 目录如下:图,本 ...

  2. log4net 极简配置

    log4net的配置详解 分类: C#2013-10-01 22:45 5335人阅读 评论(4) 收藏 举报 log4net日志框架         前言:没买到1号回家的票,所以在祖国64岁生日之 ...

  3. (转)js弹窗&返回值(window.open方式)

    本文转载自:http://hi.baidu.com/z57354658/item/5d5e26b8e9f42fa7ebba93d4 js弹窗&返回值(window.open方式) test.h ...

  4. php 文件缓存类

    //文件缓存类 class FileCache { private $cacheTime = 3600; //默认缓存时间 秒 private $cacheDir = './filecache'; / ...

  5. jquery内容补充

    jquery除了咱们上面讲解的常用知识点之外,还有jquery 插件.jqueryUI知识点 jqueryUI 官网: https://jqueryui.com/ jqueryUI 中文网: http ...

  6. RESTful API终极版序列化封装

    urls: from django.conf.urls import url from app01 import views urlpatterns = [ # url(r"comment/ ...

  7. windows7配置Nginx+php+mysql的详细教程

    windows7配置Nginx+php+mysql的详细教程 作者:Vincent.李 字体:[增加 减小] 类型:转载 时间:2016-09-04我要评论 这篇文章主要介绍了windows7配置Ng ...

  8. Androdi Gradle build project info 很慢

    Androdi Gradle build project info 很慢 http://blog.csdn.net/stupid56862/article/details/78345584   原创  ...

  9. C# JSON 序列化

    1.JavaScriptSerializer System.Web.Extensions.dll System.Web.Script.Serialization命名空间 Serialize Deser ...

  10. 使用libcurl显示下载进度

    使用libcurl显示下载进度 http://blog.csdn.net/zhouzhenhe2008/article/details/53876622