播放音乐案例

Posted 范仁义

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了播放音乐案例相关的知识,希望对你有一定的参考价值。

播放音乐案例

 

分析:

和上一篇文章的结构是一样的,只不过我们需要在这里里面加上播放音乐的一些操作:

其实也就是调用系统的播放音乐的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:versionName="1.0" >
 5 
 6     <uses-sdk
 7         android:minSdkVersion="8"
 8         android:targetSdkVersion="19" />
 9 
10     <application
11         android:allowBackup="true"
12         android:icon="@drawable/ic_launcher"
13         android:label="@string/app_name"
14         android:theme="@style/AppTheme" >
15         <activity
16             android:name="fry.MainActivity"
17             android:label="@string/app_name" >
18             <intent-filter>
19                 <action android:name="android.intent.action.MAIN" />
20 
21                 <category android:name="android.intent.category.LAUNCHER" />
22             </intent-filter>
23         </activity>
24         <activity android:name="fry.Activity01" android:exported="true"></activity>
25         
26         <service android:name="fry.myService">
27             
28         </service>
29         
30     </application>
31 
32 </manifest>

 

第三步,播放或者结束音乐

 1 package fry;
 2 
 3 import com.example.playMusic.R;
 4 
 5 import android.app.Activity;
 6 import android.content.Intent;
 7 import android.os.Bundle;
 8 import android.view.View;
 9 
10 public class Activity01 extends Activity{
11     @Override
12     protected void onCreate(Bundle savedInstanceState) {
13         // TODO Auto-generated method stub
14         super.onCreate(savedInstanceState);
15         setContentView(R.layout.activity01);
16     }
17     
18     public void onClick(View view){
19         Intent intent=new Intent();
20         intent.setClass(this, myService.class);
21         switch(view.getId()){
22         case R.id.btn_start://播放音乐,启动服务
23             startService(intent);
24             break;
25         case R.id.btn_stop://结束音乐,停止服务
26             stopService(intent);
27             break;
28         }
29     }
30 }

 

以上是关于播放音乐案例的主要内容,如果未能解决你的问题,请参考以下文章

Audio Ducking 后音乐更柔和?

go 接口案例,音乐播放器

App设计灵感之十二组精美的音乐播放器App设计案例

Android的媒体播放器------简易音乐播放器(详解)

如何在列表视图中添加最近播放的歌曲?

AIDL