没有合适的资源?快使用搜索试试~ 我知道了~
首页Android MediaPlayer 音乐播放器扫描 本地音乐、上一曲、下一曲切歌、播放本地音乐
Android MediaPlayer 本地音乐播放器 运行截图 为了不浪费您的时间,先看一下运行的效果图, 一进去先进行音乐扫描,然后列表展示出来,点击即可播放。 演示视频地址 源码地址 GitHub 项目地址 这个给不想浪费时间往下看的朋友,只因你的时间很宝贵。 前言 至于为什么写一个这样的Demo呢,因为有很多人学习Android就是对于手机应用感兴趣,而网络上的很应用源码,很难的开源代码小白看不懂,小白能看懂的,有些博主又要用积分下载,痛定思痛,索性自己写一个,当然在写的过程中查阅了网络的资料,也加入了自己的想法,希望能帮到想在音乐播放器这方面有想法的朋友,好了,话不多说,进入正题
资源详情
资源评论
资源推荐
Android MediaPlayer 音乐播放器扫描音乐播放器扫描 本地音乐、上一曲、本地音乐、上一曲、
下一曲切歌、播放本地音乐下一曲切歌、播放本地音乐
Android MediaPlayer 本地音乐播放器本地音乐播放器
运行截图运行截图
为了不浪费您的时间,先看一下运行的效果图,
一进去先进行音乐扫描,然后列表展示出来,点击即可播放。
演示视频地址
源码地址源码地址
GitHub 项目地址
这个给不想浪费时间往下看的朋友,只因你的时间很宝贵。
前言前言
至于为什么写一个这样的Demo呢,因为有很多人学习Android就是对于手机应用感兴趣,而网络上的很应用源码,很难的开
源代码小白看不懂,小白能看懂的,有些博主又要用积分下载,痛定思痛,索性自己写一个,当然在写的过程中查阅了网络的
资料,也加入了自己的想法,希望能帮到想在音乐播放器这方面有想法的朋友,好了,话不多说,进入正题.:
代码解释代码解释
项目配置项目配置
1.权限配置:
打开AndroidManifest.xml
2.依赖引入:
先打开工程的build.gradle,
加入如下图中的代码
item_music_rv_list.xml
布局其实没有什么好讲解的,就是显示和隐藏的控制。
样式文件:
rounded_corners.xml 水波纹效果的xml文件
在bg_white.xml中调用了rounded_corners.xml
bg_white.xml代码如下:
扫描按钮的背景图
scan_finish_btn_bg_pressed.9
scan_finish_btn_bg_normal.9
selector_scan_btn.xml使用上面两个图片的按钮点击样式
selector_scan_btn这个样式文件,在activity_main中用到
seekbar_style.xml 进度条样式
thumb.xml 进度条滑块样式
上面两个关于进度条的样式也在activity_main.xml中用到
然后是values下面的styles.xml文件
@color/white
@color/white
@color/colorAccent
样式和布局讲完了,接下来是工具类:
Constant.java 缓存字符工具类,因为现在只在MainActivity中用到,所以提现不出它的优势,代码如下:
public class Constant {
public final static String MUSIC_DATA_FIRST = "musicDataFirst";
}
DateUtil.java 时间转换工具类:
/**
* 时间转换工具类
*/
public class DateUtil {
//获取当前完整的日期和时间
public static String getNowDateTime(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy:MM:dd HH:mm:ss");
return sdf.format(new Date());
}
//获取当前日期
public static String getNowDate(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
return sdf.format(new Date());
}
//获取当前时间
public static String getNowTime(){
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
return sdf.format(new Date());
}
//获取当前时间不包含秒
public static String getNowTimeM(){
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
return sdf.format(new Date());
}
//转换当前时间不包含时
public static String parseTime(int oldTime) {
SimpleDateFormat sdf = new SimpleDateFormat("mm:ss");// 时间格式
String newTime = sdf.format(new Date(oldTime));
return newTime;
}
//获取当前日期(精确到毫秒)
public static String getNowTimeDetail(){
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss:SSS");
return sdf.format(new Date());
}
//获取当前日期是星期几
public static String getWeekOfDate(Date date) {
String[] weekDays = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
if (w 10){// 10位的秒级别的时间戳
times = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(time * 1000));
}else {// 13位的秒级别的时间戳
times = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(time);
}
return times;
}
//将时间字符串转为时间戳字符串
public static String getStringTimestamp(String time) {
String timestamp = null;
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Long longTime = sdf.parse(time).getTime()/1000;
timestamp = Long.toString(longTime);
} catch (ParseException e) {
e.printStackTrace();
}
return timestamp;
}
//将长整型时间转为为分秒
public static String time(long millionSeconds) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("mm:ss");
Calendar c = Calendar.getInstance();
c.setTimeInMillis(millionSeconds);
return simpleDateFormat.format(c.getTime());
}
//将长度转换为时间
public static StringBuilder mFormatBuilder = new StringBuilder();
public static Formatter mFormatter = new Formatter(mFormatBuilder, Locale.getDefault());
public static String stringForTime(int timeMs) {
int totalSeconds = timeMs / 1000;
int seconds = totalSeconds % 60;
int minutes = (totalSeconds / 60) % 60;
int hours = totalSeconds / 3600;
mFormatBuilder.setLength(0);
if (hours > 0) {
return mFormatter.format("%d:%02d:%02d", hours, minutes, seconds).toString();
} else {
return mFormatter.format("%02d:%02d", minutes, seconds).toString();
}
}
}
MusicUtils.java 音乐扫描工具类
public class MusicUtils {
/**
* 扫描系统里面的音频文件,返回一个list集合
*/
public static List getMusicData(Context context) {
List list = new ArrayList();
// 媒体库查询语句(写一个工具类MusicUtils)
Cursor cursor = context.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null,
null, MediaStore.Audio.AudioColumns.IS_MUSIC);
if (cursor != null) {
while (cursor.moveToNext()) {
Song song = new Song();
song.song = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE));//歌曲名称
song.singer = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST));//歌手
song.album = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM));//专辑名
song.path = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA));//歌曲路径
song.duration = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION));//歌曲时长
song.size = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.SIZE));//歌曲大小
if (song.size > 1000 * 800) {
// 注释部分是切割标题,分离出歌曲名和歌手 (本地媒体库读取的歌曲信息不规范)
if (song.song.contains("-")) {
String[] str = song.song.split("-");
song.singer = str[0];
剩余17页未读,继续阅读
weixin_38658564
- 粉丝: 1
- 资源: 942
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- 27页智慧街道信息化建设综合解决方案.pptx
- 计算机二级Ms-Office选择题汇总.doc
- 单链表的插入和删除实验报告 (2).docx
- 单链表的插入和删除实验报告.pdf
- 物联网智能终端项目设备管理方案.pdf
- 如何打造品牌的模式.doc
- 样式控制与页面布局.pdf
- 武汉理工Java实验报告(二).docx
- 2021线上新品消费趋势报告.pdf
- 第3章 Matlab中的矩阵及其运算.docx
- 基于Web的人力资源管理系统的必要性和可行性.doc
- 基于一阶倒立摆的matlab仿真实验.doc
- 速运公司物流管理模式研究教材
- 大数据与管理.pptx
- 单片机课程设计之步进电机.doc
- 大数据与数据挖掘.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0