作为一个热爱设计交互性产品的男大学生,我真的不太爱听课,所以很多时候,需要一个人学会阅读搜索资料并不停尝试,我希望大家也多多热爱这样持之以恒的尝试。

先看产品的一个模拟机测试效果(b站南阳洛信也有视频)

安卓APP开发大学生期末课程设计之本地音乐播放器

该课程设计里面主要是用到登录界面、音乐播放器界面和打卡界面,因为没有内置数据库,所以退出APP后之前输入的内容并不会保存,有待改善。

这里参考了一位博主的部分内容,详情我已经放在了文件夹的word内。

要做成这样一个播放器,大概的逻辑大家也能想到,就是遍历sd卡,然后保存音乐目录。实际上,如果我们要做一个安卓的播放器,不需要那么麻烦。安卓的媒体库在sd卡内容变动时,会自动对内容进行分类,所以我们只需要将媒体库遍历一下就行了。

从媒体库中我们能得到歌曲的各种信息,包括了歌手名字、时间、相册等等。

要想它在列表llistview中显示,适配器以及适配数组元素的类型都需要自己来重新定义,当然这个可能会比较难,所以要借鉴别人的,大概看懂就行。

于是在文件目录中出现了基于BaseAdapter类的MyAdapter类(适配器类)和自定义的Musiinfo类(数组元素类),每个数组元素都应该包含歌曲的各种信息。

对于适配器类,只有两个参数和很多方便处理的自定义函数(java设计的封装性),其中list就是适配数组, context是当前容器(布局文件)的id。

private ArrayList<MusicInfo> list;
private Context context;public MyAdapter(ArrayList<MusicInfo> list, Context context) {this.list = list;this.context = context;
}

对于数组元素类,参数会多一点,因为cursor从媒体库里得到的信息比较多(有些没有用的,也显示不出来)

private String id;
private String singName;
private String singer;
private String alumb;
private String time;
private String path;
public MusicInfo() {
}
public MusicInfo(String id, String singName, String singer, String alumb, String time, String path) {this.id = id;this.singName = singName;this.singer = singer;this.alumb = alumb;this.time = time;this.path = path;
}

其次,对于播放器mediaplayer的自带的操作函数,大家需要有个概念。

上面两个是自定义的函数。播放器对象可以调整生命周期,暂停按钮的逻辑是:单击暂停,再单击继续。

最后是一个列表的单击事件逻辑:先判断当前是否有音乐再播放,然后选择先停止还是直接设置数据源播放。

class items implements AdapterView.OnItemClickListener {public void onItemClick(AdapterView<?> parent, View view, int position, long id) {MusicInfo info = list.get(position);singer.setText(info.getSinger());singerName.setText(info.getSingName());//因为有可能其他音乐正在被播放,所以要先停止再播放stopMusic();//播放音乐play.reset();try {play.setDataSource(info.getPath());playMusic();} catch (IOException e) {e.printStackTrace();}}
}

注意当列表的适配数组有变动的时候,要及时更新列表。

data.clear();//数组清空
meet.notifyDataSetChanged();//更新列表

在实验代码里还为大家建立了登录界面和打卡界面,详情可以看实验报告。

最后给予大家一点调试代码的小建议:

1.视频中音乐播放器顶端列表中的音乐来自于本地音乐播放器,在实际手机上测试时,系统不是安卓的,Android并不会自动整理媒体库,上面目录里也不会有歌曲。只有安卓系统才会搜寻本地音乐。

  2.给组件添加背景图片时,注意图片不要太大,会导致页面崩溃。

3.组件的安排不要超出模拟机界面,也容易崩溃。

4.调试时,发现单个页面打不开,未产生任何按钮单击事件,一步一步调试OnCreate{}里面的代码。事件执行的顺序是先有逻辑再有页面,很可能页面逻辑不对,如绑定布局文件设置数据源时出现了未知的id。

最后大家如果需要获取完整的实验代码或者需要我的帮助,关注公众号生而无愧,后台发送“安卓本地音乐播放器”就可以获取完整的网盘链接了。

大学生安卓期末设计之本地音乐播放器相关推荐

  1. 安卓期末大作业——android音乐播放器

    详情介绍 功能描述: 扫描手机上的音乐文件,显示音乐列表,显示歌词,上一首,下一首,音量控制进度条显示.app实现了在android6.0或以上动态权限申请功能,适合新手研究.搭建方法请看入门教程菜单 ...

  2. 安卓仿网易云界面的本地音乐播放器的实现

    前言:读研究生之前,老板让学IOS,老老实实看了一个学期的IOS(在这里强烈安利一下腾讯课堂的小码哥IOS视频,基本刚开始只需要10块买第一部,后面的就可以用可视币来兑换了,质量还不错,能学到很多东西 ...

  3. python 本地音乐播放器制作过程

    制作这个播放器的目的是为了将下载下来的mp3文件进行随机或是顺序的播放.选择需要播放的音乐的路径,选择播放方式,经过测试可以完美的播放本地音乐. [阅读全文] 在开始之前介绍一个免费下载mp3音乐的网 ...

  4. 基于 Qt5 ( C++ ) 开发的一个小巧精美的本地音乐播放器

    LightMusicPlayer --南京大学2019秋季学期 "高级程序设计" 课程设计三 基于Qt5开发的一个小巧精美的本地音乐播放器 代码注释详细,适合作为一个用于入门的Qt ...

  5. 简易的本地音乐播放器 适用于Java初学者

    简易的本地音乐播放器 适用于Java初学者 我知道肯定会有人说都1202年了怎么还有人在用AudioClip,没有别的原因,因为我也刚学Java,刚好看到一个这样的教程就刚好写了一个这样的播放器. 我 ...

  6. Android端本地音乐播放器(一)---前言

    前言: 2018时的记录:大概一周多以前(现在是2018.11.26   15:24)android平台开发的课程结束了,要写大作业,最后决定写这个音乐播放器,因为老师在课堂上讲的例子也是这个,前面的 ...

  7. 基于Phonon的本地音乐播放器

    基于Phonon的本地音乐播放器 之前逛博客的时候偶然看到一个音乐播放器的小项目,于是这两天也动手写了一个基于Phonon的本地音乐播放器.使用版本为Qt4.7.3. 目前的功能不多,界面也比较丑.后 ...

  8. Andriod本地音乐播放器

    实现本地音乐播放器(Client) 这个稍微简单点:全是Andriod知识. 学习链接:Andriod本地音乐播放的学习(这有讲课的大佬给的源码,需要自己去看视频自己去下载)(当然我的项目源码在后面, ...

  9. 基于Python实现本地音乐播放器的制作

    制作这个播放器的目的是为了将下载下来的mp3文件进行随机或是顺序的播放.选择需要播放的音乐的路径,选择播放方式,经过测试可以完美的播放本地音乐. 在开始之前介绍一个免费下载mp3音乐的网站,有需要的可 ...

  10. 本地音乐播放器(JavaFX-SoPlayer)

    大二学java一个多月了,正好2.14情人节想做的点什么东西,于是心血来潮写了个粉嫩粉嫩的播放器布局(这个也放github里面了),后来一发不可收拾不断改进,前后近三个星期遂步进新世界. 基于Java ...

最新文章

  1. 华东政法大学教学管理系统_中国科学技术大学1022万采购3包生命科学仪器
  2. VINS状态估计篇-视觉sfm初始化
  3. Google:推荐几款好用的Chrome浏览器插件
  4. 【CodeForces - 518D】Ilya and Escalator(概率dp,数学期望)
  5. 经典面试题(29):以下代码将输出的结果是什么?
  6. gan怎么输入一维数据_时空序列预测模型GAN+LSTM
  7. 【白皮书分享】2021年智慧城市白皮书:依托智慧服务,共创新型智慧城市.pdf(附下载链接)
  8. 如何用tf2.0训练中文聊天机器人chatbot
  9. 分子动力学模拟AMBER参数意义
  10. 【基于java的sftp操作工具类】
  11. Django新手入门(三)——使用PyCharm创建Django项目
  12. 抱歉登录伺服务器暂时离线,为什么我离线了,换服务器的时候老提示我重复 – 手机爱问...
  13. ntdll.dll 0xc0000005
  14. SuperMap iClient3D for WebGL教程(特效)- 点光源
  15. 很全的zencart 模板修改
  16. 力扣第235题“二叉搜索树的最近公共先祖”的解题思路
  17. 关于编写公司软件测试规范操作手册计划书
  18. 微信真机调试时出现 (in promise) MiniProgramError {“errMsg“:“hideLoading:fail:toast can‘t be found“} Object
  19. Android自定义软键盘的实现
  20. grafana安装使用

热门文章

  1. 苹果 ios mdm服务器搭建
  2. Python爬虫 糗百段子
  3. U盘量产失败后无法找驱动U盘的解决方法。
  4. 小马 KMS10激活系统后的浏览器小尾巴分析与清除
  5. CSAPP 大作业 程序人生
  6. 医疗行业源代码保密解决方案
  7. c语言头文件sys wait.h,错误:sys/wait.h:没有这样的文件或目录
  8. 奇偶校验方法(韦根协议)
  9. python常用的编程软件_mPython(图形化编程软件)
  10. 功能测试用例设计方法,一文带你了解用例设计,再也不担心用例了