`
Tony_Lee-S
  • 浏览: 81648 次
  • 性别: 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自动下载歌词代码

    在Android开发中,实现自动下载歌词的功能是一项实用的技能,特别是在音乐播放应用中。下面将详细解释如何根据给定的歌名和歌手名从公共网站上下载歌词文件,并解析这些歌词。 首先,我们需要理解基本原理。这个...

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

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

    android音乐播放器源代码

    这个“android音乐播放器源代码”提供了一个基础的实现,它利用了Service来实现在后台持续播放音乐,并且允许用户自动或手动切换歌曲。此外,它还支持对SD卡上的音乐资源进行扫描,方便用户管理和播放存储在外部存储...

    android实现歌词自动滚动效果

    Android 实现歌词自动滚动效果是 Android 开发中的一项重要功能,特别是在音乐播放器应用程序中。通过滚动展示歌词,可以提高用户体验和娱乐性。在本文中,我们将详细介绍 Android 实现歌词自动滚动效果的方法和技术...

    android音乐播放器代码

    本项目"android音乐播放器代码"提供了一个完整的解决方案,包括播放控制、快进、切换歌曲、音乐下载以及歌词显示等功能。下面我们将详细探讨这些关键知识点。 1. **多媒体框架(MediaPlayer)**:Android系统的...

    Android卡拉OK,歌词同步程序.zip

    在Android平台上开发一款卡拉OK应用,歌词同步程序是至关重要的组成部分。这个压缩包"Android卡拉OK,歌词同步程序.zip"可能包含了一套完整的解决方案,用于实现Android设备上的歌词显示和实时同步功能。以下是对这...

    Android代码-APlayer

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

    Android多米音乐播放器源代码

    【Android多米音乐播放器源代码】是一款基于Android平台的音乐播放应用,它不仅具备基本的音乐播放功能,还提供了在线下载和歌词显示等高级特性。深入解析这款源代码,我们可以学习到许多关于Android开发的知识点,...

    Android Studio实现音乐播放器2.0,全面优化升级!

    4.新增了上一首和下一首歌曲切换功能,并且自动播放下一首 5.新增了读取模拟器SD卡的音乐文件,操作简单方便 6.新增了JSON格式文件的解析,显示歌手详细信息 7.新增了歌曲、歌手和我的3个底部导航栏,切换更加流畅 8...

    Android复读机程序源码

    【Android复读机程序源码】是一个基于Android平台的音频播放应用,主要功能是实现音频的重复播放,特别适用于语言学习者进行听力训练。该程序不仅具备基础的播放、暂停、停止等操作,还增加了自动断句和歌词修改功能...

    Android多媒体.zip

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

    音乐与歌词同步代码音乐与歌词同步代码

    歌词通常会显示在一个滚动条中,随着音乐的播放,歌词会按照时间顺序自动滚动。为了提供良好的用户体验,界面应清晰易读,字体大小适中,背景色和文字色对比明显。此外,用户还应能手动拖动歌词,以便回放或预览特定...

    Android源码——天天动听悬浮歌词源码.zip

    这里我们关注的是“Android源码——天天动听悬浮歌词源码.zip”这个压缩包,它包含了实现类似天天动听音乐应用中悬浮歌词效果的源代码。这个效果通常是指在手机屏幕的任何界面上,一个小型窗口会显示当前播放歌曲的...

    Android音乐播放器歌词列表式同步显示功能源码.zip

    在Android平台上开发一款音乐播放器,歌词列表式同步显示功能是一项重要的用户体验提升点。这个功能允许用户在播放音乐的同时,看到歌词随着歌曲进度滚动,增强了听歌的乐趣和沉浸感。以下将详细介绍如何实现这一...

    4款android播放器下载

    这个文件名暗示了一个完整的Android播放器源代码示例。这可能是为了教学目的而创建的,包含从UI设计到多媒体处理的完整流程。通过研究这个代码,你可以学习到如何处理媒体文件的加载、播放控制、UI交互,以及如何...

    AndroidbfjmfQQyybfq_java_farm4rp_androidui_android_

    【AndroidbfjmfQQyybfq_java_farm4rp_androidui_android_】是一个关于构建Android音乐播放器的项目,其核心是仿照QQ音乐的播放界面设计,旨在提供一个轻量级、美观且功能完善的音乐播放体验。这个开源项目主要使用...

    android-lrc

    "android-lrc-view-oyp-master"是一个开源项目,专为Android平台设计,用于实现LRC歌词的显示。LRC是一种文本格式,用于存储歌曲的逐行歌词及其对应的时间戳,便于在播放音乐时同步显示歌词。 该项目的核心是`...

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

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

Global site tag (gtag.js) - Google Analytics