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 ...
随机推荐
- zabbix监控rds
问题:使用zabbix监控rds,用之前的脚本,执行总是会有密码安全提示: [root@iZ25m1box8cZ alertscripts]# sh rds.sh Uptime mysqladmin: ...
- LinkedBlockingDeque
1.LinkedBlockingDeque public class LinkedBlockingDeque<E> extends AbstractQueue<E> imple ...
- 技术福利:mysql数据库的基本命令汇总整理
一.创建数据库: create database database_name: php中创建数据库的两种方法:(mysql_create_db(),mysql_query()) $conn = mys ...
- 【2017-05-21】WebForm内置对象:Session、Cookie,登录和状态保持
1.Request -获取请求对象 string s =Request["key"]; 2.Response - 响应请求对象 Response.Redirect(" ...
- ke
#include <stdio.h> #include <stdlib.h> // For rand() and srand() #include <time.h> ...
- 浅谈MVC异常处理
在日常开发中,我们会去捕捉很多的异常,来进行处理,通常我们的方法就是,在需要进行异常处理的地方加上 try catch 块,但是,如果需要异常处理的地方很多,那么,就会频繁的去写try catch 块 ...
- centos6.5 ssh免密码登陆
ssh-keygen -t rsa ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop1
- javaScript-什么是变量?
什么是变量? 从字面上看,变量是可变的量:从编程角度讲,变量是用于存储某种/某些数值的存储器.我们可以把变量看做一个盒子,为了区分盒子,可以用BOX1,BOX2等名称代表不同盒子,BOX1就是盒子的名 ...
- ZooKeeper分布式锁浅谈(一)
一.概述 清明节的时候写了一篇分布式锁概述,里面介绍了分布式锁实现的几种方式,其实那时候我一直沉迷于使用redis的悲观锁和乐观锁来实现分布式锁,直到一个血案的引发才让我重新认识了redis分布式锁的 ...
- Dom元素的Property和Attribute
Attribute就是DOM节点自带的属性,例如html中常用的id.class.title.align等: 而Property是这个DOM元素作为对象,其附加的内容,例如childNodes.fir ...