Android Sound 範例-02
1 問題
建立一個 Android 應用程式專案,並播放存放在手機中 SD 外接卡上的聲音檔。
2 Android 專案應用程式建立過程
圖1. 建立一個名為 Sound02 的 Android 應用程式專案。
圖2. 對該專案進行簡單的配置,選用預設值即可。
圖3. 設定該專案所會用到的圖示圖片來源,選擇預設值即可。
圖4. 選擇要建立一個空白的 activity 視窗,選擇預設值即可。
圖5. 設定新視窗的名稱為 SoundTest,主程式的名稱也會自動設為 SoundTest.java,而視窗元件配置檔檔名將設為 activity_sound_test.xml。
圖6. strings.xml 檔案中,hello_world 變數,預設值為 Hello world!
圖7. strings.xml 檔案中,hello_world 變數的值,更改為 Android Sound 範例-02.
圖8. 設定 Android 虛擬手機的 SD 卡的記憶體大小。
請在 Eclipse 系統中,點選 Window/Android Virtual Device Manager (不同的作業系統與Eclipse 版本,其選單名稱可能會有些差異),以開啟AVD 管理系統,並點選某一已建立的虛擬Android手機,接著點按 Edit 以進入編輯該虛擬手機的畫面。
進入虛擬手機的畫面後,在 SD Card 的區塊,Size 的欄位預設沒有設定任何值,代表該虛擬手機並沒有外接一個 SD Card,此時可以輸入一個值,例如,512,代表 512 MB,如此該虛擬手機就可以新增一個外接 SD Card了。
圖9. 在 Eclipse 的畫面上方,以新增開啟可以管理虛擬手機內部所有檔案的 DDMS 管理系統。
圖10. 進入DDMS以點選虛擬手機的 sdcard目錄。
進入 DDMS 虛擬機器管理系統後,點選 File Exlpo 頁面,就可以進入虛擬手機的檔案總管。接著點按 sdcard 目錄,此時畫面上紅色數字標示為 5 的按鈕代表可以從虛擬手機中下載檔案至Eclipse,而紅色數定標示為 6 的按鈕代表可以從Eclipse 中上傳檔案至虛擬手機。
此時,本應用程式想要上傳聲音檔至虛擬手機,所以要點按紅色數字標示為 6 的按鈕。
圖11. 選擇本地電腦中想要上傳的聲音檔。
圖12. 上傳至虛擬手機後的結果。
進入 DDMS 的管理畫面,若想直接點按 sdcard 目錄是無法查看到剛剛所上傳的聲音檔,這是因為 sdcard 是一個連接檔 (link file),是連接到 /mnt/scdard/的子目錄中,所以在該子目錄中才可以看到剛剛所上傳的 sound2.mp3 聲音檔。因此,以後要上傳下載 sdcard 目錄時,請直接對 /mnt/sdcard/ 該子目錄進行操作。
圖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. 執行程式後虛擬手機的畫面,只會顯示應用程式的標題,並直接播放所指定存放在 SD card 上的聲音檔一次。
留言列表