14天學會安卓開發(第十四天)Android專案案例: mp3播放器

查志強發表於2014-06-25

【原文:http://blog.csdn.net/corder_raine/article/details/8317486

14天學會安卓開發  
作者:神祕的N (英文名  corder_raine)
聯絡方式:369428455(反饋)
交流群:284552167(示例,原文件下載)
版權為作者所有,如有轉載請註明出處
目錄      



14.Android專案案例: mp3播放器... 132
14.1需求列表... 132
14.1.1 需求解析:1.建立Web應用... 133
14.1.2 需求解析:2.編寫XML檔案... 133
14.1.3 需求解析:3.網路下載XML. 133
14.1.4 需求解析:4.解析XML檔案示... 133
14.1.5 需求解析:5.下載mp3. 134
14.1.6 需求解析:6.多執行緒下載mp3. 134
14.1.7 需求解析:7.顯示mp3下載進度... 134
14.1.8 需求解析:8.線上播放mp3. 134
14.1.9 需求解析:9.後臺播放mp3. 135
14.1.10 需求解析:10.植入廣告... 135
14.1.11 需求解析:11.關於對話方塊... 135
14.1.12 需求解析:12.用主題控制字型與顏色    135





14.Android專案案例: mp3播放器
14.1需求列表
     1.建立Web應用,管理mp3檔案。
     2.編寫XML檔案,其中包含mp3檔名。
     3.Android程式需要通過網路下載XML格式列表檔案。
     4.解析XML檔案,在手機中顯示資源列表。
     5.點選mp3名字需要下載相應mp3檔案。
     6.需要支援多執行緒下載。
     7.需要顯示軟體下載的進度。
     8.能夠本地與遠端播放mp3音樂檔案。
     9.在後臺服務中播放mp3檔案。
     10.在播放器中需要植入廣告動畫。
     11.需要有關於軟體的介紹和簡單使用方法。
     12.用樣式或主題控制字型與顏色。
14.1.1 需求解析:
1.建立Web應用
Ø  建立專案Mp3Site
Ø  在WebRoot或WebContent目錄下面建立music子目錄
Ø  在music目錄中新增mp3檔案與musics.xml

參考專案: MediaSite

14.1.2 需求解析:
2.編寫XML檔案
       song.mp3
       ILoveYou.mp3
參考專案: MediaSite

14.1.3 需求解析:
3.網路下載XML
01
02
03
04
05
06
07
08
09
10
11
12
URL url = newURL(“[url]http://192.168.50.50:8080/Mp3Site/music/musics.xml[/url]");
conn = url.openConnection();
is_sdcard = conn.getInputStream();
File destFile = newFile("/sdcard/musics.xml");
destFile.createNewFile();
String path = destFile.getAbsolutePath();
FileOutputStream fos_sdcard = newFileOutputStream(destFile);
intbytesRead; bytebuff[] = newbyte[1024];
while((bytesRead = is_sdcard.read(buff))> 0) {
       fos_sdcard.write(buff,0, bytesRead);
}
fos_sdcard.close(); is_sdcard.close();
參考:/SuperMediaPlayer/src/com/lxt008/common/DownloadFileActivity.java

14.1.4 需求解析:
4.解析XML檔案示
List list = newArrayList();
01
02
03
04
05
06
07
08
09
10
11
/* 將XML轉換成Document物件 */
DocumentBuilderFactory dbf =    DocumentBuilderFactory.newInstance();
DocumentBuilder db =dbf.newDocumentBuilder();
Document doc = db.parse(is);
NodeList nodeList =doc.getElementsByTagName(elementsTagName);
intlen = nodeList.getLength();
for(inti = 0; i < len; i++) {
       Stringcontent = nodeList.item(i).getChildNodes().item(0)
       .getNodeValue();
       list.add(content);
}
參考:/SuperMediaPlayer/src/com/lxt008/common/XmlUtil.java

14.1.5 需求解析:
5.下載mp3
Ø  與下載XML檔案類似。把mp3檔案放到/sdcard中。
Ø  把mp3檔名新增到ListView中。Mp3檔案多的話需要放到ScrollView中
Ø  參考:/SuperMediaPlayer/src/com/lxt008/music/MusicActivity.java( onListItemClick方法)與ScrollViewDemo

14.1.6 需求解析:
6.多執行緒下載mp3
Ø  參考:/SuperMediaPlayer/src/com/lxt008/music/MusicActivity.java( onListItemClick方法)
Ø  在點選列表項的時候開一個執行緒去下載。
u  onListItemClick 方法中new Thread(Runnable).start()

14.1.7 需求解析:
7.顯示mp3下載進度
Ø  在下載播放mp3的執行緒中通過Handler發下載狀態的訊息
Ø  handleMessage()依據訊息更新進度條。
參考:/SuperMediaPlayer/src/com/lxt008/music/MusicActivity.java


14.1.8 需求解析:
8.線上播放mp3
Ø  線上播放與下載後本地播放需要使用TabHost組織介面
1
2
3
mTabHost.addTab(mTabHost.newTabSpec("tab_test1")
         .setIndicator("TAB1",getResources().getDrawable(R.drawable.img1))
          .setContent(newIntent(this,OtherActivity.class)));
Ø  參考專案: OnlineMp3與TabHostDemo

14.1.9 需求解析:
9.後臺播放mp3
Ø  需要在關閉播放器後音樂還能播放,所以要用Service來播放
Ø  參考:/SuperMediaPlayer/src/com/lxt008/music/MusicService.java

14.1.10 需求解析:
10.植入廣告
Ø  可以做成動畫切換圖片顯示
Ø  參考專案: AnimationDrawableDemo

14.1.11 需求解析:
11.關於對話方塊
Ø  加入“關於”、“幫助”等選單。
Ø  點“關於”選單中顯示版權資訊與軟體簡單介紹的對話方塊。
Ø  點“幫助”選單中顯示mp3播放器的簡單用法的對話方塊。
參考專案:MenuDemoDialogDemo


14.1.12 需求解析:
12.用主題控制字型與顏色
Ø  ThemeDemoes alues下面放置themes.xml
Ø  在themes.xml中定義應用全域性的樣式
參考專案:ThemeDemo


原始碼下載

相關文章