一、需求場景
最近有個小的應用場景,需要不停的播放一些短促的音樂或者音效,不同的應用場景會播放不同的音樂,有的時候就導致了多個聲音疊加在一起播放的問題。
爲了要解決這個問題,只能是按照順序一個一個聲音播放,但是SoundPool並沒有提供播放完成的回調通知,android.media.SoundPool.OnLoadCompleteListener
二、實現自己的SoundPool播放完成回調
思路:播放完成的通知也就是從開始播放到播完這個音效的時長,也就是這個音效的時長;所以我們只需在初始化的時候獲取到音效的時長,然後定時音效的時長之後通知回調即可。
1、獲取要播放的音頻時長
2、定個時,在播放時長之後,通知回調即可。
2.1 獲取音頻時長
- 第一種方案: 通過MediaMetadataRetriever來獲取音頻時長
private long getMp3Durati