감사 대답 마이크에 대한. 그러나 불행하게도 이것은 나를 도와주지 않을 것이다.
MediaPlayer에 길이가 3:45 인 노래를 00:00에 재생하도록 요청했다고 가정 해 보겠습니다.
01:00에 나는 휴대 전화 자원을 사용하기 시작했습니다. 사용량이 많아서 전화가 흘러서 MediaPlayer가 2 초 동안 일시 중지되었습니다.
시간 :
00 : 00 ~ 01 : 00 -
01 : : : 00 ~ 01 00 나는 00에서 오디오를 들어 00-01을 : 02 - 전화가 glitched 때문에 침묵을 듣고
01 : 02-03 : - 나는 MediaPlayer를이 문제 도메인에 대한 사용의 나쁜 선택을 이해 무엇 때문에, 지금부터
왜곡 이초 시간 45 : 00-03 47 나는 01에서 오디오를 듣고 MediaPlayer
은 높은 수준의 API를 제공합니다.
//Creating a new audio track
AudioTrack audioTrack = new AudioTrack(...)
//Get start time
long start = System.currentTimeMillis();
// loop until finished
for (...) {
// Get time in song
long now = System.currentTimeMillis();
long nowInSong = now - start;
// get a buffer from the song at time nowInSong with a length of 1 second
byte[] b = getAudioBuffer(nowInSong);
// play 1 second of music
audioTrack.write(b, 0, b.length);
// remove any unplayed data
audioTrack.flush();
}
을 지금은 1 초 동안 나는에게 단지 결함을있는 결함 후 나는 적절한시기에 적절한 오디오를 재생하여 자신을 수정하는 경우 :
나는 현재 내가 필요로 날을 제공해야되는 AudioTrack
클래스 실험하고 !
참고
이 코드를 테스트하지 않은 있지만, 그것을 할 수있는 올바른 방법처럼 보인다. 실제로 작동한다면이 게시물을 다시 업데이트 할 것입니다.
P.MediaPlayer
에서 찾기 : 1. 내 음악을 확실히 지연시키는 무거운 작업 (여기는 매 밀리 초가 계산 됨) 2. 스레드가 안전하지 않으며 여러 스레드에서 사용할 수 없습니다 (검색, 시작 등 ...)