Android第三次作业
制作音乐播放器
实现的功能:
歌曲的播放、暂停、停止、上一首、下一首、歌单列表的显示(获取本地歌曲)。
成品图:
功能代码实现:
实现歌曲的播放、暂停、停止、上一首、下一首:
public void onClick(View v) {//按钮功能实现
switch (v.getId()){
case R.id.pre:
changeMusic(--current);//切哥
break;
case R.id.play:
if (mediaPlayer==null){//如果没有歌在播放
changeMusic(0);//切歌到第一首
}else {//如果有歌在播放
if (!mediaPlayer.isPlaying())//如果歌曲恰好没有正在播放
{
mediaPlayer.start();//继续播放
} else {//如果歌曲恰好正在播放
Toast.makeText(MainActivity.this, "已经在播放", Toast.LENGTH_SHORT).show();//弹出提示信息
}
}
break;
case R.id.next:
changeMusic(++current);//切歌
break;
case R.id.pause:
if(mediaPlayer.isPlaying()){//如果歌曲恰好正在播放
mediaPlayer.pause();//暂停播放
}
break;
case R.id.stop:
if(mediaPlayer.isPlaying()){//如果歌曲恰好正在播放
mediaPlayer.reset();//重置歌曲
try{
mediaPlayer.setDataSource(list.get(0).path);//获取第一首歌的资源
mediaPlayer.prepare();//准备播放
}catch(IOException e){
e.printStackTrace();
}
}
break;
}
}
歌单列表的实现(涉及两个文件):
//在MainActivity.java文件中
private void init(){//初始化
listview=(ListView)findViewById(R.id.listview);//为listview添加监听
list=new ArrayList<>();//建立存放歌曲的list列表
Cursor a=c.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, MediaStore.Audio.AudioColumns.IS_MUSIC);//获取本地音乐资源
if(a!=null){
while(a.moveToNext()){//读取音乐资源
SongInfomation x=new SongInfomation();//建立空音乐信息类的对象,方便对歌曲信息读取
x.song = a.getString(a.getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME));//获取歌曲
x.singer = a.getString(a.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST));//获取歌手名
x.path = a.getString(a.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA));//获取路径
x.size = a.getLong(a.getColumnIndexOrThrow(MediaStore.Audio.Media.SIZE));//获取大小
x.duration=a.getInt(a.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION));//获取持续
if(x.size>1000*800){
if(x.song.contains("-")){//如果歌名中包含字符‘-’
String[] s=x.song.split("-");//按‘-’进行分割
x.song=s[1];//将后半部分作为歌名存储
x.singer=s[0];//将前半部分作为歌手名存储
}
list.add(x);//将已经存储信息的歌曲信息对象放入列表
}
}
a.close();
} //在Adapter1.java文件中
public View getView(final int i, View view, ViewGroup viewGroup) {
Display dis = null;
if (view == null) {
dis = new Display();
view = View.inflate(context, R.layout.song, null);//找到展示歌曲信息的布局文件,也就是我的项目中的“menu.xml”文件
dis.song = (TextView) view.findViewById(R.id.song);//监听、绑定歌单,将信息放到Display的对象中
dis.singer = (TextView) view.findViewById(R.id.singer);
dis.duration = (TextView) view.findViewById(R.id.duration);
dis.position = (TextView) view.findViewById(R.id.postion);
view.setTag(dis);//给view添加信息
} else {
dis = (Display) view.getTag();//可以通过getTag方法提取出我用setTag添加的信息,然后返回给Display的对象
}
dis.song.setText(list.get(i).song.toString());//将Display对象的一些需要的属性展示在界面或者传给需要的变量
dis.singer.setText(list.get(i).singer.toString());
int duration=list.get(i).duration;
dis.position.setText(i+1+"");//歌曲序列数的实现
return view;
}
代码地址(内含APK):https://git.coding.net/mmxf/android3.2.0.git
Android第三次作业的更多相关文章
- android 第三次作业
android studio音乐播放器 一.实现功能: 1.读取本地SD中的所有音频文件 2.歌单列表展示,并显示音频具体信息 3.进度条显示当前播放进度,可滑动加速 4.点击歌单进行播放 5.实现暂 ...
- 2017-2018-1 JaWorld 第三周作业
2017-2018-1 JaWorld 第三周作业 团队展示 队员学号 队名 团队项目描述 队员风采 团队的特色 团队合照 团队初步合作 前两周的反思与总结 需要改进的地方 团队选题 *采访老师或有开 ...
- 2017-2018-1 JAVA实验站 第三周作业
2017-2018-1 JAVA实验站 第三周作业 团队展示 队名 JAVA实验站 拟作的团队项目描述 (2048)增加其他模式,使得2048更加丰富多彩 团队的首次合照 团队的特色描述 团队内部很团 ...
- 耿丹CS16-2班第三次作业汇总
-- Deadline: 2016-10-12 22:48 -- 作业内容: 1.实验2-6 猜数字游戏 2.实验2-7 判断能否为三角形 3.实验2-8 个人所得税计算器 -- 第三次作业总结: 1 ...
- JAVA第三周作业(从键盘输入若干数求和)
JAVA第三周作业(从键盘输入若干数求和) 在新的一周,我学习了JAVA的IO编程.下面的代码实现了从键盘输入若干数求和的目标.import java.util.Scanner; public cla ...
- 第三次作业:caculator
第三次作业 作业链接 ********* 遇到的问题: Scan类: 队列的使用方法不了解,上网查询并自己练习了一下才初步了解,才运用到作业 . 判断数字用的 if (input[i] >= ' ...
- HTML第三天作业做的表格
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...
- 第三次作业——《K米评测》
第三次作业--<K米评测> 一.调研.评测 上手体验 APP的图标做的不错,一眼就知道和KTV唱歌相关的 点进去就是连接包箱的界面和直播界面,把软件最重要的两个功能展示出来了,一目了然 热 ...
- 软件工程(QLGY2015)第三次作业点评(含成绩)
相关博文目录: 第一次作业点评 第二次作业点评 第三次作业点评 团队信息 本页点评团队1-22,其他组见:http://www.cnblogs.com/xiaozhi_5638/p/4490764.h ...
随机推荐
- Deep Mutual Learning
论文地址: https://arxiv.org/abs/1706.00384 论文简介 该论文探讨了一种与模型蒸馏(model distillation)相关却不同的模型---即相互学习(mutual ...
- Python 并发编程
进程 开启进程 from multiprocessing import Process import time def task(name): print('%s is running' %name) ...
- 019_UT、IT、ST、UAT
软件开发中的完成测试环境所包括的环节包括:UT.IT.ST.UAT UT = Unit Test 单元测试 IT = System Integration Test 集成测试 ST = System ...
- 02使用java脚本向Pxc集群写入数据
使用java脚本向Pxc集群写入数据 批量写入pxc集群程序 导入mysql驱动包 # 批量插入数据的java脚本 package pxc_demo; import java.sql.Connecti ...
- go实现选择排序
package main import "fmt" func SelectSort(data []int) { length := len(data) for i := 0; i ...
- aptitude与apt-get
aptitude 与 apt-get 一样,是 Debian 及其衍生系统中功能极其强大的包管理工具.与 apt-get 不同的是,aptitude 在处理依赖问题上更佳一些.举例来说,aptitud ...
- 记录一个EF连接查询的异常:the entity or complex type 'x' cannot be constructed in a linq to entities query
问题解决连接:https://stackoverflow.com/questions/5325797/the-entity-cannot-be-constructed-in-a-linq-to-ent ...
- LeetCode 20. Valid Parentheses(c++)
利用栈的操作,遇到"(","[","{"即进栈,遇到")","]","}"判断是 ...
- Git客户端(TortoiseGit)基本使用详解
1. 环境安装 Git最新版下载地址:https://gitforwindows.org/ TortoiseGit,Git客户端,32/64位最新版及对应的语言包下载地址:https://tortoi ...
- javaweb c3p0连接oracle12c
最近在搞javaweb,在连接池上碰到了一系列的问题,在Junit测试时,oracle12c报错: ORA-28040: 没有匹配的验证协议 百度解决:修改 $ORACLE_HOME/network/ ...