android学习笔记7天打造一个简易网络Mp3播放器

简介:

第一天:完成xml的下载与显示

要点及提示

请认真观看Mars [Android开发视频教学]01_29_代码编写(一)(上)

1,配置网络环境以方便下载文件

#1注意,网络连接中不要有断开的连接,不然,模拟器无法上网

#2用路由器的注意,写IP地址的时候不要用localhost,要用本机的ip

2,使用Listactivity

#3注意,记得要在layout里面注册!!

 

3,下载与显示xml要点

#4下载的时候,记得添加权限!!不会下载的话请看:MARS视频[Android开发视频教学]01_18_文件下载.mp4 详情

#5xml的解析不懂的请看MARS视频[Android开发视频教学]01_20_XML文件解析

#6视频的最后endElement 中 qName 请改为localName

解析用的xml下载

http://u.115.com/file/dn6l2z0g# 
mp3.xml

说明:跟视频那个是不一样的,请按照原理改相应的代码… 
 

第二天:对前一天的知识进行复习与回顾,完成TextView的数据显示

请认真观看Mars [Android开发视频教学]01_29_代码编写(一)(下)

1,初步认识android的UI设计

#1,对于UI设计不要死敲代码,插件有图形操作功能,属性的编写直接右键你所选择的layout会有选项,请务必熟悉!!

 #2,

2,Java基础

#3,尝试学习并总结,List,Map的使用,以及其迭代方式,添加数据等

3,SimpleAdapter的使用

#4,不会的请看视频[Android开发视频教学].01_13_常用控件(三).mp4 详情

#5,关于这个SimpleAdapter的使用,记住两点

(1),在创建这个SimpleAdapter我们要传那些参数进去

(2),我们在创建完这个SimpleAdapter请务必记得要生效的话setListAdapter();

4,学习归纳Mars视频中关于重构的思想

第三天:颇考验人耐性与基础的一天:完成mp3文件的下载

请认真观看Mars [Android开发视频教学]01_29_代码编写(二)

一:下载前的准备

1,明白FileUtils起到了什么作用

2,尝试理解这两种流的区别,并在理解后回复本博客

 
    
  1. InputStreamReader  
  2. InputStream 

 3,下载用的关键代码助记!!

InputStreamReader 的读取方式

 
    
  1. //创建一个URL对象  
  2. URL url = new URL(urlString);   
  3. //创建一个HttpURLConnection  
  4. HttpURLConnetion urlConn = (HttpURLConnection)url.openConnecton();   
  5. //读取数据  
  6. BufferReader buffer = new BufferReader(  
  7. new InputStreamReader(urlConn.getInputStream()));  
  8. StringBuffer sb = null;  
  9. String line = null;  
  10. while((line = buffer.readline()) != null){      
  11. sb.append(line);  


InputStream 的读取方式

 
    
  1. //创建一个URL对象  
  2. URL url = new URL(urlString);   
  3. //创建一个HttpURLConnection  
  4. HttpURLConnection urlConn =(HttpURLConnection)url.openConnection();   
  5. //获取一个InputStream  
  6. InputStream inputStream = urlConn.getInputStream();   
  7. //你看到省略了很多代码   
  8. //创建一个文件输出流  
  9. OutputStream output = new FileOutputStrem(file);   
  10. //建立缓冲byte[]   
  11. buffer = new byte[4*1024];   
  12. //将输入流写到文件当中  
  13. while((inputStream.read(buffer)) != -1){     
  14. output.write(buffer);  
  15. }output.flush(); 

这些都是关键代码块片段请对照源代码好好复习,理解

4,Service的用法,不懂的先看[Android开发视频教学]01_25_Service初步(一).mp4 详情

1,认真看视频着重看一下几点

#1,AndroidMainifest的注册

#2,activity与service间的通信

5,权限的注册

1,sdcard的注册,怎么注册?用那些代码?视频都有请认真观看…

6,Intent的使用

关键代码助记,具体如何使用自己看视频

 
    
  1. //新建一个inentIntent   
  2. intent = new Intent();   
  3. //将数据压到intent栈里面  
  4. //传一个对象的时候请注意,该类已经实现序列好接口  
  5. intent.putExtra("mp3Info", mp3Info);    
  6. //将数据传到一个  
  7. serviceintent.setClass(this,DownloadService.class);   
  8. //启动这个  
  9. intentstartService(intent);   
  10. //-----------------------------------  
  11. //你看到了一个service   
  12. //在目标service获取值Mp3Info   
  13. mp3Info = (Mp3Info)intent.getSerializableExtra("mp3Info"); 

以上就是第三天需要了解以及明白的事情,不会的多看看视频…多问问人
 

第四天:知识的总结与归纳…待续…

 
 

第五天:新的知识,新的挑战:完成Tabactivity的显示和增强FileUtilS的功能

请认真观看Mars [Android开发视频教学]01_29_代码编写(三)

1,学习并理解Tabactivity的用法

关键代码简要说明,请结合完整代码理解

 
    
  1. //获取一个Resource对象  
  2. Resource res = getResource;   
  3. //获取一个activity,TabHost  
  4. TabHost tabHost = getTabHost();   
  5. //创建一个标签  
  6. TabHost.spec spec;   
  7. //创建一个intent用来在tab中运行一个  
  8. activityIntent intent;   
  9. //建立一个tab  
  10. spec = tabHost.newTabSpec("test");  
  11. //为这个tab添加名字,和图标  
  12. spec.setIndicator("test",res.getDrawnable(android.R.drawnable.stat_sys_down));   
  13. //在tab中运行activity  
  14. Intent intent = new Intent().setClass(this,"需要运行的的activity");  
  15. spec.setConent(intent);   
  16. //把tab添加到tabhost中  
  17. tabHost.addTabspec);   
  18. //再添加一个tab,请重复14行 - 23行代码,注意intent那里要改下... 

2,学习并掌握读取sdcard目录文件的技巧

#1,提示用好File 类与熟练操作list

3,格式化显示数据

 

#2,尝试自己把原始显示改成这样,实在不行请参考具体代码在我(tom_achai)的svn文件夹下,FileUtils类中parseSize()方法中,有需要的可以去看

第六天:细节的设计,逻辑的陷阱.完成mp3播放功能

请认真观看Mars [Android开发视频教学]01_29_代码编写(四)

1,初步认识UI设计的

#1:UI的设计一个字拖!!!!!!!!!!!!!图片在群共享自己下载

 2,熟悉绑定按钮监听器

#2,自己思考绑定监听器用匿名类好,还是用内部类好

3,尝试比较service和activity在使用intent上的细小区别

 
    
  1. //视频中的重要代码讲解   
  2. //进行activity与service之间的跳转  
  3. //一个activity 叫做 Mp3listActivity  
  4. //一个service 叫做 Mp3downloadService   
  5. //代码片段  
  6. Intent intent = new Intent();   
  7. intent.putExtra("mp3info",mp3info);  
  8. intent.setClass(this,Mp3downloadService.class);  
  9. startService(intent);   
  10. //--------------------------  
  11. //你看到了跳转到一个service  
  12. //--------------------------   
  13. //在service中  
  14. //startCommand(Inent intent,int flags, int startId)  
  15. //取值代码  
  16. Mp3Info mp3info = (Mp3Info)intent.getSerializableExtra("mp3info");   
  17. //-----------------------------------------------------------------    
  18. //进行activity与activity之间的跳转  
  19. //一个activity 叫做 Mp3listActivity  
  20. //一个activity 叫做 Mp3PlayActivity   
  21. //关键代码片段  
  22. Intent intent = new Intent();  
  23. intent.putExtra("mp3info", mp3info);  
  24. intent.setClass(this,Mp3PlayActivity.class);  
  25. startActivity(intent);   
  26. //-----------------------------  
  27. //你看到了跳转到Mp3PlayActivity  
  28. //-----------------------------  
  29. //onCreate()方法中的取值代码  
  30. intent = getIntent();  
  31. Mp3Info mp3info = (Mp3Info)intent.getSerializableExtra("mp3info");   
  32. //------------------------------------------------  
  33. //自己尝试了解,并不看书打出以上代码(本人可以,你也可以),并且,能自己得出Service和activity  
  34. //intent传值的细小区别 

4,初步认识MediaPalyer用来播放mp3

5,留给大家的问题,为什么在UI预览中用*.png做的imageButton可以预览,而用*.ico不能预览,这个
 

第七天:吹起最后的集结号:把播放功能集成到Service和搞清楚lrc播放的方式

请认真观看Mars [Android开发视频教学]01_29_代码编写(五)

1,思考: 为什么要用service播放,用service有什么好处

2,分享我的移植方案

#1,将播放相关的全部代码都放到service中

#2,将原本在activity只做启动service的任务

 
    
  1. //----------------------------------------------------  
  2. //注意!!!!!!这些只是关键代码块,用来帮助思考,记忆和排错使用  
  3. //如果,一下代码有打错的..请提醒我一下,回复本博客...  
  4. //---------------------------------------------------   
  5. //关键代码块  
  6. //例如在播放监听器中的实现  
  7. //mp3info为mp3的信息  
  8. //playmsg是传到service用来判断当前处于何种状态  
  9. //播放为1,暂停为0,停止为-1  
  10. //onClick()方法  
  11. Intent intent = new Intent();  
  12. intent.putExtra("mp3info",mp3info);  
  13. intent.putExtra("playmsg",1);  
  14. intent.setClass(Mp3PlayActivity.this,Mp3PlayService.class);  
  15. startService(intent);    
  16. //--------------------  
  17. //你看到了一个service  
  18. //--------------------  
  19. //playmsg的用法不完全举例  
  20. //onStartCommand()方法中  
  21. //stop(),pause(),play(),都为自己要去实现播放功能方法  
  22. //mp3info为歌曲信息   
  23. //接受playmsg,注意与接受一个对象时的区别int playmsg = intent.getIntExtra("playmsg",0);   
  24. //判断playmsg,进行相应的操作  
  25. switch(playmsg){case -1:stop();    
  26. break; case 0:pause();break;   
  27. case 1:if(mp3info != null){     
  28.  play(mp3info)} break;   

 3,lrc需要要到的知识

 
    
  1. #1,java基础中队列的操作   
  2. #2,切记,你的文件夹下有lrc文件   
  3. #3,回头在下载mp3的那里,加上下载lrc文件的代码   
  4. #4,还有一点正则的基础   
  5. //在读取本地目录的时候用到  
  6. //替换后缀的技巧  
  7. //关键在于String中,replace的使用  
  8. String mp3Name = "HelloWorld.mp3";  
  9. String mp3lrc = mp3Name.replace(".mp3",".lrc");   

第八天:革命还没成功,同志仍需努力.解决歌词在后台播放中的更新问题

请认真观看Mars [Android开发视频教学]01_29_代码编写(六)

要点略讲

1,把歌词更新模块放到service中

2,用Broadcast来在activity中更新歌词 


 

第九天:结束只不过是,新的开始.简单说说存在的问题,以及要优化的地方


本文转自 liam2199 博客,原文链接: http://blog.51cto.com/youxilua/772998  如需转载请自行联系原作者
相关文章
|
30天前
|
数据库 Android开发 开发者
构建高效Android应用:采用Kotlin协程优化网络请求处理
【2月更文挑战第30天】 在移动应用开发领域,网络请求的处理是影响用户体验的关键环节。针对Android平台,利用Kotlin协程能够极大提升异步任务处理的效率和简洁性。本文将探讨如何通过Kotlin协程优化Android应用中的网络请求处理流程,包括协程的基本概念、网络请求的异步执行以及错误处理等方面,旨在帮助开发者构建更加流畅和响应迅速的Android应用。
|
3月前
|
安全 API Android开发
Android网络和数据交互: 解释Retrofit库的作用。
Android网络和数据交互: 解释Retrofit库的作用。
38 0
|
3月前
|
安全 网络协议 API
Android网络和数据交互: 什么是HTTP和HTTPS?在Android中如何进行网络请求?
Android网络和数据交互: 什么是HTTP和HTTPS?在Android中如何进行网络请求?
29 0
|
3月前
|
Android开发 开发者
Android网络和数据交互: 请解释Android中的AsyncTask的作用。
Android网络和数据交互: 请解释Android中的AsyncTask的作用。
21 0
|
3月前
|
网络协议 Linux C++
Linux C/C++ 开发(学习笔记十二 ):TCP服务器(并发网络编程io多路复用epoll)
Linux C/C++ 开发(学习笔记十二 ):TCP服务器(并发网络编程io多路复用epoll)
56 0
|
3月前
|
网络协议 Linux C++
Linux C/C++ 开发(学习笔记十一 ):TCP服务器(并发网络网络编程 一请求一线程)
Linux C/C++ 开发(学习笔记十一 ):TCP服务器(并发网络网络编程 一请求一线程)
39 0
|
4天前
|
Android开发 开发者
Android网络和数据交互: 请解释Android中的AsyncTask的作用。
Android's AsyncTask simplifies asynchronous tasks for brief background work, bridging UI and worker threads. It involves execute() for starting tasks, doInBackground() for background execution, publishProgress() for progress updates, and onPostExecute() for returning results to the main thread.
5 0
|
4天前
|
网络协议 安全 API
Android网络和数据交互: 什么是HTTP和HTTPS?在Android中如何进行网络请求?
HTTP和HTTPS是网络数据传输协议,HTTP基于TCP/IP,简单快速,HTTPS则是加密的HTTP,确保数据安全。在Android中,过去常用HttpURLConnection和HttpClient,但HttpClient自Android 6.0起被移除。现在推荐使用支持TLS、流式上传下载、超时配置等特性的HttpsURLConnection进行网络请求。
5 0
|
2月前
|
域名解析 存储 网络协议
某教程学习笔记(一):03、网络基础
某教程学习笔记(一):03、网络基础
15 0
|
3月前
|
JSON Java Android开发
Android网络和数据交互: 请解释Android中的JSON解析库,如Gson。
Android网络和数据交互: 请解释Android中的JSON解析库,如Gson。
24 0