android 自动下一首,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 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();

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中保存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存储账户信息)&amp&semi;联网请求图片并下载到SD卡(文件外部存储)

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

Android数据存储之SD卡

为了更好的存取应用程序的大文件数据,应用程序需要读. 写SD卡上的文件.SD卡大大扩充手机的存储能力. 操作SD首先要加权限: < ...

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

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

Android之外部存储&lpar;SD卡&rpar;

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

随机推荐

Apache增加Basic Auth

在.htaccess文件中增加 AuthUserFile /var/www/htpasswd/test.htpasswd AuthName EnterPassword AuthType Basic r ...

jetty

相关的文章太多了,我只按照自己的意思做简单总结. 参见: http://www.cnblogs.com/duanxz/p/3154982.html http://www.cnblogs.com/win ...

浏览器URL传参最大长度问题

这几天为解决一个BUG头疼了一段时间,BUG现象如下: 一个选择人员的选择控件,当选择多个人时(50多个的时候),返回没有错误现象,而再一次打开的时候就报404错误.看到这个错误非常纳闷,无法下手,只 ...

利用http实现文件的上传和下载

其他语言都比较方便,使用http上传.但是C++这样就差点,不过还好,Linux下有个curl的命令行工具,这是一个开源项目,底下有个子项目是libcurl,curl就是调用这个API实现的一系列ft ...

LearnCpp&period;com

LearnCpp.com is a totally free website devoted to teaching you to program in C++. Whether you’ve had ...

Python调用ansible API系列(二)执行adhoc和playbook

执行adhoc #!/usr/bin/env python # -*- coding: utf-8 -*- import sys from collections import namedtuple ...

Django rest framework 源码分析 (1)----认证

一.基础 django 2.0官方文档 https://docs.djangoproject.com/en/2.0/ 安装 pip3 install djangorestframework 假如我们想 ...

python之路2-字符串操作

1.我们可以用单引号(‘)或双引号(” ")创建字符串,并为字符串分配一个变量,例如: name = "张三" name = "wangsan" 字符 ...

idea maven &plus;spring mvc

1.步骤一 2.目录结构 3.maven junit

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值