android學習筆記7天打造一個簡易網絡Mp3播放器

第一天:完成xml的下載與顯示

要點及提示

請認真觀看Mars [Android開發視頻教學]01_29_代碼編寫(一)(上)java

1,配置網絡環境以方便下載文件

#1注意,網絡鏈接中不要有斷開的鏈接,否則,模擬器沒法上網android

#2用路由器的注意,寫IP地址的時候不要用localhost,要用本機的ipsql

2,使用Listactivity

#3注意,記得要在layout裏面註冊!!網絡

 

3,下載與顯示xml要點

#4下載的時候,記得添加權限!!不會下載的話請看:MARS視頻[Android開發視頻教學]01_18_文件下載.mp4 詳情app

#5xml的解析不懂的請看MARS視頻[Android開發視頻教學]01_20_XML文件解析ide

#6視頻的最後endElement 中 qName 請改成localNamesvn

解析用的xml下載學習

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

說明:跟視頻那個是不同的,請按照原理改相應的代碼… 

 

次日:對前一天的知識進行復習與回顧,完成TextView的數據顯示

請認真觀看Mars [Android開發視頻教學]01_29_代碼編寫(一)(下)this

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作的p_w_picpathButton能夠預覽,而用*.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中更新歌詞 

 
第九天:結束只不過是,新的開始.簡單說說存在的問題,以及要優化的地方
相關文章
相關標籤/搜索