播放音乐案例
分析:
和上一篇文章的结构是一样的,只不过我们需要在这里里面加上播放音乐的一些操作:
其实也就是调用系统的播放音乐的API而已,写在服务里面就好,
//媒体播放器
private MediaPlayer player;
1 public void onCreate() {
2 File file=new File(Environment.getExternalStorageDirectory(),"a.mp3");
3 player =new MediaPlayer();
4 try {
5 //设置播放源
6 player.setDataSource(file.getAbsolutePath());
7 } catch (Exception e) {
8 e.printStackTrace();
9 }
10 Log.d("fanfan", "onCreate");
11 super.onCreate();
12 }
1 public int onStartCommand(Intent intent, int flags, int startId) {
2
3 try {
4 //设置准备资源监听器,当资源准备完毕,回调监听器的onPrepared函数
5 player.setOnPreparedListener(new OnPreparedListener() {
6 @Override
7 //准备资源准备好了会调用这个
8 public void onPrepared(MediaPlayer arg0) {
9 //播放音乐
10 player.start();
11 }
12 });
13
14 //准备资源,好来播放音乐
15 //异步函数,这个函数内部会开启一个子线程
16 player.prepareAsync();
17
18 } catch (Exception e) {
19 e.printStackTrace();
20 }
21
22 Log.d("fanfan", "onStartCommand");
23 return super.onStartCommand(intent, flags, startId);
24 }
1 public void onDestroy() {
2 //结束音乐
3 player.stop();
4 //释放资源,如果播放下一首的话,就用不着释放资源
5 player.release();
6 Log.d("fanfan", "onDestroy");
7 super.onDestroy();
8 }
第一步,照样找个类来继承服务类
1 package fry;
2
3 import java.io.File;
4 import java.io.IOException;
5
6 import android.app.Service;
7 import android.content.Intent;
8 import android.media.MediaPlayer;
9 import android.media.MediaPlayer.OnPreparedListener;
10 import android.os.Environment;
11 import android.os.IBinder;
12 import android.util.Log;
13
14 public class myService extends Service{
15
16 //媒体播放器
17 private MediaPlayer player;
18 /**
19 * 当绑定这个服务的时候调用
20 */
21 @Override
22 public IBinder onBind(Intent arg0) {
23 Log.d("fanfan", "onBind");
24 return null;
25 }
26 /**
27 * service被创建后调用
28 */
29 @Override
30 public void onCreate() {
31 File file=new File(Environment.getExternalStorageDirectory(),"a.mp3");
32 player =new MediaPlayer();
33 try {
34 //设置播放源
35 player.setDataSource(file.getAbsolutePath());
36 } catch (Exception e) {
37 e.printStackTrace();
38 }
39 Log.d("fanfan", "onCreate");
40 super.onCreate();
41 }
42
43 /**
44 * service被start后调用
45 */
46 @Override
47 public int onStartCommand(Intent intent, int flags, int startId) {
48
49 try {
50 //设置准备资源监听器,当资源准备完毕,回调监听器的onPrepared函数
51 player.setOnPreparedListener(new OnPreparedListener() {
52 @Override
53 //准备资源准备好了会调用这个
54 public void onPrepared(MediaPlayer arg0) {
55 //播放音乐
56 player.start();
57 }
58 });
59
60 //准备资源,好来播放音乐
61 //异步函数,这个函数内部会开启一个子线程
62 player.prepareAsync();
63
64 } catch (Exception e) {
65 e.printStackTrace();
66 }
67
68 Log.d("fanfan", "onStartCommand");
69 return super.onStartCommand(intent, flags, startId);
70 }
71
72 /**
73 * service被停止后调用
74 */
75 @Override
76 public void onDestroy() {
77 //结束音乐
78 player.stop();
79 //释放资源,如果播放下一首的话,就用不着释放资源
80 player.release();
81 Log.d("fanfan", "onDestroy");
82 super.onDestroy();
83 }
84
85 }
第二步,该配置的监听服务也是要配置的
1 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
2 package="com.example.playMusic"
3 android:versionCode="1"
4 android:versionN