2012-02-01 4 views
1

현재 웹 라디오 앱을 개발 중입니다. 사용자가 일시 중지/정지 키를 누르면 스트림이 멈추고 다시 재생을 누르면 스트림이 계속 진행됩니다.AudioPlayerAgent 스트리밍 - 버퍼를 삭제하지 않습니다.

내가 가진 문제는 그 플레이어. 정지()가 트랙을 일시 중지합니다. 계속을 계속 누르면 첫 번째 5 초가 스트림에서 읽히지 않고 버퍼에서 읽히고 몇 초 동안 소리가 나지 않으며 스트림에서 다시 읽습니다.

웹 라디오 앱의 경우 치명적입니다. 어떻게 해결할 수 있습니까? 또는 버퍼를 어떻게 삭제합니까?

protected override void OnPlayStateChanged(BackgroundAudioPlayer player, AudioTrack track, PlayState playState) 
    { 
     switch (playState) 
     { 
      case PlayState.TrackReady: 
       player.Play(); 
       break; 
      case PlayState.Stopped: 
       player.Stop(); 
       break; 
      case PlayState.Paused: 
       player.Stop(); 
       break; 
     } 

     NotifyComplete(); 
    } 

답변

2

좋아. 너희들에게 내가 알기로는, 내가 한 일이야. 더 좋은 방법이 있는지 모르겠지만이 방법은 저에게 효과적입니다.

 protected override void OnPlayStateChanged(BackgroundAudioPlayer player, AudioTrack track, PlayState playState) 
    { 
     switch (playState) 
     { 
      case PlayState.Stopped: 
       track.BeginEdit(); 
       track.Tag = track.Source.OriginalString; 
       track.Source = new Uri("http://127.0.0.1", UriKind.Absolute); 
       track.EndEdit(); 

       player.Track = track; 
       break; 


     protected override void OnUserAction(BackgroundAudioPlayer player, AudioTrack track, UserAction action, object param) 
    { 
     switch (action) 
     { 
      case UserAction.Play: 
       if (player.PlayerState != PlayState.Playing) 
       { 
        try 
        { 
         player.Play(); 
        } 
        catch(Exception) 
        { 
         track.BeginEdit(); 
         track.Source = new Uri(player.Track.Tag, UriKind.Absolute); 
         track.EndEdit(); 

         player.Track = track; 
         player.Play(); 
        } 
       } 
       break; 
      case UserAction.Stop: 
      case UserAction.Pause: 
       if (player.Track.Source.OriginalString != "http://127.0.0.1/") 
       { 
        player.Stop(); 
       } 
       break; 
+0

+1 게시 용입니다. 이것은 어느 시점에서 나에게 도움이 될 것입니다. 즐겨 찾기. – spender

0

중지 할 때 모든 것을 버리고 재생이 다시 시작될 때 다시 시작하는 방법은 무엇입니까? 사용중인 기능이 정적 콘텐츠를 일시 중지하는 데 더 적합하다고 판단됩니다. 일시 정지는 라디오로는별로 의미가 없습니다.

+1

트랙을 설정하거나 null을 설정하면 AudioPlayerAgent가 종료됩니다. 그리고 이것은 배경 작업이기 때문에 앱이 닫힐 때 실행됩니다. 다시 시작할 수 없습니다. – Martin

+0

아참. 나는 우리가 아마 몇 달 안에 똑같이 글을 쓸 것이므로 관심을 가지고 이것을 따라갈 것이다. – spender