如果以前的音乐文件很短,MediaPlayer会跳过文件

时间:2016-07-19 17:52:59

标签: android android-mediaplayer

我有一个音乐服务类,其中有一个名为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秒。

0 个答案:

没有答案