Android开发之音乐播放器的实现

Android音乐播放器

使用到Android的Actiivity和Service组件

播放音乐使用Service组件

操作按钮等使用Activity与用户交互

同时为了把服务所在进程变成服务进程,防止Activity销毁时依旧执行Service,需要使用Service启动的混合调用,即先使用startService(),然后使用bindService()方法。

原理:使用bindService()方法,启动service。在ServiceConnection的onServiceConnected()方法中返回一个iBinder对象,通过该对象可以操作音乐service中的播放音乐的方法。

代码:

MainActivity

 1 import android.app.Activity;
 2 import android.content.ComponentName;
 3 import android.content.Intent;
 4 import android.content.ServiceConnection;
 5 import android.os.Bundle;
 6 import android.os.IBinder;
 7 import android.view.View;
 8
 9 public class MainActivity extends Activity {
10
11     private MyServiceConnection conn;
12     private MusicInterface mi;
13
14     @Override
15     protected void onCreate(Bundle savedInstanceState) {
16         super.onCreate(savedInstanceState);
17         setContentView(R.layout.activity_main);
18
19         Intent intent = new Intent(this, MusicService.class);
20         startService(intent);
21         conn = new MyServiceConnection();      startService(intent);   //把服务所在进程变成服务进程,防止activity销毁时,被杀掉
22         bindService(intent, conn, BIND_AUTO_CREATE);
23     }
24
25     class MyServiceConnection implements ServiceConnection {
26
27         @Override
28         public void onServiceConnected(ComponentName name, IBinder service) {
29             // TODO Auto-generated method stub
30             mi = (MusicInterface) service;
31         }
32
33         @Override
34         public void onServiceDisconnected(ComponentName name) {
35             // TODO Auto-generated method stub
36
37         }
38
39     }
40
41     public void play(View v) {
42         mi.play();
43
44     }
45
46     public void pause(View v) {
47         mi.pause();
48     }
49 }

MusicService:

 1 import android.app.Service;
 2 import android.content.Intent;
 3 import android.os.Binder;
 4 import android.os.IBinder;
 5
 6 public class MusicService extends Service {
 7
 8     @Override
 9     public IBinder onBind(Intent intent) {
10         // TODO Auto-generated method stub
11         return new MusicControl();
12     }
13
14     class MusicControl extends Binder implements MusicInterface {
15         public void play() {
16             MusicService.this.play();
17         };
18
19         public void pause() {
20             MusicService.this.pause();
21         }
22     }
23
24     public void play() {
25         System.out.println("播放音乐");
26     }
27
28     public void pause() {
29         System.out.println("暂停音乐");
30     }
31
32 }

把MusicControl类抽取出来为接口,这样可以在MainActivity中只可以访问接口的方法,MusicControl类中的其他方法不被方法

MusicInterface:

1 public interface MusicInterface {
2
3     public void play();
4     public void pause();
5
6 }
时间: 2024-12-14 23:45:06

Android开发之音乐播放器的实现的相关文章

Flex4/Flash+BlazeDS+JAVA+MySql 开发在线音乐播放器实例

要求 必备知识 本文要求基本了解 Adobe Flex编程知识和JAVA基础知识. 开发环境 MyEclipse10/Flash Builder4.6/Flash Player11及以上 演示地址 演示地址 传统网络程序的开发是基于页面的.服务器端数据传递的模式,把网络程序的表现层建立于HTML页面之上,而HTML是适合于文本的,传统的基于页面的系统已经渐渐不能满足网络浏览者的更高的.全方位的体验要求了.而富互联网应用(Rich Internet Applications,缩写为RIA)的出现就

Android 实现简单音乐播放器(二)

在Android 实现简单音乐播放器(一)中,我介绍了MusicPlayer的页面设计. 现在,我将解析MusicPlayer的功能实现,就讲一些主要的点和有趣的细节,结合MainActivity.java代码进行说明(写出来可能有点碎……一向不太会总结^·^). 一.功能菜单 在MusicPlayer中,我添加了三个菜单: search(搜索手机中的音乐文件,更新播放列表). clear(清除播放列表……这个功能是最初加进去的,后来改进之后,已经没什么实际意义). exit(退出). menu

Android Mediaplayer本地音乐播放器(绑定服务)

本文章介绍MediaPlayer本地音乐播放器,而当应用程序不再位于前台且没有正在使用它的活动时,为了确保音频继续播放,我们需要建立一个服务Service. Activity与绑定服务Service之间的交互是本文章的重点(这里需要说明一点的是,Activity不能直接访问服务对象中的方法,所以才有了我们一下的介绍,这也是为服务的安全等方面的考虑). 直接上代码: 布局文件:activity_main: <LinearLayout xmlns:android="http://schemas

Android获取第三方音乐播放器的音乐信息

最近在做Android手机获取第三方音乐播放器的音乐信息.一开始头疼的很,采集第三方的信息太难了,后面看了一遍博文是关于怎么监听系统的音乐播放信息,发现在播放下一首音乐的时候会发送广播,广播会包含下一首信息. Android系统的音乐播放器会发送: com.android.music.metachanged 那怎么获取第三方的音乐信息? 先反编译了QQ音乐的Apk, 找到它关于player的service,发现里面用的就是"com.android.music.metachaged" 接

Android 实现简单音乐播放器(一)

今天掐指一算,学习Android长达近两个月了,今天开始,对过去一段时间的学习收获以及遇到的疑难杂症做一些总结. 简单音乐播放器是我自己完成的第一个功能较为完整的APP,可以说是我的Android学习之路上的一个小小里程碑,给我增加了很多信心(~~真容易获得满足~~).从下面开始,我将详细介绍MusicPlayer的设计过程. 首先,先看一下这个项目的工程目录和运行效果:      从上面的图片看到,整个工程的布局文件有两个:activity_main.xml和musiclist.xml,其中,

javascript开发迷你音乐播放器

知识点:html/css布局思维,音频标签api运用,css3自定义动画,Js音乐播放控制,歌词同步等. html代码: <textarea id="txt" style="display:none"> [00:00.64]小幸运 - 谭嘉仪 [00:02.15]词:徐世珍&吴辉福 [00:03.70]曲:JerryC [00:04.14]编曲:JerryC [00:13.77]我听见雨滴落在青青草地 [00:19.89]我听见远方下课钟声响起

Android MVC实现一个音乐播放器

MVCPlayer 我尝试在android上使用MVC模式来开发一个音乐播放器.GitHub地址:https://github.com/skyhacker2/MVCPlayer 什么是MVC 来自维基百科 控制器 Controller - 负责转发请求,对请求进行处理. 视图 View - 界面设计人员进行图形界面设计. 模型 Model - 程序员编写程序应有的功能(实现算法等等).数据库专家进行数据管理和数据库设计(可以实现具体的功能). 那么在android上,Activity就是Cont

10个免费开源的JS音乐播放器插件

音乐播放器在网页设计中有时候会用到,比如一些时尚类.音乐或影视类等项目,但这些 网页播放器 插件比较少见,所以这里为大家整理一个集合,也许会有用到的时候. 下面整理的播放器有些是支持自适应的,如果需要用到微信或手机上,可根据自己需要求,选择对应的网页播放器.  ● Codrops Audio Codrops Audio 界面使用纯CSS编写,支持响应式,可以方便在桌面.平板以及手机设备上使用.界面因为是CSS编写,所以如果懂CSS样式,可以自己设计一个新的样式来修改. 演示&下载 ● Dark

Java音乐播放器-乐乐音乐(PC版)

乐乐音乐目前是基于musique开发的一个java音乐播放器,之前开发了一个android版本的音乐播放器,现在把android版本的代码移植过来PC版本这里.不过遇到了一个难题,就是java如果要播放mp3等歌曲,要安装jmf,我觉得安装这jmf真是太麻烦了,电脑是64位的伤不起啊.于是我从网上搜了一下,搜到了不少的开源播放器,如: (1)YOYOPlayer,感觉 YOYOPlayer整体上都不错,我的歌词也参考了一下它的实现,不过它在播放的时候,有一个问题,就是快进的时候,拖动条上显示的时