`
Tony_Lee-S
  • 浏览: 79621 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

一个Android下的自动下载歌词的代码(转)

阅读更多
1. 原理是用Baidu音乐搜索的连接,拼参数进去读取歌词。
同理也可以一样读取到音乐文件。
代码不是很难,但是网上基本上看不到这种代码,有的也是不能运行的。
所以我就做个好事吧。

2. 搜索歌词文件的代码:
package com.hyronjs.jiangbiao;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
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();

	/*
	 * 初期化,根据参数取得lrc的地址
	 */
	public SearchLRC(String musicName, String singerName) {
		// 将空格替换成+号
		musicName = musicName.replace(' ', '+');
		singerName = singerName.replace(' ', '+');
		String strUrl = "http://box.zhangmen.baidu.com/x?op=12&title="
				+ musicName + "$$" + singerName + "$$$$";
		Log.d("test", strUrl);
		try {
			url = new URL(strUrl);
		} catch (Exception e1) {
			e1.printStackTrace();
		}
		BufferedReader br = null;
		String s;
		try {
			InputStreamReader in = new InputStreamReader(url.openStream());
			Log.d("the encode is ", in.getEncoding());
			br = new BufferedReader(in);
		} catch (IOException e1) {
			Log.d("tag", "br is null");
		}
		try {
			while ((s = br.readLine()) != null) {
				sb.append(s + "/r/n");
				br.close();
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			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";
		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) {
//					Sentence sentence = new Sentence(s);
					gcContent.add(s);
					
				}
				br.close();
			} catch (IOException e) {
				e.printStackTrace();
			}

		}
		return gcContent;
	}

}

3. 使用搜索的Active的例子
package com.hyronjs.jiangbiao;

import java.util.ArrayList;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class GetSongWord extends Activity {
	private TextView mTextView1;
	 /** Called when the activity is first created. */  
	private DrawLRC mGameView;   

	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
//      Baidu search = new Baidu("love the way you","michael jackson");
        SearchLRC search = new SearchLRC("love the way you","");
        ArrayList result = search.fetchLyric();
		
        setContentView(R.layout.main);


    }
}

转自:
http://blog.csdn.net/nanjingjiangbiao/article/details/6096376
分享到:
评论
1 楼 mathlove 2012-08-15  
很有用的内容

相关推荐

    Android自动下载歌词代码

    可以从公共网站上自动下载合适歌词文件.原理是根据歌名获取相应的歌词文件,通过Url下载

    Android代码-一个可拖动、好看的歌词View

    当然,歌词不仅仅是显示就完了,作为一个有素质的音乐播放器,我们当然还需要根据歌曲进度自动滚动歌词,并且要支持上下拖动。 项目地址:https://github.com/wangchenyan/lrcview 有问题请提Issues 如果喜欢,欢迎...

    Android代码-APlayer

    首页Tab可配置,最多支持五个,包括歌曲、艺术家、专辑、文件夹、播放列表 专辑、艺术家封面自动补全 支持显示本地和在线歌词(网易),可设置歌词搜索的优先级;本地歌词可以自由选择,或者忽略歌词 支持耳机线控操作,...

    Android多米音乐播放器源代码

    Android多米音乐播放器源代码、可以提供网上下载功能、歌词显示 自动下载

    Android多媒体.zip

    【Android 多媒体框架】 1.1 Android 系统整体架构 1.2 Android 多媒体架构 1.3 OpenCore 介绍 【OpenCore 的代码结构】 2.1 OpenCore 代码结构 ...5.2 自动下载歌词与歌词的解析 【其他】 6.1 提交 BUG

    android实现歌词自动滚动效果

    最近在做Android 的MP3播放的项目,要实现歌词的自动滚动,以及同步显示。 lyric的歌词解析主要用yoyoplayer里面的,显示部分参考了这里 ,这里只是模拟MP3歌词的滚动。 先上一下效果图: 滚动实现的代码其实也简单...

    eoeAndroid特刊第十五期:Android多媒体

    eoeAndroid特刊第十五期:Android多媒体,Android 多媒体框架,OpenCore 的代码结构...自动下载歌词与歌词的解析)等的内容.其中包含了可独立编译的android多媒体例程(可播放本地媒体文件和远程媒体文件).tgz实例源码.

    深入解析Android多媒体开发

    此外,还提供了Android多媒体开发技巧、实例教程,包括音乐播放器功能的实现、自动下载歌词与解析等实用内容。无论是初学者还是有经验的开发者,都能在这份资料中找到宝贵的资源和指导,助力在Android多媒体领域的...

    Android应用源码技术成熟的隆笛音乐播放器.rar

    Android应用源码技术成熟的隆笛音乐播放器是一款...可以扫描本地歌词,可以摇一摇换歌,可以自动下载歌词。 代码层次分明,大部分方法都加了详细的说明。总体上说这是一个很强大的音乐播放器。(项目采用GBK编码)。

    Android复读机程序源码

    复读机程序,支持自动断句,歌词修改,使用eclipse开发

    Android应用源码教学自学用音乐播放器

    这是一款比较基础的音乐播放器源码,项目代码量不大,打开软件后会自动扫描歌曲,速度很快,我的手机上有400多首歌曲可以一次性自动扫描添加进歌曲列表。适合做教学演示或者新手自学播放器部分知识,项目中提供了很...

    技术成熟的隆笛音乐播放器

    本项目是一款音乐播放器源码,应该说这个播放器太...可以扫描本地歌词,可以摇一摇换歌,可以自动下载歌词。代码层次分明,大部分方法都加了详细的说明。总体上说这是一个很强大的音乐播放器。(项目采用GBK编码)。

    Android 开源在线音乐播放器

    歌词显示,自动搜索歌词 夜间模式 定时关闭 更新说明 v 1.0 First Release TODO 在线音乐可以免下载加入我的音乐列表 在线音乐自动缓存 编辑音乐信息 项目公开API 在线音乐:百度音乐 天气数据:高德地图 ...

    Android 自定义可拖拽View界面渲染刷新后不会自动回到起始位置

    主要介绍了Android 自定义可拖拽View界面渲染刷新后不会自动回到起始位置的实现代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下

    关于本地音乐播放器的android app,用来作为期末大作业的 有显示歌词、锁屏界面、换肤功能等

    1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合...

    android音乐播放器

    功能有:歌曲的播放、暂停、上一首、下一首、进度条的拖动和更新、歌词的显示、歌曲播放模式的切换(如单曲、顺序、随机、全部循环)、字体跑马灯效果、SD卡下的歌曲自动扫描、歌曲时间的显示等等

    基于Android平台的百度音乐播放器

    基于Android平台的百度音乐播放器 1.包含源程序。...自动抓取音乐歌词,并多形式展示 UI简洁美观,打造最lite的音乐播放器 项目我测试过是可以直接运行的,如果帮助到了您 麻烦记得给个好评谢谢啦。

    SmartMusic:一个简单的本地音乐播放器

    +实现从歌词迷自动下载歌词功能 ###已知bug: +显示歌词的view没有适配不同分辨率,只在1080p上完美显示。(已修改) +歌曲的名称或歌手如果是乱码,会闪退。 +下载下来的歌词如果不是歌词的标准格式,解析歌词时会...

    gl音乐播放器android版源码实现

    这是一个完整的播放器,除了在线听歌...滑动式欢迎界面,多种皮肤切换,歌词同步,自动扫描MP3等音乐格式,添加到列表,读取专辑图片显示等等,源代码,有详细注解,一看就会明白的适合学习参考,而且界面非常美观!

    百度地图毕业设计源码-MangoMusic:芒果音乐,高仿网易云音乐,百度云音乐api,后期考虑ijkplayer来进行改造

    歌词显示,自动搜索歌词 夜间模式 定时关闭 更新说明 v 1.2.3 新增通知栏播放控制 修复魅族手机扫描不到音乐的问题 修复已知bug v 1.2 修复在线音乐无法加载的问题 修复弱网时播放网络歌曲导致ANR的问题 修复每日...

Global site tag (gtag.js) - Google Analytics