Android播播放完SD卡指定文件夹音乐之后,自动播放下一首
最近做一个项目,需要连续播放音乐,播放完一首歌之后,自动播放完下一首歌。不要重复播放。
代码如下:
package com.example.asyncplayer_ex; import java.io.IOException;
import java.util.ArrayList; import javax.security.auth.PrivateCredentialPermission; import android.app.Activity;
import android.drm.DrmStore.Playback;
import android.media.AsyncPlayer;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem; public class MainActivity extends Activity {
private static final String TAG = "MP3";
private AsyncPlayer asyncPlayer = new AsyncPlayer(null);
private String path;
private MediaPlayer mediaPlayer;
private int songIndex = 0;
private ArrayList<String> songArrayList; //播放声音列表
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); mediaPlayer = new MediaPlayer();
mediaPlayer.setOnCompletionListener(new CompletionListener());
path = Environment.getExternalStorageDirectory().toString() + "/mp3/Voice/";
songArrayList = new ArrayList<String>();
songArrayList.add(path + "1.MP3");
songArrayList.add(path + "2.MP3");
songArrayList.add(path + "3.MP3");
songArrayList.add(path + "4.MP3");
songArrayList.add(path + "5.MP3");
songArrayList.add(path + "6.MP3");
songplay();
} private final class CompletionListener implements OnCompletionListener{ @Override
public void onCompletion(MediaPlayer mp) {
nextsong();
} }
private void nextsong() { if (songIndex < songArrayList.size() - 1) {
songIndex = songIndex + 1;
songplay();
}
else {
songArrayList.clear();
songIndex = 0; } }
private void songplay() {
try {
mediaPlayer.reset();
mediaPlayer.setDataSource(songArrayList.get(songIndex));
mediaPlayer.prepare();
mediaPlayer.start();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } @Override
protected void onDestroy() {
mediaPlayer.release();
mediaPlayer = null;
super.onDestroy();
}
}
Android播播放完SD卡指定文件夹音乐之后,自动播放下一首的更多相关文章
- android中保存Bitmap图片到指定文件夹中的方法
		/** 保存方法 */ public void saveBitmap() { Log.e(TAG, "保存图片"); File f = new File("/s ... 
- Android 读写SD卡的文件
		今天介绍一下Android 读写SD卡的文件,要读写SD卡上的文件,首先需要判断是否存在SD卡,方法: Environment.getExternalStorageState().equals(Env ... 
- Android SD卡创建文件和文件夹失败
		原文:Android SD卡创建文件和文件夹失败 功能需要,尝试在本地sd卡上创建文件和文件夹的时候,报错,程序崩溃. 一般情况下,是忘记给予sd卡的读写权限.但是这里面权限已经给了,还是报错. 在网 ... 
- Android入门开发之SD卡读写操作(转)
		SD卡的读写是我们在开发android 应用程序过程中最常见的操作.下面介绍SD卡的读写操作方式: 1. 获取SD卡的根目录 String sdCardRoot = Environment.getE ... 
- 简单登录案例(SharedPreferences存储账户信息)&联网请求图片并下载到SD卡(文件外部存储)
		新人刚学习Android两周,写一个随笔算是对两周学习成果的巩固,不足之处欢迎各位建议和完善. 这次写的是一个简单登录案例,大概功能如下: 注册的账户信息用SharedPreferences存储: 登 ... 
- Android数据存储之SD卡
		为了更好的存取应用程序的大文件数据,应用程序需要读. 写SD卡上的文件.SD卡大大扩充手机的存储能力. 操作SD首先要加权限: <!--在SDCard中创建与删除文件权限 --> < ... 
- 模拟器下的虚拟sd卡添加文件
		1.若出现mkdir failed for myData Read-only file system,在执行 adb shell 命令后,执行mount -o remount ,rw / (去除文件的 ... 
- Android之外部存储(SD卡)
		*手机的外部存储空间,这个我们可以理解成电脑的外接移动硬盘,U盘也行.所有的Android设备都有两个文件存储区域:“内部”和“外部”存储器.这两个名称来自早期的Android,当时大多数设备都提供内 ... 
- [转]C#中调用资源管理器(Explorer.exe)打开指定文件夹 + 并选中指定文件 + 调用(系统默认的播放类)软件(如WMP)打开(播放歌曲等)文件
		原文:http://www.crifan.com/csharp_call_explorer_to_open_destinate_folder_and_select_specific_file/ C#中 ... 
随机推荐
- 在Ubuntu下卸载Apache
			卸载Apache 转自:http://blog.csdn.net/chmo2011/article/details/7026384 1. 删除apache 代码: $ sudo apt-get --p ... 
- HNU 13108-Just Another Knapsack Problem (ac自动机上的dp)
			题意: 给你一个母串,多个模式串及其价值,求用模式串拼接成母串(不重叠不遗漏),能获得的最大价值. 分析: ac自动机中,在字典树上查找时,用dp,dp[i]拼成母串以i为结尾的子串,获得的最大价值, ... 
- IOS  release 版本的时候 去掉输出log  NSLog
			在.pch文件中添加下面一段 #ifndef __OPTIMIZE__ #define NSLog(...) NSLog(__VA_ARGS__) #else #define NSLog(...) { ... 
- Java连接Oracle10g
			1.导入驱动包: a.找到oracle安装目录下的jdbc/lib中的文件classes12.jar: b.右击你创建的JAVA工程,找到Build path,选择Add External Archi ... 
- .net获取当前网址url(各种参数值)
			.net获取当前网址url(各种参数值) 假设当前页完整地址是:http://www.test.com/aaa/bbb.aspx?id=1&name=category" 先来看一下整 ... 
- JDBC中DAO事务函数模版
			DAO事物函数模版1: public void OrderFinsByPage(){ Connection conn = null; PreparedStatement pstmt = null; R ... 
- python解惑之 __file__ 与argv[0]
			在python下,获取当前执行主脚本的方法有两个:sys.argv[0]和__file__. sys.argv[0] 获取主执行文件路径的最佳方法是用sys.argv[0],它可能是一个相对路径,所以 ... 
- codeforce 702E Analysis of Pathes in Functional Graph   RMQ+二进制
			http://codeforces.com/contest/702 题意:n个点,n条边,每个点出边只有一条,问从每个点出发经过k条边的边权和,以及边权最小值 思路: f[i][j] 第i个点出发,经 ... 
- [Hive - Tutorial] Built In Operators and Functions 内置操作符与内置函数
			Built-in Operators Relational Operators The following operators compare the passed operands and gene ... 
- Intellij IDEA使用Maven构建Scala项目
			1.安装IDEA的Scala插件 使用自带的在线安装方式较为简单.File--Setting--Plugins--Browse reposities 2.创建项目 File - ... 
