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

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

先看产品的一个模拟机测试效果(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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

弃梓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值