網絡檔案就是指放在網絡上的檔案,也可能是流媒體等網絡資源。由于這種方式不用存儲比較友善,但它的弊端就是要通過網絡,速度要比上兩種方式差,是以一般網絡播放方式要采用異步預處理方式。還有網絡流量費用也會增加使用者的使用成本。下面看看播放網絡音頻檔案的代碼請參考代碼清單12-3,完整代碼請參考chapter12_3工程中audioplayer代碼部分。
【代碼清單12-3】
private void play() {
try {
if (mmediaplayer == null || state == stop) {
// 建立mediaplayer對象并設定listener
mmediaplayer = new mediaplayer();
mmediaplayer.setonpreparedlistener(prelistener);
} else {
// 複用mediaplayer對象
mmediaplayer.reset();
}
// 播放網絡媒體最好不要調用prepare()方法
mmediaplayer
.setdatasource("http://www.51work6.com/android_book/audio/ma_mma.mp3");
mmediaplayer.prepareasync();
} catch (exception e) {
e.printstacktrace();
網絡檔案和本地檔案其實可以采用相同播放方式,當時由于考慮網絡速度的影響,網絡播放一般采用異步預處理方法prepareasync(),同步預處理方法prepare()也是可以播放網絡檔案的,但是使用者體驗不好。流程如圖12-8所示。
圖12-8播放流程
播放網絡音頻檔案不需要向其它的網絡應用程式需要在androidmanifest.xml檔案中打開<uses-permission android:name="android.permission.internet"></uses-permission>權限。
出自《android開發案例驅動教程》