码迷,mamicode.com
首页 > 移动开发 > 详细

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

时间:2015-12-27 14:36:44      阅读:402      评论:0      收藏:0      [点我收藏+]

标签:

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 }

 

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

标签:

原文地址:http://www.cnblogs.com/liyiran/p/5079987.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!