음악 플레이어 앱이있어서 트랙의 어느 부분을 재생해야하는지 자릅니다. 내 질문은 현재 미디어 플레이어 트랙이 노래의 끝에 도달하지 않은 경우에도 다음 노래를 재생하는 방법입니다. 나는 또한 onCompletion를 호출 시도 :현재 노래의 끝 부분에 도달하지 않고 MediaPlayer의 다음 노래를 재생하는 방법
mplayer.stop();
Log.v("PLAYER", "Audio track Stopped");
checkTrackStatus();
songHandler.removeCallbacks(uxUpdater);
if(fis!=null)fis=null;
if((currentTrack+1) < songs.size())
{
Log.v("Move to next track", songs.get(currentTrack+1).get("songTitle"));
//mplayer.release();
mplayer=null;
currentTrack++;
playSong(currentTrack);
}else
Toast.makeText(getApplication(), "All tracks played", Toast.LENGTH_LONG).show();
재생 SONG 방법 : 내가 항상 말하는 오류가
public void playSong(final int songIndex)
{
File toPlay = new File(songs.get(songIndex).get("songPath"));
lblTrackText.setText("Playing ["+(songIndex+1)+"/"+songs.size()+"]");
lblTrackTitle.setText(songs.get(songIndex).get("songTitle"));
//lblTrackTitle.setSelected(true);
Log.v("PLAY SONG : ", toPlay.getPath());
if(toPlay.exists())
{
//playAudio(toPlay);
try{
mplayer = new MediaPlayer(this);
//mplayer.setOnCompletionListener(this);
fis=new FileInputStream(new File(songs.get(songIndex).get("songPath"))); //ORIGINAL 'p'
mplayer.setDataSource(fis.getFD());//need to add permission in manifest to play .m4a files "ACCESS_NETWORK_STATE"
mplayer.prepare();
//final String s =p;
mplayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
//getTotalTrackDuration
@Override
public void onPrepared(MediaPlayer mp) {
mplayer.seekTo(Integer.parseInt(songs.get(songIndex).get("songStart")));
mplayer.start();
//lblTotal.setText(timeConverter(mplayer.getDuration()));
setTrackNo();
//Log.v("NOW PLAYING ", s);
updateProgress();
}
});
} catch (Exception e) {
Log.e("AUDIO PLAYER", "error: " + e.getMessage(), e);
}
}
else
Toast.makeText(getApplication(), songs.get(songIndex).get("songTitle")+" does not exist or is already deleted", Toast.LENGTH_LONG).show();
}
오류 (1, -541478725) 치명적인 신호 11 (SIGSEGV)에서 0x00002ad8 (코드 = 1)
나는 vitamio 미디어 플레이어를 사용하고 있습니다.
어떤 도움을 당신이 얻을 오류는 vitamino 미디어 플레이어에 누워 있어야합니다 네이티브 코드에서 버그가 있음을 나타냅니다 great..thanks
니스! 호기심에서 벗어나 무엇을 바꾸어야합니까? :) – Pphoenix
고마워요. .. 해결책을 생각해 냈습니다. 지정된 종료 시간 (w/c는 트랙의 종료 시간이 아님)에 도달하면 [MediaPlayerObj] .seekTo ([MediaPlayerObj] .getDuration()) oncompletion 메서드를 호출하려면 ... hehe – MetaSnarf
@MetaSnarf : 아주 좋습니다! – Pphoenix