2012-03-26 4 views
8

라이브 오디오를 스트리밍하고 미디어 플레이어를 일시 중지 한 다음 현재 라이브 위치에서 시작하는 기능을 원합니다. 기본 Pause() 및 Start()는 중지 된 위치에서 시작됩니다. Start()가 순간적으로되도록 현재 위치를 유지하는 방법에 대한 아이디어가 있습니까?일시 중지시 MediaPlayer 시작 위치 업데이트

+0

그냥 내 대답을 편집, 도움이 되길 바랍니다 – bughi

답변

6

seekTo()를 호출 해 보았습니까?

여러분은 seekbox()를 매 30 초마다 TimerTask으로 호출하여 자주적으로 업데이트 할 수 있습니다. 그러나 나는 이것에 대해 어떻게 느끼는지 모르겠습니다.

편집 : 당신이 seekTo()를 모든 500 밀리 초 호출하면, 그것을 유지하기 위해 당신은 마지막 호출 (이 경우 500 밀리 초) 이후 ellapsed currentPosition + 시간에 호출 앞으로 것입니다 이동. 그러나 이것이 최선의 방법인지 다시 나는 알 수 없다. 또 다른 방법은 새로운 seekTo (currentPosition + timeEllapsed)를 preform하는 OnSeekCompleteListener를 만드는 것입니다. currentSystemTime - systemTimeOnLastCall

http://developer.android.com/reference/android/media/MediaPlayer.html에서 :이 경우과 같이 timeEllapsed을 계산해야

재생 위치는 seekTo (INT)에 대한 호출을 조정할 수 있습니다.

비동기적인 seekTo (int) 호출이 올바른 방법으로 반환되지만, 실제 탐색 작업이 끝날 때까지, 특히 오디오/비디오가 스트리밍되는 데에는 시간이 걸릴 수 있습니다. 실제 탐색 작업이 완료되면 OnSeekCompleteListener가 setOnSeekCompleteListener (OnSeekCompleteListener)를 통해 미리 등록 된 경우 내부 플레이어 엔진이 OnSeekComplete.onSeekComplete()를 제공 한 사용자를 호출합니다.

seekTo (int)는 Prepared, Paused 및 PlaybackCompleted 상태와 같은 다른 상태에서도 호출 할 수 있습니다.

또한 현재 진행중인 현재 재생 위치는 getCurrentPosition()을 호출하여 검색 할 수 있으며 재생 진행 상황을 추적해야하는 음악 플레이어와 같은 응용 프로그램에 유용합니다.

+0

getCurrentPosition()이 일시 중지 된 위치를 반환하는 것으로 보입니다. 스트림 (라이브 콘텐츠)의 끝 위치를 seekTo() 위치로 가져 오는 방법은 무엇입니까? – Brianjs

+1

+1 "비동기적인 seekTo (int) 호출이 올바른 방법으로 반환되지만 실제 검색 작업을 완료하는 데 약간의 시간이 걸릴 수 있습니다". 이것은 내 문제를 해결했다. – Tiago

+0

seekTo (0) 호출; 후 stream.start(); 나를 위해 일했다. – aytek

1

MediaPlayer를 일시 중지 할 때 MediaPlayer.getCurrentPosition으로 전화를 걸고 MediaPlayer.seekTo을 호출하면 MediaPlayer를 다시 시작할 때 위치가 다시 설정됩니다.

+0

일시 중지를 누르면 스트림의 위치로 다시 돌아 오지 않을까요? 적어도 내가 그것을 테스트했을 때 그것이하는 일이다. 시작을 다시 누르면 라이브 내용의 스트림 끝으로 가고 싶습니다. – Brianjs

+2

오, 미안, 나는 '생방송'을 알아 차리지 못했다. 라이브 오디오를 스트리밍하고 있기 때문에 사용자가 MediaPlayer를 일시 중지하면 MediaPlayer를 "중지"하고 MediaPlayer를 다시 시작하면 MediaPlayer를 "재설정"하고 "시작"할 수 있습니다. 라이브 스트림이 끝날 때마다 항상 있습니다. – neevek

관련 문제