zoukankan      html  css  js  c++  java
  • Android 音乐播放

    android简单音乐播放控制代码

     

    这个几个月业余时间一直在做一个android项目,里面涉及到了音乐播放功能。很简单那种,播放、暂停、上一曲、下一曲、音量调节等。

    音乐播放主要使用的对象是MediaPlayer,这个对象很强大 也提供了很多功能。

    mediaplayer 音乐播放主要控制类

      1 package com.weizhi.common;
      2 
      3 import java.util.ArrayList;
      4 import android.media.MediaPlayer;
      5 import android.media.MediaPlayer.OnCompletionListener;
      6 
      7 /***
      8  * 音乐播放控制
      9  * 
     10  * @author wangr
     11  * @date 2016-6-13
     12  */
     13 public class MusicPlay
     14 {
     15     private MediaPlayer mediaPlayer;
     16     // 当前歌曲播放索引
     17     private int songIndex = 0;
     18     // 歌曲播放列表
     19     private ArrayList<String> songArrayList;
     20     // 是否开始播放
     21     private boolean play = false;
     22     // 回调
     23     private MusicCallBack callBack;
     24 
     25     /***
     26      * 音乐播放构造函数
     27      * 
     28      * @param playList
     29      *            播放列表
     30      * @param callBack
     31      *            回调函数 用于传回当前播放曲目
     32      */
     33     public MusicPlay(ArrayList<String> playList, MusicCallBack callBack)
     34     {
     35         this.callBack = callBack;
     36         songArrayList = playList;
     37 
     38         mediaPlayer = new MediaPlayer();
     39         mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
     40 
     41             // 播放完毕
     42             @Override
     43             public void onCompletion(MediaPlayer arg0)
     44             {
     45                 // 播放完毕直接下一首
     46                 nextSong();
     47 
     48             }
     49         });
     50 
     51     }
     52 
     53     /***
     54      * 下一首
     55      */
     56     public void nextSong()
     57     {
     58 
     59         if (songIndex < songArrayList.size() - 1)
     60         {
     61             songIndex++;
     62             songPlay();
     63         } else
     64         {
     65             // 播放第一首
     66             songIndex = 0;
     67             songPlay();
     68 
     69         }
     70     }
     71 
     72     /**
     73      * 上一首
     74      */
     75     public void upSong()
     76     {
     77         // 当前等于第一首
     78         if (songIndex == 0)
     79         {
     80             // 播放最后一首
     81             songIndex = songArrayList.size() - 1;
     82             songPlay();
     83         } else
     84         {
     85 
     86             songIndex--;
     87             songPlay();
     88 
     89         }
     90     }
     91 
     92     /***
     93      * 播放
     94      */
     95     private void songPlay()
     96     {
     97         try
     98         {
     99             if (songArrayList.size() > 0)
    100             {
    101                 play = true;
    102                 mediaPlayer.reset();
    103                 mediaPlayer.setDataSource(songArrayList.get(songIndex));
    104                 mediaPlayer.prepare();
    105                 mediaPlayer.start();
    106 
    107                 if (this.callBack != null)
    108                 {
    109                     // 显示当前播放歌曲
    110                     callBack.currentPlayer(songArrayList.get(songIndex)
    111                             .toString());
    112                 }
    113             }
    114         }
    115 
    116         catch (Exception e)
    117         {
    118             e.printStackTrace();
    119         }
    120 
    121     }
    122 
    123     /***
    124      * 播放暂停 适用于播放暂停都是一个按钮
    125      */
    126     public void pausePlay()
    127     {
    128         if (mediaPlayer.isPlaying())
    129         {
    130             mediaPlayer.pause();
    131 
    132         } else
    133         {
    134             // 判断是否已经播放 如果已经播放则当前是暂停 则调用继续播放
    135             if (play)
    136             {
    137                 mediaPlayer.start();// 继续播放
    138             } else
    139             {
    140                 // 首次播放
    141                 songPlay();
    142             }
    143         }
    144     }
    145 
    146     /**
    147      * 设置音量
    148      * 本身有两个参数 left and right 这里我就设同一个值
    149      * @param ve 范围 0.0-1.0
    150      */
    151     public void setVolume(float ve)
    152     {
    153         mediaPlayer.setVolume(ve, ve);
    154     }
    155 }

    顺便附上文件搜索类

     1 package com.weizhi.common;
     2 
     3 import java.io.File;
     4 import java.util.ArrayList;
     5 
     6 /****
     7  * 文件搜索
     8  * @author wangr
     9  * date 2016-6-13
    10  *
    11  */
    12 public class SearchFile
    13 {
    14     /**
    15      * 文件列表
    16      */
    17     private static ArrayList<String> lstFile = new ArrayList<String>();                                                                     
    18     /***
    19      * 获取文件
    20      * 
    21      * @param Path 要搜索的目录
    22      * @param Extension 扩展名
    23      *
    24      */
    25     public static ArrayList<String> GetFiles(String Path, String Extension)        
    26     {
    27         File[] files = new File(Path).listFiles();
    28         if (files == null)
    29             return lstFile;
    30         for (int i = 0; i < files.length; i++)
    31         {
    32             File f = files[i];
    33             if (f.isFile())
    34             {
    35                 System.out.println("文件:" + f.getPath());
    36                 if (f.getPath()
    37                         .substring(f.getPath().length() - Extension.length())
    38                         .equals(Extension)) // 判断扩展名
    39                     lstFile.add(f.getPath());
    40 
    41             } else if (f.isDirectory() && f.getPath().indexOf("/.") == -1) // 忽略点文件(隐藏文件/文件夹)
    42                 GetFiles(f.getPath(), Extension);
    43         }
    44         
    45         return lstFile;
    46     }
    47 
    48 }

    音乐回调接口 用于显示当前播放歌曲

     1 package com.weizhi.common;
     2 
     3 /***
     4  * 音乐回调接口
     5  * @author wangr
     6  * date 2016-6-13
     7  *
     8  */
     9 public interface MusicCallBack
    10 {
    11    void  currentPlayer(String str);
    12    
    13 }
  • 相关阅读:
    SourceTree 3.3.6安装跳过注册安装
    Qt Framework 问题之 framework/Versions/A:bundle format unrecognized, invalid, or unsuitable
    数据结构之栈
    数据结构之单链表
    数据结构之数组
    QPixmap 在非QtCreator环境下无法显示jpg图片
    Mac端StartUML的安装和破解
    C++实现根据路径读取文件内容
    迁移至知乎
    XDRender_LightModeFeature_CauseLight 焦散1-DropRain
  • 原文地址:https://www.cnblogs.com/rui1236/p/5987758.html
Copyright © 2011-2022 走看看