android音乐播放器例子及其源码分析

 

android音乐播放器例子及其源码分析

 

这个例子是播放音乐的一个小例子也比较简单,大家需要去下载2个.mp3结尾的歌曲,然后放到SD卡里边 进行测试,就可以看到效果了。 运行效果如下

效果图:

 


 

Java代码:


  1. xmlns:android="http://schemas.android.com/apk/res/android"
  2. android:orientation="vertical"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. >
  6. android:id="@id/android:list"
  7. android:layout_width="fill_parent"
  8. android:layout_height="fill_parent"
  9. android:layout_weight="1"
  10. android:drawSelectorOnTop="false"/>
  11. android:id="@+id/LastImageButton"
  12. android:layout_width="wrap_content"
  13. android:layout_height="wrap_content"
  14. android:layout_x="10px"
  15. android:layout_y="70px"
  16. android:src="@drawable/last"
  17. />
  18. android:id="@+id/StopImageButton"
  19. android:layout_height="wrap_content"
  20. android:layout_width="wrap_content"
  21. android:layout_x="70px"
  22. android:layout_y="70px"
  23. android:src="@drawable/stop"
  24. />
  25. android:id="@+id/StartImageButton"
  26. android:layout_height="wrap_content"
  27. android:layout_width="wrap_content"
  28. android:layout_x="130px"
  29. android:layout_y="70px"
  30. android:src="@drawable/start"
  31. />
  32. android:id="@+id/PauseImageButton"
  33. android:layout_height="wrap_content"
  34. android:layout_width="wrap_content"
  35. android:layout_x="190px"
  36. android:layout_y="70px"
  37. android:src="@drawable/pause"
  38. />
  39. android:id="@+id/NextImageButton"
  40. android:layout_width="wrap_content"
  41. android:layout_height="wrap_content"
  42. android:layout_x="250px"
  43. android:layout_y="70px"
  44. android:src="@drawable/next"
  45. />
复制代码


musicitme.xml

Java代码:


  1. android:id="@+id/TextView01"
  2. android:layout_width="fill_parent"
  3. android:layout_height="wrap_content"
  4. android:text="@string/hello"/>
复制代码


只有一个类 Activity1

Java代码:

  1. package eoe.demo;

  2. import java.io.File;
  3. import java.io.FilenameFilter;
  4. import java.io.IOException;
  5. import java.util.ArrayList;
  6. import java.util.List;
  7. import android.app.ListActivity;
  8. import android.media.MediaPlayer;
  9. import android.media.MediaPlayer.OnCompletionListener;
  10. import android.os.Bundle;
  11. import android.view.KeyEvent;
  12. import android.view.View;
  13. import android.widget.ArrayAdapter;
  14. import android.widget.ImageButton;
  15. import android.widget.ListView;

  16. public class Activity01 extends ListActivity
  17. {
  18. /* 几个操作按钮 */
  19. private ImageButton mFrontImageButton = null;
  20. private ImageButton mStopImageButton = null;
  21. private ImageButton mStartImageButton = null;
  22. private ImageButton mPauseImageButton = null;
  23. private ImageButton mNextImageButton = null;

  24. /* MediaPlayer对象 */
  25. public MediaPlayer mMediaPlayer = null;

  26. /* 播放列表 */
  27. private List mMusicList = new ArrayList();

  28. /* 当前播放歌曲的索引 */
  29. private int currentListItme = 0;

  30. /* 音乐的路径 */
  31. private static final String MUSIC_PATH = new String("/sdcard/");

  32. /** Called when the activity is first created. */
  33. @Override
  34. public void onCreate(Bundle savedInstanceState)
  35. {
  36. super.onCreate(savedInstanceState);
  37. setContentView(R.layout.main);
  38. /* 更新显示播放列表 */
  39. musicList();
  40. /* 构建MediaPlayer对象 */
  41. mMediaPlayer = new MediaPlayer();

  42. mFrontImageButton = (ImageButton) findViewById(R.id.LastImageButton);
  43. mStopImageButton = (ImageButton) findViewById(R.id.StopImageButton);
  44. mStartImageButton = (ImageButton) findViewById(R.id.StartImageButton);
  45. mPauseImageButton = (ImageButton) findViewById(R.id.PauseImageButton);
  46. mNextImageButton = (ImageButton) findViewById(R.id.NextImageButton);

  47. //停止按钮
  48. mStopImageButton.setOnClickListener(new ImageButton.OnClickListener()
  49. {
  50. @Override
  51. public void onClick(View v)
  52. {
  53. /* 是否正在播放 */
  54. if (mMediaPlayer.isPlaying())
  55. {
  56. //重置MediaPlayer到初始状态
  57. mMediaPlayer.reset();
  58. }
  59. }
  60. });

  61. //开始按钮
  62. mStartImageButton.setOnClickListener(new ImageButton.OnClickListener()
  63. {
  64. @Override
  65. public void onClick(View v)
  66. {
  67. playMusic(MUSIC_PATH + mMusicList.get(currentListItme));
  68. }
  69. });

  70. //暂停
  71. mPauseImageButton.setOnClickListener(new ImageButton.OnClickListener()
  72. {
  73. public void onClick(View view)
  74. {
  75. if (mMediaPlayer.isPlaying())
  76. {
  77. /* 暂停 */
  78. mMediaPlayer.pause();
  79. }
  80. else
  81. {
  82. /* 开始播放 */
  83. mMediaPlayer.start();
  84. }
  85. }
  86. });

  87. //下一首
  88. mNextImageButton.setOnClickListener(new ImageButton.OnClickListener()
  89. {
  90. @Override
  91. public void onClick(View arg0)
  92. {
  93. nextMusic();
  94. }
  95. });
  96. //上一首
  97. mFrontImageButton.setOnClickListener(new ImageButton.OnClickListener()
  98. {
  99. @Override
  100. public void onClick(View arg0)
  101. {
  102. FrontMusic();
  103. }
  104. });
  105. }

  106. public boolean onKeyDown(int keyCode, KeyEvent event)
  107. {
  108. if ( keyCode == KeyEvent.KEYCODE_BACK)
  109. {
  110. mMediaPlayer.stop();
  111. mMediaPlayer.release();
  112. this.finish();
  113. return true;
  114. }
  115. return super.onKeyDown(keyCode, event);
  116. }

  117. @Override
  118. /* 当我们点击列表时,播放被点击的音乐 */
  119. protected void onListItemClick(ListView l, View v, int position, long id)
  120. {
  121. currentListItme = position;
  122. playMusic(MUSIC_PATH + mMusicList.get(position));
  123. }

  124. /* 播放列表 */
  125. public void musicList()
  126. {
  127. //取得指定位置的文件设置显示到播放列表
  128. File home = new File(MUSIC_PATH);
  129. if (home.listFiles(new MusicFilter()).length > 0)
  130. {
  131. for (File file : home.listFiles(new MusicFilter()))
  132. {
  133. mMusicList.add(file.getName());
  134. }
  135. ArrayAdapter musicList = new ArrayAdapter(Activity01.this,R.layout.musicitme, mMusicList);
  136. setListAdapter(musicList);
  137. }
  138. }

  139. private void playMusic(String path)
  140. {
  141. try
  142. {
  143. /* 重置MediaPlayer */
  144. mMediaPlayer.reset();
  145. /* 设置要播放的文件的路径 */
  146. mMediaPlayer.setDataSource(path);
  147. /* 准备播放 */
  148. mMediaPlayer.prepare();
  149. /* 开始播放 */
  150. mMediaPlayer.start();
  151. mMediaPlayer.setOnCompletionListener(new OnCompletionListener()
  152. {
  153. public void onCompletion(MediaPlayer arg0)
  154. {
  155. //播放完成一首之后进行下一首
  156. nextMusic();
  157. }
  158. });
  159. }catch (IOException e){}
  160. }

  161. /* 下一首 */
  162. private void nextMusic()
  163. {
  164. if (++currentListItme >= mMusicList.size())
  165. {
  166. currentListItme = 0;
  167. }
  168. else
  169. {
  170. playMusic(MUSIC_PATH + mMusicList.get(currentListItme));
  171. }
  172. }

  173. /* 上一首 */
  174. private void FrontMusic()
  175. {
  176. if (--currentListItme >= 0)
  177. {
  178. currentListItme = mMusicList.size();
  179. }
  180. else
  181. {
  182. playMusic(MUSIC_PATH + mMusicList.get(currentListItme));
  183. }
  184. }

  185. }

  186. /* 过滤文件类型 */
  187. class MusicFilter implements FilenameFilter
  188. {
  189. public boolean accept(File dir, String name)
  190. {
  191. //这里还可以设置其他格式的音乐文件
  192. return (name.endsWith(".mp3"));
  193. }
  194. }

 

    成为Android高手必须掌握的28大项内容和10个建议 

安卓Android和Java语言的异同、关系和区别 

 高校应届毕业生“IT业”收入最高,Android技术最热门 

贡献15本pdf完整版经典Android教程和海量Android源码 

71道经典Android面试题和答案--重要知识点都涉及到了  

Android App应用开发者年终总结--日均200元的广告收入

成为Java高手的25个学习目标--非常经典 

成为“Android高手”需要经过的六个阶段和6个境界

Android中设置146种颜色相对应的xml值

Android SDK 目录和作用的分析详解

Android中拍照、图片、录音、视频和音频功能的方法和代码

老程序员的忠告:不要做浮躁的软件工程师 

为程序开发人员量身定制的12个目标 

2011年3月最新“211工程”大学名单(共112所)

技术开发人员为什么会无奈苦逼?

印度和中国程序员的区别 


你可能感兴趣的:(Android博文)