close

Android Sound 範例-02

1 問題

建立一個 Android 應用程式專案,並播放存放在手機中 SD 外接卡上的聲音檔。

2 Android 專案應用程式建立過程

01-new-sound02-proj.jpg

圖1. 建立一個名為 Sound02 的 Android  應用程式專案。

 

02-configure-proj.jpg

圖2.  對該專案進行簡單的配置,選用預設值即可。

 

03-configure-icon-set.jpg

圖3.  設定該專案所會用到的圖示圖片來源,選擇預設值即可。

 

04-create-activity.jpg

圖4. 選擇要建立一個空白的 activity 視窗,選擇預設值即可。

 

05-create-SoundTest-activity.jpg

圖5. 設定新視窗的名稱為 SoundTest,主程式的名稱也會自動設為 SoundTest.java,而視窗元件配置檔檔名將設為 activity_sound_test.xml。

 

06-hello_world-default.jpg

圖6. strings.xml 檔案中,hello_world 變數,預設值為 Hello world!

 

07-hello_world-changed.jpg

圖7. strings.xml 檔案中,hello_world 變數的值,更改為 Android Sound 範例-02.

 

08-a2.3.3-avd-sd-512ram.jpg

圖8. 設定 Android 虛擬手機的 SD 卡的記憶體大小。

請在 Eclipse 系統中,點選  Window/Android Virtual Device Manager (不同的作業系統與Eclipse 版本,其選單名稱可能會有些差異),以開啟AVD 管理系統,並點選某一已建立的虛擬Android手機,接著點按 Edit 以進入編輯該虛擬手機的畫面。

進入虛擬手機的畫面後,在 SD Card 的區塊,Size 的欄位預設沒有設定任何值,代表該虛擬手機並沒有外接一個 SD Card,此時可以輸入一個值,例如,512,代表 512 MB,如此該虛擬手機就可以新增一個外接 SD Card了。

 

09-open-ddms.jpg

圖9. 在 Eclipse 的畫面上方,以新增開啟可以管理虛擬手機內部所有檔案的 DDMS 管理系統。

 

10-ddms-a2.3.3-sdcard-dir.jpg

圖10. 進入DDMS以點選虛擬手機的 sdcard目錄。

進入 DDMS 虛擬機器管理系統後,點選 File Exlpo 頁面,就可以進入虛擬手機的檔案總管。接著點按 sdcard 目錄,此時畫面上紅色數字標示為 5 的按鈕代表可以從虛擬手機中下載檔案至Eclipse,而紅色數定標示為 6 的按鈕代表可以從Eclipse 中上傳檔案至虛擬手機。

此時,本應用程式想要上傳聲音檔至虛擬手機,所以要點按紅色數字標示為 6 的按鈕。

 

11-select-mp3-file.jpg

圖11. 選擇本地電腦中想要上傳的聲音檔。

 

12-ddms-a2.3.3-sdcard-uploaded.jpg

圖12. 上傳至虛擬手機後的結果。

進入 DDMS 的管理畫面,若想直接點按 sdcard 目錄是無法查看到剛剛所上傳的聲音檔,這是因為 sdcard 是一個連接檔 (link file),是連接到 /mnt/scdard/的子目錄中,所以在該子目錄中才可以看到剛剛所上傳的 sound2.mp3 聲音檔。因此,以後要上傳下載 sdcard 目錄時,請直接對 /mnt/sdcard/ 該子目錄進行操作。

 

13-javacode.jpg

圖13. SoundTest.java 程式的內容。

請先多加兩行 import 開頭的指令:

import java.io.IOException;
import android.media.MediaPlayer;

接著在 onCreate(...)的函數中,多增加如下的指令:

MediaPlayer mp = new MediaPlayer();
try {
    mp.setDataSource("/sdcard/sound2.mp3");
    mp.prepare();
} catch (IllegalArgumentException e) {
} catch (IllegalStateException e) {
} catch (IOException e) {
}
mp.start();

其中,利用 MedaiPlayer()指令來建立一個名為 mp 的 MediaPlayer 物件。並利用 mp.setDataSource("/sdcard/sound2.mp3"); 指令以指定要處理的聲音檔是位在 /sdcard/ 目錄下的 sound2.mp3檔案。接著利用 mp.prepare()指令來憣放所指定要處理的聲音檔。

由於播放存放在不同地方的聲音檔,可能面臨找不到該檔案的錯誤狀況,所以必須要以 try {...} catch (...){...} 的模式來撰寫程式。其中 try {...} 中是主要的程式指令。而每一個 catch (...){...} 區段則是用來處理發生特定錯誤狀況時應該處理的方式,其中 catch (...) 是用來指明是那一個錯誤狀況,而其後的 {...}區段則是要處理的方式,因為本程式對於發生錯誤時並不進行任何的處理,只是要讓系統能夠順利執行不會當機即可,所以在{...}區段中就不撰寫任何的指令。

 

14-avd-run-screen.jpg

圖14. 執行程式後虛擬手機的畫面,只會顯示應用程式的標題,並直接播放所指定存放在 SD card 上的聲音檔一次。

 

 

arrow
arrow

    xx3d2ybnf 發表在 痞客邦 留言(0) 人氣()