android音乐播放器开发在线加载歌词

如果没有本地歌词怎么办?现在来将一下加载在线歌词。好了,还是用那张图。

在实现这个功能的时候,lz尝试过baidu api,歌词迷api,后来选用了歌词迷api,虽然还是资源不全,而且还有很多错误。特别头疼的是有时候歌词居然不分行,解析起来简直难受。

歌词迷api歌词查询地址:[http://geci.me/api/lyric/](()

比如我要查询:   [http://geci.me/api/lyric/安静/周杰伦](()

会得到一下json串:

{“count”: 2, “code”: 0, “result”: [{“aid”: 2223011, “artist_id”: 30796, “song”: “\u5b89\u9759”, “lrc”: “http://s.geci.me/lrc/257/25700/2570058.lrc”, “sid”: 2570058}, {“aid”: 2336033, “artist_id”: 30796, “song”: “\u5b89\u9759”, “lrc”: “http://s.geci.me/lrc/272/27282/2728244.lrc”, “sid”: 2728244}]}

很容易发现里面的歌词文件,然后缓冲到本地(SweetMusicPlayer/Lryics)下,再按本地加载的方式就行了。

捋一捋,我们加载歌词文件要经过以下步骤。

1)通过地址查询出歌词的地址。(这里楼主用URLConnection)

2)通过歌词地址缓冲歌词文件。(这里楼主用URLConnection)

3)加载缓冲好的歌词文件。

上面说的看起来还是比较容易,楼主自己写了个demo,是一个[Java](()工程,发现没啥问题,正常加载歌词文件。

等到[Android](()上,第一步就跪了。发现URLConnection的getInputStream()抛出一个io异常,简直要命,折腾了半天才发现是因为带了[http://geci.me/api/lyric/安静/周杰伦](()中文路径。由于默认是gbk,网络传输为utf-8,所以要把中文转码,URLEncoder.encode(str,“utf-8”);即可。

到了第2步,问题又出现了,歌词乱码。解决办法,用字符流操作比较合适,还要注意同一编码。

[java] [view plain](() [copy](()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值