• 播放音乐案例


    播放音乐案例

    分析:

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

    其实也就是调用系统的播放音乐的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 }
  • 相关阅读:
    iOS MJRefresh的使用 (列表上拉加载更多)
    iOS 后台任务
    ios Alamofire网络插件的使用
    springboot shiro ehcache redis 简单使用
    android BottomNavigationView 简单使用
    iOS ksyhttpcache音视频缓存
    springboot 简单使用shiro登录
    springboot 使用 mybatis + mapper
    [LeetCode] Permutations
    【经典算法】回溯算法
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/7496622.html
Copyright © 2020-2023  润新知