2017-07-25 52 views
0

我尝试从流URL播放音乐,我有这样的代码错误的呼叫状态4 Xamarin.android的MediaPlayer

class AudioImplementation : ISound 
{ 
private MediaPlayer mediaPlayer; 

public AudioImplementation() { } 

public Context ApplicationContext { get; private set; } 

public void Initializer() 
{ 
    mediaPlayer = new MediaPlayer(); 
    mediaPlayer.SetAudioStreamType(Stream.Music);  
} 

public void Play(string aux) 
{ 
    if (mediaPlayer == null) 
    { 
     Initializer(); 
    } 
    try 
    { 
     mediaPlayer.SetDataSource(aux); 
     mediaPlayer.Prepare(); 
     mediaPlayer.Start(); 
    } 
    catch (Exception ex) 
    { 
     //unable to start playback log error 
     Console.WriteLine("Unable to start playback: " + ex); 
    } 
    } 
} 

但我得到一个错误的开始称为状态4,MPLAYER错误。有人能帮助我还是指出我朝着正确的方向?

回答

0

您可以为MediaPlayer设置一个IOnPreparedListener,以便在准备MediaPlayer之后调用start()方法。这样的代码:

mediaPlayer.SetDataSource(aux); 
mediaPlayer.Prepare(); 
mediaPlayer.SetOnPreparedListener(new MyListener(this)); 

class MyListener : Java.Lang.Object, MediaPlayer.IOnPreparedListener 
{ 
    private AudioImplementation audioImplementation; 

    public MyListener(AudioImplementation audioImplementation) 
    { 
     this.audioImplementation = audioImplementation; 
    } 

    public void OnPrepared(MediaPlayer mp) 
    { 
     audioImplementation.mediaPlayer.Start(); 
    } 
}