MediaPlayer 实例

<1>.本示例演示使用MediaPlayer播放sdcard中的音乐,首先在/sdcard/目录下加入音乐文件(mp3),

Java代码   收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical" android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent">  
  5.     <TextView android:id="@+id/mTextView" android:layout_width="fill_parent"  
  6.         android:layout_height="wrap_content" android:text=""></TextView>  
  7.     <LinearLayout android:id="@+id/ll_list"  
  8.         android:orientation="vertical" android:layout_width="fill_parent"  
  9.         android:layout_height="wrap_content">  
  10.         <ListView android:id="@+id/lv_music" android:layout_width="fill_parent"  
  11.             android:layout_height="wrap_content"></ListView>  
  12.     </LinearLayout>  
  13.     <LinearLayout android:id="@+id/ll_btn"  
  14.         android:orientation="horizontal" android:layout_width="fill_parent"  
  15.         android:layout_height="wrap_content">  
  16.         <ImageButton android:id="@+id/imgbtn_last" android:src="@drawable/last"  
  17.             android:layout_width="wrap_content" android:layout_height="wrap_content"></ImageButton>  
  18.         <ImageButton android:id="@+id/imgbtn_start" android:src="@drawable/start"  
  19.             android:layout_width="wrap_content" android:layout_height="wrap_content"></ImageButton>  
  20.         <ImageButton android:id="@+id/imgbtn_pause" android:src="@drawable/pause"  
  21.             android:visibility="gone" android:layout_width="wrap_content"  
  22.             android:layout_height="wrap_content"></ImageButton>  
  23.         <ImageButton android:id="@+id/imgbtn_stop" android:src="@drawable/stop"  
  24.             android:layout_width="wrap_content" android:layout_height="wrap_content"></ImageButton>  
  25.         <ImageButton android:id="@+id/imgbtn_next" android:src="@drawable/next"  
  26.             android:layout_width="wrap_content" android:layout_height="wrap_content"></ImageButton>  
  27.     </LinearLayout>  
  28.     <LinearLayout android:id="@+id/ll_btn"  
  29.         android:orientation="vertical" android:layout_width="fill_parent"  
  30.         android:layout_height="wrap_content">  
  31.         <SeekBar android:id="@+id/SeekBar01" android:layout_width="fill_parent"  
  32.             android:layout_height="wrap_content"></SeekBar>  
  33.     </LinearLayout>  
  34.   
  35. </LinearLayout>  


Java代码   收藏代码
  1. package com.Aina.Android;  
  2.   
  3. import java.io.File;  
  4. import java.io.FilenameFilter;  
  5. import java.util.ArrayList;  
  6. import java.util.List;  
  7. import android.app.Activity;  
  8. import android.app.AlertDialog;  
  9. import android.content.DialogInterface;  
  10. import android.media.MediaPlayer;  
  11. import android.media.MediaPlayer.OnCompletionListener;  
  12. import android.media.MediaPlayer.OnErrorListener;  
  13. import android.os.Bundle;  
  14. import android.os.Handler;  
  15. import android.os.Message;  
  16. import android.util.Log;  
  17. import android.view.View;  
  18. import android.widget.AdapterView;  
  19. import android.widget.ArrayAdapter;  
  20. import android.widget.ImageButton;  
  21. import android.widget.ListView;  
  22. import android.widget.SeekBar;  
  23. import android.widget.TextView;  
  24.   
  25. public class Test extends Activity implements Runnable {  
  26.     /** Called when the activity is first created. */  
  27.     private MediaPlayer mMediaPlayer = null;  
  28.     private SeekBar mSeekBar = null;  
  29.     private ListView mListView = null;  
  30.     private ImageButton mLastbtn = null;  
  31.     private ImageButton mStartbtn = null;  
  32.     private ImageButton mPausebtn = null;  
  33.     private ImageButton mStopbtn = null;  
  34.     private ImageButton mNextbtn = null;  
  35.     private TextView mTextView = null;  
  36.     private List<String> mMusiclist = null;  
  37.     private int mCurrent = 0;  
  38.     private int count = 0;  
  39.     private boolean isrun = false;  
  40.     private boolean isauto = false;  
  41.     private static final String PATH = "/sdcard/";  
  42.   
  43.     @Override  
  44.     public void onCreate(Bundle savedInstanceState) {  
  45.         super.onCreate(savedInstanceState);  
  46.         setContentView(R.layout.main);  
  47.         mListView = (ListView) this.findViewById(R.id.lv_music);  
  48.         mSeekBar = (SeekBar) this.findViewById(R.id.SeekBar01);  
  49.         mTextView = (TextView) this.findViewById(R.id.mTextView);  
  50.         mLastbtn = (ImageButton) this.findViewById(R.id.imgbtn_last);  
  51.         mStartbtn = (ImageButton) this.findViewById(R.id.imgbtn_start);  
  52.         mPausebtn = (ImageButton) this.findViewById(R.id.imgbtn_pause);  
  53.         mStopbtn = (ImageButton) this.findViewById(R.id.imgbtn_stop);  
  54.         mNextbtn = (ImageButton) this.findViewById(R.id.imgbtn_next);  
  55.         mMusiclist = new ArrayList<String>();  
  56.         mMediaPlayer = new MediaPlayer();  
  57.         // 开始按钮  
  58.         mStartbtn.setOnClickListener(new ImageButton.OnClickListener() {  
  59.   
  60.             @Override  
  61.             public void onClick(View v) {  
  62.                 PlayMusic(PATH + mMusiclist.get(mCurrent));  
  63.             }  
  64.   
  65.         });  
  66.         // 下一首  
  67.         mNextbtn.setOnClickListener(new ImageButton.OnClickListener() {  
  68.   
  69.             @Override  
  70.             public void onClick(View v) {  
  71.                 // TODO Auto-generated method stub  
  72.                 NextMusic();  
  73.             }  
  74.   
  75.         });  
  76.         // 上一首  
  77.         mLastbtn.setOnClickListener(new ImageButton.OnClickListener() {  
  78.   
  79.             @Override  
  80.             public void onClick(View v) {  
  81.                 // TODO Auto-generated method stub  
  82.                 LastMusic();  
  83.             }  
  84.   
  85.         });  
  86.         // 暂停  
  87.         mPausebtn.setOnClickListener(new ImageButton.OnClickListener() {  
  88.   
  89.             @Override  
  90.             public void onClick(View v) {  
  91.                 // TODO Auto-generated method stub  
  92.                 isrun = true;  
  93.                 isauto = false;  
  94.                 mPausebtn.setVisibility(View.GONE);// 隐藏暂停按钮  
  95.                 mStartbtn.setVisibility(View.VISIBLE);// 显示启动按钮  
  96.                 // 是否正在播放  
  97.                 if (mMediaPlayer.isPlaying()) {  
  98.                     mMediaPlayer.pause();  
  99.                 }  
  100.             }  
  101.   
  102.         });  
  103.         // 停止  
  104.         mStopbtn.setOnClickListener(new ImageButton.OnClickListener() {  
  105.   
  106.             @Override  
  107.             public void onClick(View v) {  
  108.                 // TODO Auto-generated method stub  
  109.                 StopMusic();  
  110.             }  
  111.   
  112.         });  
  113.         mListView.setOnItemClickListener(new ListView.OnItemClickListener() {  
  114.   
  115.             @Override  
  116.             public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,  
  117.                     long arg3) {  
  118.                 mCurrent = arg2;  
  119.                 StopMusic();  
  120.                 PlayMusic(PATH + mMusiclist.get(mCurrent));  
  121.             }  
  122.   
  123.         });  
  124.         mSeekBar  
  125.                 .setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {  
  126.   
  127.                     @Override  
  128.                     public void onProgressChanged(SeekBar seekBar,  
  129.                             int progress, boolean fromUser) {  
  130.                         if (!isauto) {  
  131. //                          int n = mMediaPlayer.getCurrentPosition();  
  132. //                          mMediaPlayer.pause();  
  133.                             mMediaPlayer.seekTo(progress);  
  134. //                          mMediaPlayer.start();  
  135. //                          isauto = true;  
  136.                         }  
  137.   
  138.                     }  
  139.   
  140.                     @Override  
  141.                     public void onStartTrackingTouch(SeekBar seekBar) {  
  142.                         isauto = false;  
  143.                     }  
  144.   
  145.                     @Override  
  146.                     public void onStopTrackingTouch(SeekBar seekBar) {  
  147.                         isauto = true;  
  148.                     }  
  149.   
  150.                 });  
  151.         this.MusicList();  
  152.         new Thread(this).start();  
  153.     }  
  154.   
  155.     public void PlayMusic(String path) {  
  156.         try {  
  157.             mStartbtn.setVisibility(View.GONE);// 隐藏启动按钮  
  158.             mPausebtn.setVisibility(View.VISIBLE);// 显示暂停按钮  
  159.             if (!isrun) {  
  160.                 mMediaPlayer.reset();// 重置  
  161.                 mMediaPlayer.setDataSource(path);// 设置数据源  
  162.                 mMediaPlayer.prepare();// 准备  
  163.                 mMediaPlayer.start();// 开始播放  
  164.                 count = mMediaPlayer.getDuration();  
  165.                 Log.i("TAG-count", count + "");  
  166.                 mSeekBar.setMax(count);// 设置最大值.  
  167.                 this.mTextView.setText("当前播放歌曲:" + mMusiclist.get(mCurrent));  
  168.                 mMediaPlayer  
  169.                         .setOnCompletionListener(new OnCompletionListener() {  
  170.   
  171.                             @Override  
  172.                             public void onCompletion(MediaPlayer mp) {  
  173.                                 // TODO Auto-generated method stub  
  174.                                 NextMusic();  
  175.                             }  
  176.   
  177.                         });  
  178.                 mMediaPlayer.setOnErrorListener(new OnErrorListener() {  
  179.   
  180.                     @Override  
  181.                     public boolean onError(MediaPlayer mp, int what, int extra) {  
  182.                         ShowDialog("Error");  
  183.                         mMediaPlayer.reset();  
  184.                         return true;  
  185.                     }  
  186.   
  187.                 });  
  188.   
  189.             } else {  
  190.                 mMediaPlayer.start();// 暂停之后接着播放  
  191.             }  
  192.             isauto = true;  
  193.         } catch (Exception ex) {  
  194.             this.ShowDialog("播放音乐异常:" + ex.getMessage());  
  195.         }  
  196.     }  
  197.   
  198.     public void NextMusic() {  
  199.         int num = mMusiclist.size();  
  200.         if (++mCurrent >= num) {  
  201.             mCurrent = 0;  
  202.         }  
  203.         StopMusic();  
  204.         PlayMusic(PATH + mMusiclist.get(mCurrent));  
  205.   
  206.     }  
  207.   
  208.     public void LastMusic() {  
  209.         int num = mMusiclist.size();  
  210.         if (--mCurrent < 0) {  
  211.             mCurrent = num - 1;  
  212.         }  
  213.         StopMusic();  
  214.         PlayMusic(PATH + mMusiclist.get(mCurrent));  
  215.   
  216.     }  
  217.   
  218.   
  219.     @Override  
  220.     protected void onPause() {  
  221.         super.onPause();  
  222.         isauto = false;  
  223.         if (mMediaPlayer.isPlaying()) {  
  224.             mMediaPlayer.stop();// 停止  
  225.         }  
  226.         mMediaPlayer.reset();  
  227.         mMediaPlayer.release();  
  228. //      mMediaPlayer = null;  
  229.     }  
  230.   
  231.     public void StopMusic() {  
  232.         isrun = false;  
  233. //      isauto = false;  
  234.         mPausebtn.setVisibility(View.GONE);// 隐藏暂停按钮  
  235.         mStartbtn.setVisibility(View.VISIBLE);// 显示启动按钮  
  236.   
  237.         if (mMediaPlayer.isPlaying()) {  
  238.             mMediaPlayer.stop();// 停止  
  239.         }  
  240. //      mSeekBar.setProgress(0);  
  241.     }  
  242.   
  243.     /** 
  244.      * 文件过滤器 
  245.      *  
  246.      * @author Aina 
  247.      *  
  248.      */  
  249.     class MusicFilter implements FilenameFilter {  
  250.   
  251.         @Override  
  252.         public boolean accept(File dir, String filename) {  
  253.   
  254.             return (filename.endsWith(".mp3"));  
  255.         }  
  256.   
  257.     }  
  258.   
  259.     /** 
  260.      * 播放列表 
  261.      */  
  262.     public void MusicList() {  
  263.         try {  
  264.             File home = new File(PATH);  
  265.             File[] f = home.listFiles(new MusicFilter());  
  266.             if (f.length > 0) {  
  267.                 for (int i = 0; i < f.length; i++) {  
  268.                     File file = f[i];  
  269.                     mMusiclist.add(file.getName().toString());  
  270.                 }  
  271.                 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,  
  272.                         android.R.layout.simple_list_item_1, mMusiclist);  
  273.                 mListView.setAdapter(adapter);  
  274.             }  
  275.         } catch (Exception ex) {  
  276.             this.ShowDialog("显示音乐列表异常:" + ex.getMessage());  
  277.         }  
  278.   
  279.     }  
  280.   
  281.     public void ShowDialog(String str) {  
  282.         new AlertDialog.Builder(this).setTitle("提示").setMessage(str)  
  283.                 .setPositiveButton("OK"new DialogInterface.OnClickListener() {  
  284.   
  285.                     @Override  
  286.                     public void onClick(DialogInterface dialog, int which) {  
  287.                     }  
  288.   
  289.                 }).show();  
  290.     }  
  291.   
  292.     @Override  
  293.     public void run() {  
  294.         // TODO Auto-generated method stub  
  295.         while (true) {  
  296.             try {  
  297.                 if (isauto) {  
  298.                     int n = mMediaPlayer.getCurrentPosition();  
  299.                     Message msg = new Message();  
  300.                     msg.what = n;  
  301.                     handler.sendMessage(msg);  
  302.                 }  
  303.                 Thread.sleep(100);  
  304.             } catch (Exception ex) {  
  305.                 ex.printStackTrace();  
  306.             }  
  307.   
  308.         }  
  309.     }  
  310.   
  311.     public Handler handler = new Handler() {  
  312.         public void handleMessage(Message msg) {  
  313.             super.handleMessage(msg);  
  314.             mSeekBar.setProgress(msg.what);  
  315.             mSeekBar.invalidate();  
  316.         }  
  317.     };  
  318. }  


<2>.此示例演示使用MediaPlayer播放当前应用中res/raw/目录下的音乐文件:

Java代码   收藏代码
  1. package com.Aina.Android;  
  2.   
  3. import android.app.Activity;  
  4. import android.media.AudioManager;  
  5. import android.media.MediaPlayer;  
  6. import android.net.Uri;  
  7. import android.os.Bundle;  
  8.   
  9. public class Test extends Activity {  
  10.     /** Called when the activity is first created. */  
  11.     private MediaPlayer mMediaPlayer = null;  
  12.   
  13.     @Override  
  14.     public void onCreate(Bundle savedInstanceState) {  
  15.         super.onCreate(savedInstanceState);  
  16.         setContentView(R.layout.main);  
  17.         // mMediaPlayer = MediaPlayer.create(this, R.raw.d);//播放res/raw文件夹中的音乐文件  
  18.         mMediaPlayer = MediaPlayer  
  19.                 .create(  
  20.                         this,  
  21.                         Uri  
  22.                                 .parse("http://cd04.static.jango.com/music/07/05/63/0705635592.mp3"));//播放网络上的音乐  
  23.         mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);  
  24.         mMediaPlayer.setLooping(true);// 循环播放  
  25.         mMediaPlayer.start();  
  26.     }  
  27.   
  28.     @Override  
  29.     protected void onPause() {  
  30.         if (mMediaPlayer.isPlaying()) {  
  31.             mMediaPlayer.stop();  
  32.         }  
  33.         mMediaPlayer.reset();  
  34.         mMediaPlayer.release();  
  35.         mMediaPlayer = null;  
  36.         super.onPause();  
  37.     }  
  38.   


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值