나는 게임을 만들고 있으며, 일단 노래가 백그라운드에서 재생되고 나면 모두 사라져 버렸습니다. 이렇게하려면 MediaPlayer
을 생성하고 마지막 항목이 아니면 목록에서 다음 플레이어로 setNextMediaPlayer
을 호출하여 반복합니다. 그런 다음 목록의 첫 번째 항목으로 다시 설정합니다. 이것은 작동하지만 루프가 반복되어 첫 번째 노래를 다시 재생하려고 시도 할 때 play()
을 잘못된 상태로 호출했다고합니다. 그래서 OnCompleteListener
을 추가했습니다. 노래가 끝나면 prepare()
을 다시 부르지 만 그 점이 도움이되지 않습니다. 다시 재생하려면 MediaPlayer
에 무엇이 필요합니까?루핑 사운드 트랙 재생
- = UPDATE = - 가 여기 내 MediaPlayers
을 초기화하는 코드입니다 (마이너스 시도의 및 어획량 그 이후 바로 클러 그것을) :
String[] assets = manager.list("songs");
Collections.shuffle(Arrays.asList(assets));
for(String name : assets)
{
MediaPlayer player = new MediaPlayer();
AssetFileDescriptor descriptor = manager.openFd("songs/"+name);
player.setAudioStreamType(AudioManager.STREAM_MUSIC);
player.setDataSource(descriptor.getFileDescriptor(), descriptor.getStartOffset(), descriptor.getLength());
player.setOnCompletionListener(_reset);
player.prepare();
if(_songs.size() > 0)
{
_songs.get(_songs.size() - 1).setNextMediaPlayer(player);
}
_songs.add(player);
}
_songs.get(_songs.size() - 1).setNextMediaPlayer(_songs.get(0));
'setNextMediaPlayer'는'API 16'에서만 사용 가능합니다 + 당신도 괜찮습니까? 첫 번째 경우, 즉'OnComleteListener'를 재정의하지 않고 언제'prepare()'를 호출합니까? – iTech
그래, 나는 그걸로 괜찮아. 나는'MediaPlayers'를 초기화하는 데 사용하는 코드를 포함하도록 내 질문을 업데이트했습니다. – CaseyB