0. 说明
本文旨在介绍我写的程序 ---- 安卓音乐播放器该如何使用的问题,如果想要了解播放器的源码,请进入Android播放器的专栏,点击跳转查看相关文章。
这个只适合于做一个课设,程序里目前还有很多不合理的部分,比如登录成功就向服务端请求全部个群信息,这明显是不合理的,不过我目前不会再更改了,请看懂源码后自行更改。
1. 程序下载
仓库可以下载源代码:
希望大家顺手点个star,十分感谢
打开仓库,所有程序都在这了,可以通过Git或者下载压缩包的形式把所有内容下载下来
打开文件夹,所有文件如下图所示,除了红框里的内容,其他的不用关心,NewMusicPlayer是安卓程序目录,此程序使用Android studio
打开(现在先不要打开,需要修改一部分内容),如果使用其他软件,可能存在软件兼容性的问题;Server是服务端程序,由java开发,这个需要使用Idea
打开,当然,这个如果使用其他软件打开,可能也要面对软件兼容性的问题。
2. 服务端程序
和很多人预想的不同,我写的程序只能播放服务端的歌曲,即存在两端——服务端和客户端,客户端(安卓)播放歌曲前需要向服务端请求歌曲信息。很多人需要的播放本地音乐的功能,我并没有写,还有根据网络api的播放方式也没有写,大家如果有兴趣的话,可以自己进行完善。
Idea
打开程序应该不用我过多说明吧,很多软件都是相同的操作…
2.1 maven
如果你曾经配置过maven,那么maven会自动根据pom.xml下载好所需要的jar包,如果出现以下这种情况,则需要先配置下maven环境(需要的自行查询,这里不做介绍,配置完成后,所有依赖会重新下载)
maven配置正常的环境:
2.2 Tomcat
Tomcat 是一个免费的开放源代码的Web 应用服务器,客户端必须经过服务器才能访问服务端的资源。所以要访问服务端的资源,Tomcat就是一个很好的选择。
如果你没有配置Tomcat,那么就会出现以下这种情况,这种情况无法运行程序
我之前用的是9.0.35版本的tomcat,刚刚我去官网下载了9.0.46版本的tomcat,运行起来,哇,熟悉的感觉
没有配置过tomcat的小伙伴移步我之前写的一篇博客,点击跳转
一定要注意,有一个小细节,这里的Application context需要修改为/musicplayer
,否则只能去改Android端的配置文件了。
也就是tomcat配置页面的URL是下图这个样子
配置好之后就是这个样子,之后就可以启动tomcat了
但是,到这里,数据库还没有呢,启动了tomcat也还请求不到数据,所以得先建一个数据库。
2.3 MySQL
程序里没有数据库,所以首先需要建两个基本表(这一部分的内容,我在我的博客里已经说明过了,这里再阐述一次)。
(关于MySQL安装及配置可以访问:MySQL安装及使用)
(关于IDEA连接MySQL可以访问:IDEA连接MySQL)
- 创建数据库
CREATE DATABASE `MusicPlayer`;
- 建立歌曲表
USE `MusicPlayer`;
DROP TABLE IF EXISTS `music`;
CREATE TABLE `music` (
`music_id` int(5) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`author` varchar(50) NOT NULL,
`address` varchar(50) NOT NULL,
`img` varchar(50) NOT NULL,
`create_time` datetime NOT NULL,
`change_time` datetime,
`remark` text,
PRIMARY KEY (`music_id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
- 建立用户表
CREATE TABLE `user` (
`userid` int(5) NOT NULL AUTO_INCREMENT,
`account` varchar(20) unique NOT NULL,
`password` varchar(100) NOT NULL,
`music_id` int(5) NOT NULL DEFAULT '0',
`pattern` int(5) NOT NULL DEFAULT '0',
`create_time` datetime NOT NULL,
`change_time` datetime,
`remark` text,
PRIMARY KEY (`userid`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
这样就是创建成功了。
在项目中的webapp目录下,有一个image目录,这是我之前试验使用的歌曲封面,至于歌曲文件(.mp3),因为涉及版权我没有上传。当然这里的图像文件也没有什么作用了,可以全部删除。
然后下载两首歌曲,歌曲封面放到image文件夹中;创建一个新文件夹,名称为“music”,把歌曲文件放到这个文件夹内,好了,到现在就有播放歌曲使用的资源文件了
向数据库中添加两首歌曲的信息(要根据自己的文件添加,因为目前没有管理软件,需要自行添加)
insert into music(name,author,address,img,create_time)
values ('Strongest','Ina Wroldsen,Alan Walker','Strongest.mp3','Strongest.jpg',now());
insert into music(name,author,address,img,create_time)
values ('Forgettable','Olivia','Forgettable.mp3','Forgettable.jpg',now());
用户表中无需添加信息,至此,数据库中也就存在了数据,服务端可以正常使用了
- db.properties
在资源目录下找到db.properties,把MySQL的账号和密码换成你自己的,这样才能连接成功。
2.4 日志
这个不用自己配置,这是我自2022.1.1更新程序后配置好的。框架使用的是slf4j+log4j两个常用的。文本存储地址在使用的tomcat的bin目录下,名称为:musicplayer.log 当出现问题时可以根据日志文件调试。
3. Android程序
Android studio建议用新版。
3.1 开发环境
这里提供两个方案来使程序匹配自己的开发环境(推荐第二种)
- 按这篇博客–>链接修改一下gradle文件,匹配一下自己的开发环境。
- 搜索“Android studio配置阿里云镜像”,这样直接打开会下载项目中使用的配置资料(下载时间较长,请耐心等待)。
3.2 真机测试环境配置
我使用真机测试,Android studio自带的虚拟机我并没有测试,所以如果使用虚拟机测试出现问题,我不知道解决方案。
测试环境是Android 10,因此需要修改Android studio的设置。
然后等待下载文件即可。
将手机端通过数据线连接电脑端。
手机端,打开开发者模式(不同型号的手机打开的方式不同,这里不再赘述)
然后打开调试
有的机型需要将“USB连接方式”修改为“传输文件”才行。
如果前面说到的所有文件都下载完毕后,使用数据线连接电脑和手机,两台设备就会自动连接,连接成功后的效果如下图所示。
这时点击上图中的小三角“Run”,就可以运行整个项目。
手机端如下图所示。
不过这里还不着急运行,还需要修改一些配置。关闭项目运行即可。
4. 测试
4.1 局域网
服务端与客户端需要通过网络传输内容,这里使用了一个局域网(我测试的两台设备使用同一个wifi传递不了信息,你们可以测一下)。我的方式是通过手机开启热点供电脑连接,这样就形成了一个局域网。
打开cmd,输入“ipconfig”查看自己电脑在接入局域网后的ip
IPv4地址需要复制下来。
找到Android项目中的Ip.properties,将刚才复制的IPv4地址替换掉原来的地址(只替换地址,其他不要动)
4.2 开启服务端
在此之前,先确保MySQL是否已经打开,还是打开刚才的cmd,输入“net start mysql”。
运行服务端程序
待在网页中出现下图时,代表启动成功。
4.3 开启Android程序
先注册一个账号
注册完成后会自动跳转回主界面,这时候去查一下数据库,发现用户表中多了一条信息,这样我们就可以使用刚注册的账户信息登录系统中。(2022.1.1更新后,存储的密码使用加密后的密码,不再使用明文)
登录
登录后就出现播放界面了。
测试了一下,播放、拖动进度条、上一首、下一首、播放模式切换、播放列表、关闭保存、打开还原歌曲等功能都可以正常使用。
如果没有登录成功。系统会提示相关的信息。大家可以根据根据提示检查服务端或者数据库。也可以结合服务端的日志文件调试功能。不懂的也可以问我。
(录屏文件我放到了仓库的根目录里了,需要的自取)
5. 更新
新设计了一个简易的后台管理,这个管理程序有后台数据的增删查改功能,由c#程序所写。
使用前需要先在管理程序中bin\Debug目录下找到Manage.ini文件,用记事本打开。
修改数据库连接串,也就是使用自己电脑上MySQL的账户和密码。
最后还是在这个文件夹内,找到exe文件,打开即可使用。
6. 最后
如果对你有帮助的话,非常欢迎留下个赞,顺便去我的仓库点个“star”
如果恰好手头宽裕的话,打赏一点也不是不可以(😄)