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申请域名使用 立即下载

相关推荐

如何用DETR(detection transformer)训练自己的数据集

DETR(detection transformer)简介 DETR是Facebook AI的研究者提出的Transformer的视觉版本,是CNN和transformer的融合,实现了端到端的预测,主要用于目标检测和全景分割。 DETR的Github地址:link

weixin_50233398的博客 3万+

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

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

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

layui 监听单元格点击事件,获取当前点击单元格的内容以及 所在的表头内容

特别是后台的一些管理系统中 业务中还是会碰见这样的需求呢 如果你的后台使用layui写的话 在表格中 layui 也给我们提供了监听单元格的事件 但是好像不能直接获取到单元格内容个 和 对应的表头 其实 还是可以解决 换个角度使劲就会发现新的世界 不是吗 event: 'username' 在每个表头中加一个 event 属性 这样就可以监听表头事件 记住个 event 和 当前列的字段最好保持一样 table.render({ e...

业余前端的职业经历 1万+

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

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

a_ittle_pan的博客 1386

汽车TARA分析实战:从威胁建模到安全需求落地的完整指南

在汽车电子电气系统开发中,威胁分析与风险评估(TARA)是确保功能安全与网络安全的核心方法论。其原理在于通过结构化的流程,系统性地识别资产、分析威胁场景并评估风险,旨在将安全理念前置,从设计源头规避风险。这一过程的技术价值在于将模糊的安全担忧转化为可量化、可追溯的工程需求,从而指导资源精准投放,是符合ISO 26262和ISO/SAE 21434标准要求的关键实践。其应用场景贯穿智能汽车从概念设计到系统开发的各个阶段,尤其对于涉及自动驾驶、智能座舱、车云通信等复杂功能的域控制器开发至关重要。本文聚焦于TAR

weixin_42706667的博客 303

一文搞懂【Linux 搭建 Dread Hunger 服务器】附本体及Docker部署集群方案

看直播发现了五花八门的开服器和版本,一时兴起按官方文档进行了搭建尝试,所以我的版本基于官方Stream2024.01.10更新的版本,也就是停服时的玩法,应该可以根据mod和补丁魔改成更那些开服器一样的版本,本文不做谈论,注重服务器搭建,毕竟8个人不可能在一个局域网里乱象:首先,我看了大量教程视频,一类是开服器的推广,另一类自建的基本采用Windows搭建,我觉得最离谱的是大部分教程都会教你买一台远程Windows虚拟机???

LHmine的博客 3983

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

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

gitblog_00351的博客 1209

光模块封装工艺简介

光模块按照部件可以分为芯片、光器件、光模块三个层级;按照应用领域大概可分为电信应用、数通应用两个领域;按照内部器件的封装工艺可分为TO、Box、COB三大类。 但是,无论是哪种类型的光模块,其生产工艺基本上可以分为封装、测试两大块。   那什么叫做器件封装呢?我的理解器件封装就是利用胶水、焊料、机械、热量等手段把器件按照一定的先后次序结合形成一个整体的过程,就好像早上吃的煎饼,把面粉、鸡蛋、脆饼、烤肠、葱花等这些“器件”,按照一定的顺序,通过食用油、甜面酱、加热、卷起来等手段结合到一起,形成了美味的

qq_33253182的博客 2814

Android在线音乐播放器

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

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

Windows10 使用Apple Studio Display显示器的设置

AppleStudioDisplay显示器购买花了近1.5wRMB,由于为windows台式机,显卡为NVIDAGTX-1660,而AppleStudioDisplay只有雷电接口,尝试了很多种转接方式,均以失败告终,最终使用贝尔金VR线成功,,附图如下这边也测试过NVIDARTX-2060Super、NVIDAGTX-1650显卡,都是能点亮的,NVIDA1650存在关机重启后黑屏,不稳定现象,2060也存在关机重启后不亮现象,后面发现1660s很稳定。...

爱意随风起,人生不可弃。 1万+

从零实现深度学习框架——理解正则化(一)

本文介绍解决过拟合与欠拟合的方法——正则化,主要介绍L1和L2正则化。

日积月累,天道酬勤 3394

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

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

gitblog_06756的博客 393

9篇6章7节:SEER 数据库的2025年数据变量多条件组合选择(2026年版)

软件中的病例筛选功能通过CaseSelection界面实现精准研究队列构建。该界面允许用户通过变量选择(Variable)、运算符定义(Operator)和取值设定(Values)三步操作创建筛选条件,支持种族、分期等关键变量的多条件组合。

MD Code 1454

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

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

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

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

xiaobeibeinihao的专栏 1549

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

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

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

计算机毕业设计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、付费专栏及课程。

余额充值