Andriod小项目——在线音乐播放器

音乐播放器源码(Android端+Pc管理+服务器端) 这是一个完整的音乐播放器项目,包括Android端,Pc管理端,和服务器端,是用java+Tomcat编写,数据库是MySQL,可以把音乐放在PC端进行管理,手机端进行下载。 立即下载

Andriod小项目——在线音乐播放器

转载请注明:http://blog.youkuaiyun.com/sunkes/article/details/51189189


Android在线音乐播放器

从大一开始就已经开始自学Java和Android了,到现在差不多有一年了。

终于到了开始做项目实战的阶段了。就先DIY个在线音乐播放器。


实现了以下功能:

这个播放器可以从本机电脑搭建的简易服务器里异步读取并解析json数据,播放音乐,实现音乐切换,时间显示,以及显示播放进度。


程序有三个界面,启动画面,音乐列表,播放器页面,可以通过音乐列表点击进入到播放界面。


这篇文章只大概写了一下实现的思路,描述了一些关键的地方。

文章最后还提供了源代码,可以在文章结尾处  下载。




这是播放界面效果图:


 





具体思路如下:共6步


1.搭建简易服务器和接口设计

我们需要自己搭建一个简易的服务器,以便我们在手机客户端访问我们电脑目录中的音乐文件。

这里我们选择的是XAMPP套件,我们使用Apache服务器。

当然你选择电脑自带的IIS也是可以的,你可在控制板中开启它。在这里就不再多说了。

如果你和我一样使用了XAMPP,打开X:\xampp\htdocs 

这里是Apache服务器的根目录。

我们一会可以通过在浏览器输入localhost访问到这里,或者局域网下电脑IP也可以访问到此处。

我们在htdocs 里新建文件夹music,接着拷贝几首音乐到刚刚我们建立的文件夹里。然后再新建music.json文件和我们的歌曲放在一起。

我们可以开始编辑json了,打开我们刚刚建立的Music.json:

[{"name":"Against The Grain","singer":"Akon","mp3":"music/101.mp3"},

{"name":"Entre Toi Et Moi","singer":"Mathieu Edward","mp3":"music/102.mp3"}]

 

好了,我们的简易服务器已经完成了。

我们的接口就是:

http://localhost/music/music.json

目录如下:



2.新建项目以及文件

与时俱进,我们使用谷歌前不久发布的Android Studio 2.0作为开发环境。

打开它新建工程,取一个名字。

然后我们创建一下目录:

activity---是我们的活动类,我们所所有的活动都在这里建立

adapter--适配器,保存一些像ListView适配器等

Model--实体类,用于存放Music实体。

Server--服务,我们将把后台服务代码建立在这里

util--工具,我们将设计一些播放音乐会使用的函数等内容,然后把它封装成类,便于使用


建立完后应如图所示:

 


3.设计启动界面,

启动画面,就类似于微信打开时的月球的那个页面。新建一个SplashActivity

我们需要让启动画面显示两秒钟左右,然后结束这个活动,跳转到进入主程序。代码如下:

我们使用Handler类里的postDelayed方法,第一个参数时一个Runnable接口,

我们直接传入并实现匿名接口,在run方法里启动另一个活动,这一步我们一气呵成。

public class SplashActivity extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.logo_show_layout);

//启动画面的代码:
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
              startActivity(new Intent(SplashActivity.this,MusicListMainActivity.class));
                SplashActivity.this.finish();
            }
        },1500);
    }
}


4.编写显示音乐信息的列表活动。

新建MusicListMainActivity
这个活动也就是启动界面结束以后,启动的类。这个类将连接服务器,获取并解析,json数据。显然这需要线程异步处理,不然网络连接或阻塞到主线程,从而导致出现 ANR 。
这里我们使用AsyncTask,AsyncTask有不少缺点大家应该知道,如果可以还是使用java回调来与线程相结合。或者其他方法
我们虽然在这里使用了AsyncTask,但是还是提供java 线程+接口回调实现的方法:

接口设计:

public interface HttpCallbackListener {
	void onFinish(String response);
	void onError(Exception e);
}

在HttpUtil工具类里编写相关方法:

public static void sendHttpRequest(final String address,
			final HttpCallbackListener listener) {
		
	new Thread(new Runnable() {
			@Override
			public void run() {
			
				try {
				    ...
					while ((line = reader.readLine()) != null) {
						response.append(line);
					}
					if (listener != null) {
						// 回调onFinish()方法
						listener.onFinish(response.toString());
					}
				} catch (Exception e) {
					if (listener != null) {
						// 回调onError()方法
						listener.onError(e);
					}
				} finally {
					if (connection != null) {
						connection.disconnect();
					}
				}
			}
		}).start();
	}



然后我们可以在我们需要的地方调用了,传入相应参数即可,第二个参数是一个匿名接口的实现。

	HttpUtil.sendHttpRequest(address, new HttpCallbackListener() {
			@Override
			public void onFinish(final String response) {
				
			}
			
			@Override
			public void onError(Exception e) {
				
			}
		
	})
注意在里还是不能更新UI的,因为还是属于子线程里面。也需要Handler或者runOnUiThread(..)来 实现更新UI


好了,让我们来看看AsyncTask如何实现这种功能呢:
首先新建HttpResponseHandle类,把它放到Util文件夹里面,继承自 AsyncTask<String, Void, String> 

AsyncTask这个类使用了Java泛型,第一个参数是执行时传入的参数,第二个是进度显示的参数,如果需要显示进度例如41%,这里就不能为空了。第三个参数是异步执行完成后返回类型。

protected String doInBackground(String... params) 

@Override
protected void onPostExecute(String result) {
    onComplete(result);
}

我们继承之后实现以上这两个函数,第一个函数是可以进行耗时操作的,因为android在底层实现了异步线程,第二个函数将在doInBackground结束完成后回调,并传入doInBackground返回值,这中间操作时自动完成的。这时我们后台操作已经完成了。我们在HttpResponseHandle 建一个抽象函数public abstract void onComplete(String result),以便实现类似与刚刚用接口回调的效果。
这个抽象函数将接收解析完成的数据,我们稍后会在MusicListMainActivity调用它。
在MusicListMainActivity的实现:

HttpResponseHandle httpResponseHandle = new HttpResponseHandle() {
  
//执行到了onComplete说明我们编写的异步处理已经成功读取了数据,
//由于是JSON格式的数据,我们可以在onComplete里开始解析它
  @Override
    public void onComplete(String result) {
           // 在这里接受数据,开始解析json数据       
 }
};

我们写的异步处理是不会自动启动的,我们需要调用execute()函数:

//调用后会执行doInBackground(),并execute将参数传给它doInBackground
httpResponseHandle.execute("http://192.168.41.3/music/music.json ");


5.服务类的设计思路
服务类通通过接收判断参数,从而执行不同的操作。
值得注意的是,android服务并不能直接执行耗时操作,还是需要自己另外开启多线程的。在调用MediaPlay.prepare()是个耗时操作,会导致主线程阻塞。
这里使用prepareAsync()就好了,不然就得自己开线程了或者其他方法来处理阻塞了。
 
 
6.MusicUtil工具类 
实现了初始化音乐,音乐的播放,暂停,还实现了实时更新音乐的进度。
更音乐的进度是这样实现的:

设置自己每秒执行500毫秒的Handler通过发送广播,通知MusicPlayer进行UI更新。
还有个MusicMediaUtil类可能用不到,这个类可以返回MediaPlayer对象,和new MediaPlayer()效果一样。设计这个类是因为在setDataSource切换歌曲时有的时候会报一些错误。我参考了许多资料,都说是无关紧要的错误(E/MediaPlayer: Should have subtitle controller already set ),就按照StackOverFlow提供的方法处理了。——这类直接使用JAVA的反射,对原代码稍稍修改一下,这样就不会出现E/MediaPlayer: Should have ...的错误了。
 
 


好了最后说一说项目如何运行呢?


开启服务器,首先确保,电脑与你的手机在同一个局域网中,最简单的方法就是它们连接一个同WiFi,

然后电脑按Windows键+R 输入cmd打开命令行,输入ipconfig     ipv4 就是你电脑的IP了,把IP它填入MusicListMainActivity里面的root=" "里。这样手机端就可以正常连接电脑的服务器了。


到这里文章就到此结束了,感谢大家支持。: )


PS.

初学者文章,大神请轻拍!!

第一次写关于安卓的博客,大家要多多鼓励我哈~。



下载地址:

github免积分下载:

https://github.com/mmdsyl/MusicOnlinePlayer


csdn下载:

http://download.youkuaiyun.com/detail/sunkes/9495726










tomcat+Android简单音乐播放器 使用tomcat搭建服务器(springmvc+mybatis),作为音乐播放器的服务器,存放歌曲的信息 客户端是基于安卓开发的简单音乐播放器 使用nat123申请域名使用 立即下载

相关推荐

树莓派安装snowboy

1、树莓派换源 参考链接:https://blog.youkuaiyun.com/qq_43556844/article/details/113615915 2、更新pip3 参考链接:https://blog.youkuaiyun.com/qq_43556844/article/details/113616214 3、存取麦克风 我们使用PortAudio作为音频输入/输出的跨平台支持。我们还使用sox作为快速实用程序来检查麦克风设置是否正确。 sudo apt-get install python-pyaudio python

qq_43556844的博客 1923

Android程序设计之音乐播放器实现

基于MediaPlayer技术实现在线音乐播放器,播放在线音乐,后端使用SpringBoot将音乐存放在Tomcat服务器。app通过网络请求获取音乐,从而实现在线音乐播放。该项目分为用户端和管理员端。

商城app+新闻app+备忘录记事本app视频教程在某站【浩宇软件开发】 8781

IsaacLab从入门到精通(二) 导入自定义机器人

IsaacLab系列第二讲,导入自定义的机器人及设置

DejaWu33的博客 8464

Android音乐播放器(有服务器后台)

引言 在我之前发的一偏文章中就有发Android音乐播放器的一篇博客,那篇博客到现在应该已经快有一年了,当时的主要精力放在Android的学习和网络攻防那一块上,导致那个Android项目是没有服务器后台的,最近在学习相关的web知识,然后想起写Android的那段时间,就想着完成它。这个项目从整个项目的基本设计到完成画了三天时间。虽然不太完善,但还是想着发一篇博客记录一下,以后看到也能增添一些回忆。 直接就贴效果图和代码了,具体流程我就不过多细说。想了解的小伙伴可以去下载源码去看,我会在最后贴上项目源码:

a_ittle_pan的博客 1386

音频——DAC 性能测试

codec DAC 性能测试方法

tyustli 2235

新手也能写复杂爬虫!AI+Python自动分析京东商品,提取数据不用F12

不用F12:AI自动分析京东页面,生成选择器;不用懂JS:Playwright自动渲染动态数据;不用改代码:只需配置3个参数,复制运行就能出结果。这套方案不仅适用于京东,修改提示词后还能爬取淘宝、拼多多、亚马逊等电商网站,新手只需掌握“配置参数→运行代码→查看CSV”3步,就能轻松获取任意网站的结构化数据。未来,AI会让爬虫彻底进入“零代码、零门槛”时代,新手也能轻松搞定复杂数据爬取需求。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1340

【亲测免费】 开源宝藏:MusicJSON,音乐数据转换的新纪元

开源宝藏:MusicJSON,音乐数据转换的新纪元 在数字化音乐创作与解析的广阔天地里,一个名为MusicJSON的开源项目正逐渐成为连接传统与现代的桥梁。此项目旨在实现MusicXML和MusicJSON格式的双向转化,为音乐制作人、软件开发者以及音乐爱好者们提供前所未有的便利。今天,让我们一起深入探索这个音乐数据转换领域的明星项目。 项目介绍 MusicJSON,正如其名,是一个专注于音乐领域...

gitblog_00351的博客 1209

【现代人形机器人:从物理建模到大模型驱动的控制与学习】第1章 机器人建模回顾

本章建立读者进行后续控制 / 优化 / 学习工作的数学与计算基础。内容分为三大块:刚体运动学:位姿表示、坐标变换、旋转参数与李代数/李群(指数映射、twist)多关节机构的正/逆运动学:DH 与 POE 两种建模、雅可比矩阵推导、数值/解析逆解方法与奇异性问题约束动力学:拉格朗日公式、牛顿—欧拉递归算法、接触/冲击模型、受约束系统的方程(拉格朗日乘子与互补性条件)每一节同时给出与练习题。假设读者已具备线性代数(矩阵、特征分解、SVD)、多变量微积分与基础力学(牛顿第二定律)知识。

u012133341的博客 185

Android在线音乐播放器

波尼音乐 系列文章 Android开源在线音乐播放器——波尼音乐 Android开源音乐播放器之播放器基本功能 Android开源音乐播放器之高仿云音乐黑胶唱片 Android开源音乐播放器之自动滚动歌词 Android开源音乐播放器之在线音乐列表自动加载更多 前言 毕业设计做的项目,答辩完了,就共享出来。 项目地址:https://github.com/wangchenyan...

未来很长,但我会努力的走下去。 4401

Open3D点云数据处理(六):点云、mesh可视化(Visualizer类)

本文介绍了Open3D中Visualizer类可视化几何对象的方法,给出了常用参数解释和代码示例。

孙悟空 3025

Qt QTableView排序

在开发过程中,我们需要通过点击表头来对QTableView或QTreeView等一系列高级视图进行排序操作,以下是进行排序的步骤。首先创建了一个QStandardItemModel对象或者继承QAbstractTableModel类作为数据模型,并设置了一些数据。然后创建一个QTableView对象,并将数据模型设置为其模型。接下来,创建一个QSortFilterProxyModel对象,并将QStandardItemModel对象设置为其源模型。然后设置QTableView开启排序功能。

希望能帮助大家,希望大家多多支持,你们的支持是我前进的动力。 2643

Android开源在线音乐播放器:便捷的音乐生活,一触即达

Android开源在线音乐播放器:便捷的音乐生活,一触即达 去发现同类优质开源项目:https://gitcode.com/ 项目简介 随着数字音乐的发展,越来越多的人选择在线听音乐。今天,我们推荐一款Android开源在线音乐播放器,这是一款基于Android Studio开发的音乐应用,旨在为用户带来流畅、便捷的音乐体验。 项目技术分析 技术框架 Android开源在线音乐播放器采用了以下技术...

gitblog_06756的博客 393

1、JMP脚本编程全面指南:从基础到高级应用

本博客全面介绍了JMP脚本编程的各个方面,从JMP基础和JSL入门,到数据类型、数据结构、编程方法、数据表操作、图形与三维场景脚本,再到应用程序创建与扩展功能。内容涵盖脚本工具使用、常见任务实现、兼容性说明及未来发展趋势,旨在帮助用户掌握JMP脚本语言的强大功能,提升数据分析的自动化与定制化能力。适合从初学者到高级用户的深入学习与实践参考。

flink9streamer的博客 266

android之在线音乐播放器

1.xml文件 <SeekBar android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/sb_main_bar"/> <ImageButton android:layout_width="wr

YDCookie的博客 878

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

jamendo_android 一个开源的Android在线音乐播放器实例

一个开源的在线音乐播放器,学习下别人的精神 https://github.com/telecapoland/jamendo-android

xiaobeibeinihao的专栏 1549

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

andriod 简易音乐盒开发实现上一曲、下一曲、暂停、自动播放下一曲(第二篇具体实现)

    mp3抽象类package com.example.onlinemusicbox;public class Mp3Info{ private String songName;//歌曲名 private long Id;//序列号 private String Artist;//艺术家名 private long Duration; private long Size; //歌曲大小 pri...

黑子鑫的博客 1338

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

计算机毕业设计ssm基于Andriod的剪纸艺术平台3swaq系统+程序+源码+lw+远程部署

计算机毕业设计ssm基于Andriod的剪纸艺术平台3swaq系统+程序+源码+lw+远程部署。jsp+sqlserver基于JSP的养老院老人日常生活管理系统。JSP+sql图书管理系统(源程序+论文+数据库+录像)jsp__sqlserver_教师工作量考核系统_jspmysql医院体检中心个人健康状况信息管理系。jspmKoopo运动网mjmBBCXmysql。jsp__sqlserver_在线音乐播放器_jsp_sqlserver_学生学籍管理系统_jspjava学习平台精品课程mysqlssh。

sheji113的博客 526

Android实现在线播放音乐

Android实现在线播放音乐 转子:http://blog.youkuaiyun.com/wwj_748/article/details/20933055 2014年3月10日 hello,小伙伴们,3月份珊珊来迟的第一篇博客,最近小巫在找工作,加上又生病了,就没有太多精力去写博客了。今天拖着病发表一篇之前已经实现的在线播放音乐效果,在线播放音乐并不难,也就是传入的Url是一个网络

hhy018的专栏 914

基于android音乐播放器的设计

本科毕业论文(设计)诚信声明本人郑重声明:所呈交的毕业论文(设计),题目《………基于android音乐播放器的设计……………………………》是本人在指导教师的指导下,进行研究工作所取得的成果。对本文的研究作出重要贡献的个人和集体,均已在文章以明确方式注明。除此之外,本论文(设计)不包含任何其他个人或集体已经发表或撰写过的作品成果。本人完全意识到本声明应承担的责任。摘 要本文说明了制作音乐播放器所用的技术,制作流程和功能介绍。Android是一个开源的系统,它底层是基于Linux的操作系统,本论文的音乐播放器采

科大云炬 4267

学习Android 必备 实例大集合

android+实例源码+集合 包含的实例: Android activity intent 相关Java源代码 Android Button按钮及TextView实例介绍 Android 安卓系统上的豆瓣网程序(Java) Android 手机编程实例源码:Widget 源代码 Android 手机屏幕保护Java源码 Android 手机系统中的SQLite 相关Java源码

banketree 4152

Android开源音乐播放器之在线音乐列表自动加载更多

系列文章 Android开源在线音乐播放器——波尼音乐 Android开源音乐播放器之播放器基本功能 Android开源音乐播放器之高仿云音乐黑胶唱片 Android开源音乐播放器之自动滚动歌词 Android开源音乐播放器之在线音乐列表自动加载更多 前言 当我们的ListView数据比较多时,我们一般都会选择分页显示,而分页显示就需要一个动作触发加载更多操作,通常我们会使用上拉加载更多,但我...

weixin_34194702的博客 368

android应用程序设计与实现相关资源汇总,不断更新中……

以下资料为本人搜集整理,与大家分享,如若侵害您的权利,请您速与本人联系,及时删除。 兼容Android平台的家庭智能终端人机交互设计.pdf 兼容Android的智能终端系统框架设计.pdf 基于Android下蓝牙通信的对弈游戏的开发研究.nh 基于Android智能家居的探讨.pdf 基于ARM9的Android终端系统的研究与实现.nh 基于GoogleAndro

Adrian 博客 1831

Android音乐播放器word文档,【IT专家】基于android的网络音乐播放器

本文由我司收集整编,推荐下载,如有疑问,请与我司联系基于android的网络音乐播放器2017/03/31 0 作为android初学者,最近把疯狂android讲义和疯狂Java讲义看了一遍,看到书中介绍的知识点非常多,很难全部记住,为了更好的掌握基础知识点,我将开发一个网络音乐播放器-EasyMusic来巩固下,也当作是练练手。感兴趣的朋友可以看看,有设计不足的地方也欢迎指出。开发之前首先介...

weixin_42445142的博客 218
下一篇: Spring Boot打包war jar 部署tomcat
sunkes
博客等级 码龄16年 5粉丝 8原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

sunkes

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

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

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

打赏作者

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

抵扣说明:

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

余额充值