糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > Android音乐播放器-播放歌曲

Android音乐播放器-播放歌曲

时间:2020-09-23 15:00:15

相关推荐

Android音乐播放器-播放歌曲

最近在做一个音乐播放器的小玩意,在实现了本地音乐的歌曲播放后,希望能够播放网络上的歌曲,于是有了下面的一波乱操作 @@

数据都是易源数据提供的API,网址是这个/,有兴趣的可以去看一看。。

1、歌曲实体类

歌曲的重要组成部分是:歌名、演唱者、专辑图片、歌词、歌曲地址

所以创建一个实体类,其中通过songid可以获取歌词,m4a地址可以获取歌曲链接,albumpic_big是图片链接,singername和songname就是演唱者和歌名了,接下来就是要去获取资源了。

2、获取资源

易源数据API中的接口链接是这个,用于通过关键字查询相关歌曲,其中showapi_appid和showapi_sign是需要注册账号的,这些都很简单。然后keyword是搜索关键字的参数,page是第几页。现在我以搜索许嵩为例演示一下:

为了方便我直接用浏览器进行一个获取,Android代码获取数据也给大家贴贴一下:

private String getDataBySingerOrSong(int page,String keyword) throws IOException { Request request = new Request.Builder() .url("/213-1?showapi_appid="+ NetWorkUtils.APPID+"&showapi_sign="+ NetWorkUtils.SECRET+"&keyword="+keyword+"&page="+page+"&") .build(); Response response = client.newCall(request).execute(); return response.body().string(); }

放入在线json解析中区去看一下效果

返回的是一大串json数据,通过JsonObject对象就可以进行一个解析了。

String json = (String) msg.obj; try { JSONObject jsonObject = new JSONObject(json); JSONArray jsonArray = jsonObject.getJSONObject("showapi_res_body").getJSONObject("pagebean").getJSONArray("contentlist"); netWorkMusics = new ArrayList<NetWorkMusic>(); for(int i = 0; i < jsonArray.length();i++){ JSONObject jo = jsonArray.getJSONObject(i); String singername = jo.getString("singername"); //显示歌曲, String songname = jo.getString("songname"); //显示歌名, String m4a = jo.getString("m4a"); //用来播放歌曲 String albumpic_big = null; if(jo.isNull("albumpic_big")){ albumpic_big = null; }else{ albumpic_big = jo.getString("albumpic_big"); //用来设置背景和圆盘 } String songid = jo.getString("songid"); //用来查找歌词 } //} catch (JSONException e) { e.printStackTrace(); }

获取到数据后就可以封装到实体对象NetWorkMusic里面了,然后就可以显示到界面里面。

数据获取到了,也显示出来了,这就成功一大半了!!

接下来就是通过albumpic_big来获取图片。。要在子线程中完成的

我就直接贴代码吧:

public void getBitmap(){ //先将背景图片给加载一下 new Thread(){ public void run() { try { if(WorkMusic.getAlbumpic_big() != null) { URL url = new URL(WorkMusic.getAlbumpic_big()); NetWorkUtils.bitmap = BitmapFactory.decodeStream(url.openStream()); }else{ NetWorkUtils.bitmap = null; } } catch (Exception e) { e.printStackTrace(); } }; }.start(); }

还有通过MediaPlayer来播放音乐文件:

//设置监听:播放出错、播放完成、准备完成 mediaPlayer.setDataSource(WorkMusic.getM4a()); mediaPlayer.prepareAsync(); mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mediaPlayer) { System.out.println("开始播放网络歌曲"); mediaPlayer.start(); } }); mediaPlayer.setOnCompletionListener(new OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { next(); } });

还差就是歌词了,这个要通过songid去获取,怎么获取呢?易源数据API提供了一个songid查找歌词的接口,很方便的!!!!

将你上面获取的musicid传入进去就可以了,假设我们以许嵩的《素颜》为例子

是不是歌词都有了,接下来又是通过 JsonObject来获取了,但是有没有发现歌词和我们见到的歌词有点不一样!!!

所以需要一个手动的字符串replace一下啦。

把一些基本的替换一下,歌词就差不多可以进行一个解析了,解析操作就是基本的字符串操作,我就不列代码了,大家加油一般都是可以写出来的!!

现在歌名、演唱者、专辑图片、音频文件、歌词都有了,然后你懂得,放到界面里面就可以工作了@@

3、效果图片

源码就不给大家了,给大家运行一遍跟自己写一遍的效果肯定不一样的,大家一起加油吧!!!

如果觉得《Android音乐播放器-播放歌曲》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。