MP3播放器项目---编写代码---5
1.Mp3ListContentHandler
package hui.xml;
import hui.model.Mp3Info;
import java.util.List;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class Mp3ListContentHandler extends DefaultHandler {
private List<Mp3Info> infos = null;
private Mp3Info mp3Info = null;
private String tagName = null;
public Mp3ListContentHandler(List<Mp3Info> infos) {
super();
this.infos = infos;
}
public List<Mp3Info> getInfos() {
return infos;
}
public void setInfos(List<Mp3Info> infos) {
this.infos = infos;
}
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
String temp = new String(ch, start, length);
if (tagName.equals("id")) {
mp3Info.setId(temp);
} else if (tagName.equals("mp3.name")) {
mp3Info.setMp3Name(temp);
} else if (tagName.equals("mp3.size")) {
mp3Info.setMp3Size(temp);
} else if (tagName.equals("lrc.name")) {
mp3Info.setLrcName(temp);
} else if (tagName.equals("lrc.size")) {
mp3Info.setLrcSize(temp);
}
}
@Override
public void endDocument() throws SAXException {
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
if (qName.equals("resource")) {
infos.add(mp3Info);
}
tagName = "";
}
@Override
public void startDocument() throws SAXException {
// TODO Auto-generated method stub
super.startDocument();
}
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
this.tagName = localName;
if (tagName.equals("resource")) {
mp3Info = new Mp3Info();
}
}
}
2.AppConstant
package hui.mp3player;
public interface AppConstant {
public class PlayerMsg{
public static final int PLAY_MSG = 1;
public static final int PAUSE_MSG = 2;
public static final int STOP_MSG = 3;
}
public class URL{
public static final String BASE_URL = "http://192.168.1.2:8080/myapp/";
}
}
3.DownloadService
package hui.mp3player;
import hui.download.HttpDownloader;
import hui.model.Mp3Info;
import hui.mp3player.AppConstant;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
public class DownloadService extends Service{
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
//每次用户点击ListActivity当中的一个条目时,就会调用该方法
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// TODO Auto-generated method stub
//从Intent对象当中将Mp3Info对象取出
Mp3Info mp3Info = (Mp3Info)intent.getSerializableExtra("mp3Info");
//生成一个下载线程,并将Mp3Info对象作为参数传递到线程对象当中
System.out.print("service----------"+mp3Info);
DownloadThread downloadThread = new DownloadThread(mp3Info);
//启动新线程
Thread thread = new Thread(downloadThread);
thread.start();
return super.onStartCommand(intent, flags, startId);
}
class DownloadThread implements Runnable{
private Mp3Info mp3Info = null;
public DownloadThread(Mp3Info mp3Info){
this.mp3Info = mp3Info;
}
@Override
public void run() {
//下载地址http://192.168.1.107:8081/mp3/a1.mp3
//根据MP3文件的名字,生成下载地址
String mp3Url = AppConstant.URL.BASE_URL + mp3Info.getMp3Name();
String lrcUrl = AppConstant.URL.BASE_URL + mp3Info.getLrcName();
//生成下载文件所用的对象
HttpDownloader httpDownloader = new HttpDownloader();
//将文件下载下来,并存储到SDCard当中
int mp3Result = httpDownloader.downFile(mp3Url, "mp3/", mp3Info.getMp3Name());
int lrcResult = httpDownloader.downFile(lrcUrl, "mp3/", mp3Info.getLrcName());
/*String resultMessage = null;
if(result == -1){
resultMessage = "下载失败";
}
else if(result == 0){
resultMessage = "文件已经存在,不需要重复下载";
}
else if(result == 1){
resultMessage = "文件下载成功";
}*/
//使用Notification提示客户下载结果
}
}
}
4.LocalMp3ListActivity
package hui.mp3player;
import hui.model.Mp3Info;
import hui.utils.FileUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import mars.mp3player.R;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ListView;
import android.widget.SimpleAdapter;
public class LocalMp3ListActivity extends ListActivity {
private List<Mp3Info> mp3Infos = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.local_mp3_list);
}
@Override
protected void onResume() {
FileUtils fileUtils = new FileUtils();
mp3Infos = fileUtils.getMp3Files("mp3/");
List<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
for (Iterator iterator = mp3Infos.iterator(); iterator.hasNext();) {
Mp3Info mp3Info = (Mp3Info) iterator.next();
HashMap<String, String> map = new HashMap<String, String>();
map.put("mp3_name", mp3Info.getMp3Name());
map.put("mp3_size", mp3Info.getMp3Size());
list.add(map);
}
SimpleAdapter simpleAdapter = new SimpleAdapter(this, list,
R.layout.mp3info_item, new String[] { "mp3_name", "mp3_size" },
new int[] { R.id.mp3_name, R.id.mp3_size });
setListAdapter(simpleAdapter);
super.onResume();
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
if(mp3Infos != null){
Mp3Info mp3Info = mp3Infos.get(position);
Intent intent = new Intent();
intent.putExtra("mp3Info", mp3Info);
intent.setClass(this, PlayerActivity.class);
startActivity(intent);
}
}
}
5.MainActivity
package hui.mp3player;
import mars.mp3player.R;
import android.app.TabActivity;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.widget.TabHost;
public class MainActivity extends TabActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//得到TabHost对象,正对TabActivity的操作通常都有这个对象完成
TabHost tabHost = getTabHost();
//生成一个Intent对象,该对象指向一个Activity
Intent remoteIntent = new Intent();
remoteIntent.setClass(this, Mp3ListActivity.class);
//生成一个TabSpec对象,这个对象代表了一个页
TabHost.TabSpec remoteSpec = tabHost.newTabSpec("Remote");
Resources res = getResources();
//设置该页的indicator
remoteSpec.setIndicator("Remote", res.getDrawable(android.R.drawable.stat_sys_download));
//设置该页的内容
remoteSpec.setContent(remoteIntent);
//将设置好的TabSpec对象添加到TabHost当中
tabHost.addTab(remoteSpec);
Intent localIntent = new Intent();
localIntent.setClass(this, LocalMp3ListActivity.class);
TabHost.TabSpec localSpec = tabHost.newTabSpec("Local");
localSpec.setIndicator("Local", res.getDrawable(android.R.drawable.stat_sys_upload));
localSpec.setContent(localIntent);
tabHost.addTab(localSpec);
}
}
分享到:
相关推荐
QT编写的mp3播放器源码——mp3player是一个基于QT5框架的音频播放软件项目。QT是一个跨平台的应用程序开发框架,广泛用于创建桌面、移动和嵌入式平台的图形用户界面。在这个项目中,开发者利用QT5的库和API来设计并...
在这个MP3播放器项目中,它可能包括音量设置、播放模式(单曲循环、列表循环等)以及其他个性化选项。开发者可以通过解析XML来获取和保存这些设置,以实现用户友好的体验。 `com`目录则包含了项目的源代码包,这些...
在这个播放器项目中,开发者可能使用了`QMediaPlayer`类来管理媒体播放,`QMediaPlaylist`来处理媒体播放列表,以及`QVideoWidget`或`QGraphicsVideoItem`来显示视频。 2. **QT Widgets模块**:用于创建和管理GUI...
在本项目中,"C#Mp3播放器源码"是一个使用C#编程语言开发的MP3播放器的完整源代码。C#是一种面向对象的、类型安全的、现代的编程语言,常用于构建Windows桌面应用程序,Web应用程序以及游戏等。这个源码库将为学习C#...
【标题】"mp3播放器源代码"是一个与多媒体技术和软件开发相关的项目,它涉及到音频文件的处理,尤其是MP3格式的音频。MP3是一种广泛使用的数字音频编码格式,通过有损压缩技术减小文件大小,同时保持相对高质量的...
在本项目中,它被用于构建一个SD卡MP3播放器,具备所有必要的控制功能。 MP3播放器的设计通常涉及以下几个关键部分: 1. **STM32F130ZET6微控制器**:作为核心处理器,STM32F130ZET6负责处理所有的输入输出控制,...
在本项目中,C#被用来编写播放器的后端逻辑和用户界面。 2. **用户界面设计**:仿KUGO的设计意味着该播放器界面美观,操作直观,旨在为用户提供与KUGO类似的用户体验。这包括但不限于播放/暂停、上一曲/下一曲、...
【描述】提到的“自己制作的c语言版mp3播放器”表明该程序是由个人开发者用C语言编写的,它可能包含了读取、解码MP3文件以及播放音频的核心功能。开发者希望得到社区的反馈和建议,以进一步完善播放器的功能和用户...
**Arduino复古风格MP3播放器项目开发** 这个项目的核心是使用Arduino微控制器构建一个具有复古外观的MP3播放器。Arduino是一种开源电子平台,适用于初学者和专业人士进行电子原型设计。通过结合硬件和软件,我们...
Java编写的简单MP3播放器代码是一个典型的Java应用程序,它实现了音频播放功能,特别是针对MP3格式的音乐文件。在本文中,我们将深入探讨这个项目的各个方面,包括Java编程语言的基础,MP3音频处理,以及XML数据处理...
这个基于Java的MP3播放器项目对于初学者来说是一个很好的学习实践,它涵盖了文件I/O、音频处理、GUI设计等多个方面,有助于提升编程技能和理解Java的核心概念。通过实际编写代码,你可以更深入地了解Java编程,并...
【Java实现MP3播放器】 在Java编程领域,开发一个MP3播放器涉及到多个关键知识点。首先,我们要了解Java Media Framework (JMF),这是一个用于处理音频、视频和流媒体的应用程序开发接口。JMF允许开发者播放、捕获...
【标题】基于Java的mp3播放器源...总的来说,这个基于Java的MP3播放器项目涵盖了多媒体编程、事件驱动编程、软件设计原则等多个IT知识点,对于学习Java编程和多媒体应用开发的初学者来说,是一个非常有价值的实践案例。
在本项目中,我们将探讨如何利用SDK来构建一个基础的MP3播放器,实现如调整音量、播放和暂停等基本功能。 首先,SDK(Software Development Kit)是一组工具、库、文档和示例代码,用于帮助开发者创建特定平台或...
在本项目中,“MP3播放器代码”是一个使用QT语言编写的软件,专用于播放MP3音频格式的文件。这通常涉及到多媒体处理、音频解码和用户界面设计等多个方面的知识。 首先,我们需要了解QT中的Q Multimedia模块,它是...
在本项目中,我们将探讨如何使用VB来编写一个基本的MP3播放器,具备播放MP3文件和调节音量的功能。 一、环境搭建与基础概念 首先,你需要安装Visual Studio IDE,它包含了VB的开发环境。打开IDE,创建一个新的...
【国嵌项目 MP3播放器 SDK】是一款专为嵌入式系统设计的软件开发工具包,主要用于在嵌入式设备上实现MP3音频文件的播放功能。这一SDK提供了必要的库函数、驱动程序以及示例代码,帮助开发者快速构建具备MP3播放能力...
【jQuery仿qq音乐mp3播放器代码】是一个利用jQuery库创建的音乐播放器,它具有类似于QQ音乐的界面和功能,旨在提供一个个性化的音乐体验。这个项目的主要目标是实现用户可以通过点击人物头像来切换不同的歌曲,并且...
**Arduino MP3播放器Catalex项目开发** Arduino MP3播放器Catalex是一款基于Arduino平台的简单且直观的串行MP3播放器。这款设备以其低廉的价格和易于使用的特点,为Arduino爱好者提供了在自制项目中集成音乐播放...
【标题】"Mp3播放器的代码下载"所涉及的知识点主要集中在开发一个能够播放MP3音频文件的应用程序上。这通常需要理解音频编码、解码原理,以及使用编程语言来实现这一功能。 首先,MP3是一种有损音频压缩格式,它...