Android 音乐播放
android简单音乐播放控制代码
这个几个月业余时间一直在做一个android项目,里面涉及到了音乐播放功能。很简单那种,播放、暂停、上一曲、下一曲、音量调节等。
音乐播放主要使用的对象是MediaPlayer,这个对象很强大 也提供了很多功能。
mediaplayer 音乐播放主要控制类
package com.weizhi.common; import java.util.ArrayList;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener; /***
* 音乐播放控制
*
* @author wangr
* @date 2016-6-13
*/
public class MusicPlay
{
private MediaPlayer mediaPlayer;
// 当前歌曲播放索引
private int songIndex = 0;
// 歌曲播放列表
private ArrayList<String> songArrayList;
// 是否开始播放
private boolean play = false;
// 回调
private MusicCallBack callBack; /***
* 音乐播放构造函数
*
* @param playList
* 播放列表
* @param callBack
* 回调函数 用于传回当前播放曲目
*/
public MusicPlay(ArrayList<String> playList, MusicCallBack callBack)
{
this.callBack = callBack;
songArrayList = playList; mediaPlayer = new MediaPlayer();
mediaPlayer.setOnCompletionListener(new OnCompletionListener() { // 播放完毕
@Override
public void onCompletion(MediaPlayer arg0)
{
// 播放完毕直接下一首
nextSong(); }
}); } /***
* 下一首
*/
public void nextSong()
{ if (songIndex < songArrayList.size() - 1)
{
songIndex++;
songPlay();
} else
{
// 播放第一首
songIndex = 0;
songPlay(); }
} /**
* 上一首
*/
public void upSong()
{
// 当前等于第一首
if (songIndex == 0)
{
// 播放最后一首
songIndex = songArrayList.size() - 1;
songPlay();
} else
{ songIndex--;
songPlay(); }
} /***
* 播放
*/
private void songPlay()
{
try
{
if (songArrayList.size() > 0)
{
play = true;
mediaPlayer.reset();
mediaPlayer.setDataSource(songArrayList.get(songIndex));
mediaPlayer.prepare();
mediaPlayer.start(); if (this.callBack != null)
{
// 显示当前播放歌曲
callBack.currentPlayer(songArrayList.get(songIndex)
.toString());
}
}
} catch (Exception e)
{
e.printStackTrace();
} } /***
* 播放暂停 适用于播放暂停都是一个按钮
*/
public void pausePlay()
{
if (mediaPlayer.isPlaying())
{
mediaPlayer.pause(); } else
{
// 判断是否已经播放 如果已经播放则当前是暂停 则调用继续播放
if (play)
{
mediaPlayer.start();// 继续播放
} else
{
// 首次播放
songPlay();
}
}
} /**
* 设置音量
* 本身有两个参数 left and right 这里我就设同一个值
* @param ve 范围 0.0-1.0
*/
public void setVolume(float ve)
{
mediaPlayer.setVolume(ve, ve);
}
}
顺便附上文件搜索类
package com.weizhi.common; import java.io.File;
import java.util.ArrayList; /****
* 文件搜索
* @author wangr
* date 2016-6-13
*
*/
public class SearchFile
{
/**
* 文件列表
*/
private static ArrayList<String> lstFile = new ArrayList<String>();
/***
* 获取文件
*
* @param Path 要搜索的目录
* @param Extension 扩展名
*
*/
public static ArrayList<String> GetFiles(String Path, String Extension)
{
File[] files = new File(Path).listFiles();
if (files == null)
return lstFile;
for (int i = 0; i < files.length; i++)
{
File f = files[i];
if (f.isFile())
{
System.out.println("文件:" + f.getPath());
if (f.getPath()
.substring(f.getPath().length() - Extension.length())
.equals(Extension)) // 判断扩展名
lstFile.add(f.getPath()); } else if (f.isDirectory() && f.getPath().indexOf("/.") == -1) // 忽略点文件(隐藏文件/文件夹)
GetFiles(f.getPath(), Extension);
} return lstFile;
} }
音乐回调接口 用于显示当前播放歌曲
package com.weizhi.common; /***
* 音乐回调接口
* @author wangr
* date 2016-6-13
*
*/
public interface MusicCallBack
{
void currentPlayer(String str); }
Android 音乐播放的更多相关文章
- Android音乐播放器源码(歌词.均衡器.收藏.qq5.0菜单.通知)
一款Android音乐播放器源码,基本功能都实现了 qq5.0菜单(歌词.均衡器.收藏.qq5.0菜单.通知) 只有向右滑动出现,菜单键和指定按钮都还没有添加. 源码下载:http://code.66 ...
- 一款非常简单的android音乐播放器源码分享给大家
一款非常简单的android音乐播放器源码分享给大家,该应用虽然很小,大家常用的播放器功能基本实现了,可能有点还不够完善,大家也可以自己完善一下,源码在源码天堂那里已经有了,大家可以到那里下载学习吧. ...
- android音乐播放器开发教程
android音乐播放器开发教程 Android扫描sd卡和系统文件 Android 关于录音文件的编解码 实现米聊 微信一类的录音上传的功能 android操作sdcard中的多媒体文件——音乐列表 ...
- android 音乐播放器
本章以音乐播放器为载体,介绍android开发中,通知模式Notification应用.主要涉及知识点Notification,seekbar,service. 1.功能需求 完善音乐播放器 有播放列 ...
- android音乐播放器(Service+ContentProvider+Broadcast+Activity四大组件完成)
1.获取音乐 1-1:获取手机中的音乐(用ContentProvider内容提供者来完成): package com.firefly.util; import java.util.ArrayList; ...
- Android音乐播放器的开发实例
本文将引导大家做一个音乐播放器,在做这个Android开发实例的过程中,能够帮助大家进一步熟悉和掌握学过的ListView和其他一些组件.为了有更好的学习效果,其中很多功能我们手动实现,例如音乐播放的 ...
- 【竞品分析】Android音乐播放器的竞品分析
迄今为止最长的一篇博客,各位看官笑纳~~ 本次分析基于Android平台,选取了几款我体验过的播放器进行比较分析.主要分为两类,一类是大而全的,功能全面,可满足用户管理歌曲.导入导出歌单等多方面需求, ...
- Android音乐播放器的设计与实现
目录 应用开发技术及开发平台介绍 应用需求分析 应用功能设计及其描述 应用UI展示 一.应用开发技术及平台介绍 ①开发技术: 本系统是采用面向对象的软件开发方法,基于Android studio开发平 ...
- Android——音乐播放器完善——进度条显示当前播放进度,加可拖动进度条(未待解决完问题)
效果: 问题:可拖动进度条随进度条移动时,会致使音乐卡顿(待解决) xml <?xml version="1.0" encoding="utf-8"?&g ...
随机推荐
- 【Java SE】利用Java的for循环加random制作小学试卷
前期介绍:很多同学以为学习一门编程语言,一定要学到很高深的时候才可以做项目,其实不然,很多时候我们不需要学到面向对象的思想,就可以从事一些小项目的开发,来增加自己对开发的热情,比如现在我就可以利用Ja ...
- Codeforces Round #392 (Div. 2)
D题,给出n,k,k是n进制数,但是大于十进制时,它的表示方法仍为十进制那种,比如16进制下的15,我们可以看成就是15,或者1|5,也就是1×16+5 = 21,让你求出能表达的最小十进制数 从后面 ...
- Azure Messaging-ServiceBus Messaging消息队列技术系列-索引篇
Azure Messaging ServiceBus Messaging相关的技术系列,最近已经整理了不少了,统一做一个索引链接,置顶. 方便查找,并后续陆陆续续再增加. 学习消息队列技术,可以先看第 ...
- 第1 章MySQL 基本介绍
第 1 章 MySQL 基本介绍 前言: 作为最为流行的开源数据库软件之一,MySQL 数据库软件已经是广为人知了.但是为了照顾对MySQL还不熟悉的读者,这章我们将对 MySQL 做一个简单的介 ...
- java虚拟机学习-慢慢琢磨JVM(2-1)ClassLoader的工作机制
ClassLoader的工作机制 java应用环境中不同的class分别由不同的ClassLoader负责加载. 一个jvm中默认的classloader有Bootstrap ClassLoader. ...
- hadoop2.7.2单机与伪分布式安装
环境相关 系统:CentOS 6.8 64位 jdk:1.7.0_79 hadoop:hadoop 2.7.2 安装java环境 详见:linux中搭建java开发环境 创建hadoop用户 # 以r ...
- Generating Sankey Diagrams from rCharts
A couple of weeks or so ago, I picked up an inlink from an OCLC blog post about Visualizing Network ...
- 《算法4》2.1 - 插入排序算法(Insertion Sort), Python实现
排序算法列表电梯: 选择排序算法:详见 Selection Sort 插入排序算法(Insertion Sort):非常适用于小数组和部分排序好的数组,是应用比较多的算法.详见本文 插入排序算法的语言 ...
- [HDU1001] Sum Problem
Problem Description Hey, welcome to HDOJ(Hangzhou Dianzi University Online Judge). In this problem, ...
- ASP微信开发获取用户经纬度
wx.config({ //debug: true, debug: true, appId: '<%= appId %>', timestamp: '<%= timestamp %& ...