ANDROID_MARS学习笔记_S01原始版_021_MP3PLAYER001_下载mp3文件
一、简介
1.在onListItemClick()中new Intent,Intent以存储序列化后的mp2Info对象作为参数,启动serivce
2.DownloadService在onStartCommand()中通过intent 获取mp3info,开启新线程,利用HttpDownloader下载文件到sdcard
二、代码
1.xml
(1)AndroidManifest.xml
增加
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
2.java
(1)Mp3ListActivity.java
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
//根据用户点击列表当中的位置来得到响应的Mp3Info对象
Mp3Info info = infos.get(position);
//生成Intent对象
Intent intent = new Intent();
//将Mp3Info对象存入到Intent对象当中
intent.putExtra("mp3Info", info);
intent.setClass(this, DownloadService.class);
//启动Service
startService(intent);
super.onListItemClick(l, v, position, id);
}
(2)DownloadService.java
package tony.mp3player.service; import tony.download.HttpDownloader;
import tony.model.Mp3Info;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder; public class DownloadService extends Service{ @Override
public IBinder onBind(Intent intent) {
return null;
} //每次用户点击ListActivity当中的一个条目时,就会调用该方法
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//从Intent对象当中将Mp3Info对象取出
Mp3Info info = (Mp3Info) intent.getSerializableExtra("mp3Info");
//生成一个下载线程,并将Mp3Info对象作为参数传递到线程对象当中
DownloadThread thread = new DownloadThread(info);
//启动新线程
new Thread(thread).start();
return super.onStartCommand(intent, flags, startId);
} class DownloadThread implements Runnable {
private Mp3Info info; public DownloadThread(Mp3Info info) {
super();
this.info = info;
} @Override
public void run() {
//根据MP3文件的名字,生成下载地址
String urlStr = "http://192.168.1.104:8080/mp3/" + info.getMp3Name();
HttpDownloader downloader = new HttpDownloader();
int result = downloader.downFile(urlStr, "mp3", info.getMp3Name());
String msg = null;
switch (result) {
// -1:代表下载文件出错 0:代表下载文件成功 1:代表文件已经存在
case -1:
msg = "下载失败";break;
case 0:
msg = "文件下载成功";break;
case 1:
msg = "文件已经存在,不需要重复下载";break;
}
//使用Notification提示客户下载结果
} }
}
ANDROID_MARS学习笔记_S01原始版_021_MP3PLAYER001_下载mp3文件的更多相关文章
- ANDROID_MARS学习笔记_S01原始版_009_下载文件
一.代码1.xml(1)main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayo ...
- ANDROID_MARS学习笔记_S01原始版_023_MP3PLAYER003_播放mp3
一.简介 1.在onListItemClick中实现点击条目时,跳转到PlayerActivity,mp3info通过Intent传给PlayerActivity 2.PlayerActivity通过 ...
- ANDROID_MARS学习笔记_S01原始版_020_Mp3player001_歌曲列表
一.项目设计 二.歌曲列表简介 1.利用java.net.HttpURLConnection以流的形式下载xml文件为String 2.自定义ContentHandler-->Mp3ListCo ...
- ANDROID_MARS学习笔记_S01原始版_011_XML
一.代码 1.xml(1)main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLay ...
- ANDROID_MARS学习笔记_S01原始版_005_RadioGroup\CheckBox\Toast
一.代码 1.xml(1)radio.xml <?xml version="1.0" encoding="utf-8"?> <LinearLa ...
- ANDROID_MARS学习笔记_S01原始版_004_TableLayout
1.xml <?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android ...
- ANDROID_MARS学习笔记_S01原始版_003_对话框
1.AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest ...
- ANDROID_MARS学习笔记_S01原始版_002_实现计算乘积及menu应用
一.代码 1.xml(1)activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk ...
- ANDROID_MARS学习笔记_S01原始版_001_Intent
一.Intent简介 二.代码 1.activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.co ...
随机推荐
- MYSQL数据库间同步数据
http://blog.csdn.net/swandy45/article/details/6982421 环境要求: Windows 操作系统 需要Mysql 3.23.15以后的版本. 假设数据库 ...
- ASP.NET MVC模型绑定的6个建议(转载)
ASP.NET MVC模型绑定的6个建议 发表于2011-08-03 10:25| 来源博客园| 31 条评论| 作者冠军 validationasp.netmvc.netasp 摘要:ASP.NET ...
- Merge Into For Update Example
Merge Into article aa Using ( SELECT md5_id, Min(article_id) as Min_Article_ID from article )) and s ...
- Codevs 3289 花匠 2013年NOIP全国联赛提高组
3289 花匠 2013年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 花匠栋栋种了一排花,每株花都 ...
- OpenJudge/Poj 2027 No Brainer
1.链接地址: http://bailian.openjudge.cn/practice/2027 http://poj.org/problem?id=2027 2.题目: 总Time Limit: ...
- struts2自定义拦截器与cookie整合实现用户免重复登入
目的:测试开发时,为了减少用户登入这个繁琐的登入验证,就用struts2做了个简单的struts2拦截器,涉及到了与cookie整合,具体的看代码 结构(两部份)=struts2.xml+自定义拦截器 ...
- 2D游戏模型中动态分层的处理 及解决方案 (适用于 webgame 手游等资源控制较严格类型)
文章若非特别注明转载,皆是原创,转载请注明出处. 本文地址:http://www.cnblogs.com/bobolive/p/3537215.html 2D游戏中模型一般都有换装逻辑,特别是联网游戏 ...
- iOS之多线程浅谈
1)并发和并行的区别 在软件开发中不可避免的会遇到多线程的问题,在iOS客户端开发(或者.NET的winform或者wpf这样的cs程序)中就更不可避免的会用到多线程,在bs类型的web项目中要考虑一 ...
- matlab2014在mac Yosemite下出现java空指针情况
恢复方法为 使用xcode打开 /System/Library/CoreServices/SystemVersion.plist 将 ProductVersion 下的10.10或10.10.1改为1 ...
- mysql中的load命令使用方法
使用mysql 中的load 命令,可以将txt 文件中的内容加载到数据库表中 使用mysql 中的load 命令,讲txt 文件中的内容加载到数据库表中,例如,创建table,名称是user,一个字 ...