本文来自CSDN丹丹博客,转载请必须注明出处:

http://blog.csdn.net/dany1202/archive/2011/06/09/6533513.aspx

使用百度的歌词API,如:

http://box.zhangmen.baidu.com/x?op=12&count=1&title=%E6%97%8B%E6%9C%A8 $$%E7%8E%8B%E8%8F%B2 $$$$

黄色部分为歌曲名和歌手名,输入如上网址,会得到一个对应的xml文件

其中的count值为1是说返回的是一个

<lrcid>43150</lrcid>这个值是我们想要的。

http://box.zhangmen.baidu.com/bdlrc/ 这个是百度lrc歌词存放地址

对应歌词地址:http://box.zhangmen.baidu.com/bdlrc/431/43150.lrc

对应类:

package com.android.music.play; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLEncoder; import java.util.ArrayList; import android.util.Log; public class SearchLRC { private URL url; public static final String DEFAULT_LOCAL = "GB2312"; StringBuffer sb = new StringBuffer(); private boolean findNumber = false; /* * 初期化,根据参数取得lrc的地址 */ public SearchLRC(String musicName, String singerName) { // 将空格替换成+号 //musicName = musicName.replace(' ', '+'); //singerName = singerName.replace(' ', '+'); //传进来的如果是汉字,那么就要进行编码转化 try { musicName = URLEncoder.encode(musicName, "utf-8"); singerName = URLEncoder.encode(singerName, "utf-8"); } catch (UnsupportedEncodingException e2) { // TODO Auto-generated catch block e2.printStackTrace(); } // String strUrl = "http://box.zhangmen.baidu.com/x?op=12&title=" // + musicName + "$$" + singerName + "$$$$"; String strUrl = "http://box.zhangmen.baidu.com/x?op=12&count=1&title=" + musicName + "$$"+ singerName +"$$$$"; Log.d("test", strUrl); try { url = new URL(strUrl); Log.d("SearchLRC===============","url = "+url); } catch (Exception e1) { e1.printStackTrace(); } BufferedReader br = null; String s; try { HttpURLConnection httpConn = (HttpURLConnection)url.openConnection(); //InputStream in = httpConn.getInputStream(); httpConn.connect(); InputStreamReader inReader = new InputStreamReader(httpConn.getInputStream()); //InputStreamReader in = new InputStreamReader(url.openStream()); Log.d("the encode is ", inReader.getEncoding()); br = new BufferedReader(inReader); } catch (IOException e1) { e1.printStackTrace(); Log.d("tag", "br is null"); } try { while ((s = br.readLine()) != null) { Log.d("SearchLRC","s = "+s); sb.append(s + "/r/n"); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ try { br.close(); } catch (IOException e) { e.printStackTrace(); } } } /* * 根据lrc的地址,读取lrc文件流 * 生成歌词的ArryList * 每句歌词是一个String */ public ArrayList fetchLyric() { int begin = 0, end = 0, number = 0;// number=0表示暂无歌词 String strid = ""; begin = sb.indexOf("<lrcid>"); Log.d("test", "sb = " + sb); if (begin != -1) { end = sb.indexOf("</lrcid>", begin); strid = sb.substring(begin + 7, end); number = Integer.parseInt(strid); } String geciURL = "http://box.zhangmen.baidu.com/bdlrc/" + number / 100 + "/" + number + ".lrc"; SetFindLRC(number); Log.d("test", "geciURL = " + geciURL); ArrayList gcContent =new ArrayList(); String s = new String(); try { url = new URL(geciURL); } catch (MalformedURLException e2) { e2.printStackTrace(); } BufferedReader br = null; try { br = new BufferedReader(new InputStreamReader(url.openStream(), "GB2312")); } catch (IOException e1) { e1.printStackTrace(); } if (br == null) { System.out.print("stream is null"); } else { try { while ((s = br.readLine()) != null) { gcContent.add(s); // Log.d("SearchLRC","s = "+s); } br.close(); } catch (IOException e) { e.printStackTrace(); } } return gcContent; } private void SetFindLRC(int number) { if(number == 0) findNumber = false; else findNumber = true; } public boolean GetFindLRC(){ return findNumber; } }

这个是网上找到的,自己做了一定的修改,开始的时候不能用,两点原因:

1.需要添加<uses-permission android:name="android.permission.INTERNET"></uses-permission>

2.传入汉字,编码问题,返回0

android 音乐播放器----歌词在线下载相关推荐

  1. android 音乐播放器-------歌词同步 lrc

    lrc格式 : [al:这首歌所在的唱片集 ] [ar:歌词作者 ] [by:本LRC文件的创建者 ] [offset:+/- 以毫秒为单位整体时间戳调整,+增加,-减小 ] [re:创建此LRC文件 ...

  2. android 本地lrc 歌词同步,android 音乐播放器-------歌词同步 lrc

    lrc格式 : [al:这首歌所在的唱片集 ] [ar:歌词作者 ] [by:本LRC文件的创建者 ] [offset:+/- 以毫秒为单位整体时间戳调整,+增加,-减小 ] [re:创建此LRC文件 ...

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

    转载请注明出处: http://blog.csdn.net/u014608640/article/details/51899239 如果没有本地歌词怎么办?现在来将一下加载在线歌词.好了,还是用那张图 ...

  4. android音乐播放器开发在线加载歌词,移动开发平台

    import android.util.Log; public class OnlineLrcUtil { private static String TAG = "OnlineLrcUti ...

  5. android音乐播放器开发在线加载歌词,android开发计算器源码

    import android.util.Log; public class OnlineLrcUtil { private static String TAG = "OnlineLrcUti ...

  6. android音乐播放器开发在线加载歌词,android自定义view面试

    } JSONObject jObject = new JSONObject(sb.toString()); int count = jObject.getInt("count"); ...

  7. linux 音频播放器源码,Android音乐播放器源码

    相当完整的Android音乐播放器,直接上效果图及源代码,自己欣赏,具体不再解释了,可以说是一个很给力的Android音乐播放器. 示例代码: /* * Copyright (C) 2009 Tele ...

  8. Android音乐播放器源码(歌词.均衡器.收藏.qq5.0菜单.通知)

    一款Android音乐播放器源码,基本功能都实现了 qq5.0菜单(歌词.均衡器.收藏.qq5.0菜单.通知) 只有向右滑动出现,菜单键和指定按钮都还没有添加. 源码下载:http://code.66 ...

  9. android音乐播放器之歌词下载、处理、开始、同步

    android音乐播放器之歌词下载.处理.开始.同步 ** 程序源代码在底部 ** 先来看看效果 下载 /*** 自定义下载方法,调用系统DownloadManager下载* * @param myU ...

最新文章

  1. Jrebel 热部署插件的使用和破解
  2. mysql权限配置文件_MySQL权限管理、配置文件(三)
  3. linux c语言中如何通过进程名获取进程PID(awk命令行指令)popen、pclose
  4. Web前端开发笔记——第四章 JavaScript程序设计 第五节 数组
  5. SAP Spartacus State
  6. 暂别ACM,转移阵地
  7. angular自带的一些api_在Angular软件中执行API请求的正确方式,了解一下
  8. VAssistX的卸载方法
  9. Ubuntu20.04 安装星火商店安装Windows等应用
  10. 后基因组行为遗传学:从革命到常规(上)
  11. 当下流行架构中的一些技术思考
  12. EA建模-绘制活动图
  13. 计算平均指令时间_上海原油期货将推出TAS指令
  14. 无线测温传感器、无线测温装置在项目上的应用—安科瑞 孙斌
  15. mysql virt虚拟内存_JVM占用VIRT虚拟内存高问题研究
  16. uploadify--上传文件控件
  17. 月考分析五年级英语html,五年级英语月考总结
  18. 机器人路径规划_人工势场法
  19. 计算机毕业设计Java大学生兼职平台(源码+系统+mysql数据库+lw文档
  20. 门店数字化转型| 美发店智慧管理系统

热门文章

  1. X509证书中RSA公钥的提取与载入
  2. TMS320F28335项目开发记录1_CCS的使用介绍
  3. 细说HTTP中POST与GET的区别与联系
  4. Java面向对象的构造方法例子
  5. maven 项目 missing jdk.tools.jar
  6. grumble.js
  7. [转载] 中华典故故事(孙刚)——31 千里送鹅毛_礼轻情义重
  8. 40个视差滚动效果网站的新技术应用
  9. QTP sp等级历年的一些考试辅导题目!(分享)
  10. Composer Player 属性设置