[英]Android MediaPlayer pause
我目前遇到的問題是暫停並不總是有效。 我的主要活動是通過ActionBarSherlock和onClick偵聽器操作的MediaPlayer。 MediaPlayer正在將ArrayList與MP3文件的URL(某些文件的長度為1秒)一起使用。
暫停代碼:
if (player.isPlaying()) {
if (player != null) {
player.pause();
swapPlayIcon(1);
isPaused = true;
pauseMenuButt.setVisible(false);
playMenuButt.setVisible(true);
}
}
swapPlayIcon(int)僅處理可見性和可繪制交換。
起始碼:
Iterator<Uri> iterUri = tracks.iterator();
while (iterUri.hasNext()) {
Uri tmpUri = iterUri.next();
try {
player.reset();
player.setDataSource(String.valueOf(tmpUri));
player.prepare();
player.start();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
編輯
經過更多測試后,我發現問題以“介於”狀態出現。
我的意思是,當我的MP3文件長2秒並且我單擊“暫停”時,它沒有停止,因為它剛讀完一個文件,現在移到下一個文件了。
我已經添加了:
} else {
pauseLocked = true;
}
在測試時暫停並在聲明中完全沒有出現。 因此,我不確定之前發現的“中間”問題。
您的暫停按鈕不起作用,因為在您啟動最后一個URL之前,其消息永遠無法到達MediaPlayer。 您完全阻塞了MediaPlayer所運行的線程(由於MediaPlayer在您的主要活動中,所以我假設它是UI線程)。 如果要在與UI相同的線程上創建MediaPlayer,則應使用prepare的異步版本:prepareAsync。 收到onMediaPrepared回調后,您需要做出響應,然后啟動媒體。 一旦發生這種情況,您就無需執行任何操作並等待媒體播放完畢,然后再加載另一個URL。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.