我有一个音乐服务类,其中有一个名为playNext()
的方法。
public void playNext() {
setSong(songPosn + 1);
playSong();
}
和playSong()
方法是,
public void playSong() {
if(player != null){
if(player.isPlaying()){
player.stop();
}
}
//play a song
isPaused = false;
isComplete = false;
isPrepared = false;
player = new MediaPlayer();
player.setAudioStreamType(AudioManager.STREAM_MUSIC);
player.setOnPreparedListener(this);
player.setOnCompletionListener(this);
//get song
Song playSong = songs.get(songPosn);
//get id
long currSong = playSong.getID();
//set uri
Uri trackUri = ContentUris.withAppendedId(
android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
currSong);
try {
player.setDataSource(getApplicationContext(), trackUri);
} catch (Exception e) {
Log.e("MUSIC SERVICE", "Error setting data source", e);
}
try {
player.prepare();
} catch (IOException e) {
e.printStackTrace();
}
}
问题是当播放的歌曲长度很短时,player
会跳过songs
列表中超过1首歌曲。即使在playNext()
方法中只增加1。
注意:每次都不会发生这种情况。但大多数时候。我无法弄清楚这个问题。这个简短的音乐文件是一个Facebook弹出声音,持续时间不到0秒。