最近做一个项目,需要连续播放音乐,播放完一首歌之后,自动播放完下一首歌。不要重复播放。

代码如下:

  1. package com.example.asyncplayer_ex;
  2.  
  3. import java.io.IOException;
  4. import java.util.ArrayList;
  5.  
  6. import javax.security.auth.PrivateCredentialPermission;
  7.  
  8. import android.app.Activity;
  9. import android.drm.DrmStore.Playback;
  10. import android.media.AsyncPlayer;
  11. import android.media.AudioManager;
  12. import android.media.MediaPlayer;
  13. import android.media.MediaPlayer.OnCompletionListener;
  14. import android.net.Uri;
  15. import android.os.Bundle;
  16. import android.os.Environment;
  17. import android.util.Log;
  18. import android.view.Menu;
  19. import android.view.MenuItem;
  20.  
  21. public class MainActivity extends Activity {
  22. private static final String TAG = "MP3";
  23. private AsyncPlayer asyncPlayer = new AsyncPlayer(null);
  24. private String path;
  25. private MediaPlayer mediaPlayer;
  26. private int songIndex = 0;
  27. private ArrayList<String> songArrayList; //播放声音列表
  28. @Override
  29. protected void onCreate(Bundle savedInstanceState) {
  30. super.onCreate(savedInstanceState);
  31. setContentView(R.layout.activity_main);
  32.  
  33. mediaPlayer = new MediaPlayer();
  34. mediaPlayer.setOnCompletionListener(new CompletionListener());
  35. path = Environment.getExternalStorageDirectory().toString() + "/mp3/Voice/";
  36. songArrayList = new ArrayList<String>();
  37. songArrayList.add(path + "1.MP3");
  38. songArrayList.add(path + "2.MP3");
  39. songArrayList.add(path + "3.MP3");
  40. songArrayList.add(path + "4.MP3");
  41. songArrayList.add(path + "5.MP3");
  42. songArrayList.add(path + "6.MP3");
  43. songplay();
  44. }
  45.  
  46. private final class CompletionListener implements OnCompletionListener{
  47.  
  48. @Override
  49. public void onCompletion(MediaPlayer mp) {
  50. nextsong();
  51. }
  52.  
  53. }
  54. private void nextsong() {
  55.  
  56. if (songIndex < songArrayList.size() - 1) {
  57. songIndex = songIndex + 1;
  58. songplay();
  59. }
  60. else {
  61. songArrayList.clear();
  62. songIndex = 0;
  63.  
  64. }
  65.  
  66. }
  67. private void songplay() {
  68. try {
  69. mediaPlayer.reset();
  70. mediaPlayer.setDataSource(songArrayList.get(songIndex));
  71. mediaPlayer.prepare();
  72. mediaPlayer.start();
  73. } catch (IllegalArgumentException e) {
  74. // TODO Auto-generated catch block
  75. e.printStackTrace();
  76. } catch (SecurityException e) {
  77. // TODO Auto-generated catch block
  78. e.printStackTrace();
  79. } catch (IllegalStateException e) {
  80. // TODO Auto-generated catch block
  81. e.printStackTrace();
  82. } catch (IOException e) {
  83. // TODO Auto-generated catch block
  84. e.printStackTrace();
  85. }
  86.  
  87. }
  88.  
  89. @Override
  90. protected void onDestroy() {
  91. mediaPlayer.release();
  92. mediaPlayer = null;
  93. super.onDestroy();
  94. }
  95. }

Android播播放完SD卡指定文件夹音乐之后,自动播放下一首的更多相关文章

  1. android中保存Bitmap图片到指定文件夹中的方法

    /** 保存方法 */  public void saveBitmap() {   Log.e(TAG, "保存图片");   File f = new File("/s ...

  2. Android 读写SD卡的文件

    今天介绍一下Android 读写SD卡的文件,要读写SD卡上的文件,首先需要判断是否存在SD卡,方法: Environment.getExternalStorageState().equals(Env ...

  3. Android SD卡创建文件和文件夹失败

    原文:Android SD卡创建文件和文件夹失败 功能需要,尝试在本地sd卡上创建文件和文件夹的时候,报错,程序崩溃. 一般情况下,是忘记给予sd卡的读写权限.但是这里面权限已经给了,还是报错. 在网 ...

  4. Android入门开发之SD卡读写操作(转)

    SD卡的读写是我们在开发android 应用程序过程中最常见的操作.下面介绍SD卡的读写操作方式: 1. 获取SD卡的根目录 String  sdCardRoot = Environment.getE ...

  5. 简单登录案例(SharedPreferences存储账户信息)&联网请求图片并下载到SD卡(文件外部存储)

    新人刚学习Android两周,写一个随笔算是对两周学习成果的巩固,不足之处欢迎各位建议和完善. 这次写的是一个简单登录案例,大概功能如下: 注册的账户信息用SharedPreferences存储: 登 ...

  6. Android数据存储之SD卡

    为了更好的存取应用程序的大文件数据,应用程序需要读. 写SD卡上的文件.SD卡大大扩充手机的存储能力. 操作SD首先要加权限: <!--在SDCard中创建与删除文件权限 --> < ...

  7. 模拟器下的虚拟sd卡添加文件

    1.若出现mkdir failed for myData Read-only file system,在执行 adb shell 命令后,执行mount -o remount ,rw / (去除文件的 ...

  8. Android之外部存储(SD卡)

    *手机的外部存储空间,这个我们可以理解成电脑的外接移动硬盘,U盘也行.所有的Android设备都有两个文件存储区域:“内部”和“外部”存储器.这两个名称来自早期的Android,当时大多数设备都提供内 ...

  9. [转]C#中调用资源管理器(Explorer.exe)打开指定文件夹 + 并选中指定文件 + 调用(系统默认的播放类)软件(如WMP)打开(播放歌曲等)文件

    原文:http://www.crifan.com/csharp_call_explorer_to_open_destinate_folder_and_select_specific_file/ C#中 ...

随机推荐

  1. Linux下GPIO驱动

    编写驱动程序,首先要了解是什么类型的设备.linux下的设备分为三类,分别为:字符设备,块设备和网络设备.字符设备类型是根据是否以字符流为数据的交换方式,大部分设备都是字符设备,如键盘,串口等,块设备 ...

  2. HDU 5745 La Vie en rose

    La Vie en rose Time Limit: 14000/7000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)T ...

  3. Flash Player”又来了“!

    2012年,Adobe宣布缩小对Linux平台的支持,自Flash Player 11.2版本之后,只为Linux平台上的Flash Player提供安全更新和bug修复,而不再提供版本更新. 四年之 ...

  4. MyBatis 入门到精通(二) SQL语句映射XML文件

    MyBatis 真正强大之处就在这些映射语句,也就是它的魔力所在.对于它的强大功能,SQL 映射文件的配置却非常简单. 如果您比较SQL 映射文件配置与JDBC 代码,您很快可以发现,使用SQL 映射 ...

  5. 帮同事写了几行代码,在 安装/卸载 程序里 注册/卸载 OCX控件

    写了个小控制台程序,这个程序用来注册 / 卸载OCX控件,用在Inno Setup做的安装卸载程序里. #include "stdafx.h" #include <windo ...

  6. 基本输入输出系统BIOS---键盘输入

    基本输入输出系统BIOS概述 硬盘操作系统DOS建立在BIOS的基础上,通过BIOS操纵硬件,例如DOS调用BIOS显示I/O程序完成输入显示,调用打印I/O完成打印输出 通常应用程序应该调用DOS提 ...

  7. gcc编译器基本命令

    1 unix操作系统 ubuntu 12版本Unix内核0.5天 常用命令2 c语言:标准c 十天主要练习动手能力 小案例水平高的 自己去写案例水平低的 理解并跟着写3 c++:5天高级语言的特点:面 ...

  8. leetcode—3sum

    1.题目描述 Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find ...

  9. AS3 条件编译

    转:http://www.lite3.cn/blog/?p=404&cpage=1 知道C/C++ 有条件编译,一直想着AS要是也有条件编译就好了,今天搜了半天Google,终于让我找到了 下 ...

  10. keil中编译时出现*** ERROR L107: ADDRESS SPACE OVERFLOW

    解决方法: http://zhidao.baidu.com/link?url=DWTVVdALVqPtUt0sWPURD6c1eEppyu9CXocLTeRZlZlhwHOA1P1xdesqmUQNw ...