Xamarin.AndroidでAndroid.Media.MediaplayerでStreamingを流す方法についてです。
markdown記法の練習として書いてます。
手順としては
- usingディレクティブにAndroid.Mediaを定義
- MediaPlayerで再生、停止の処理を指定
と至って簡単です。
再生については、まず準備として
Android.Media.MediaPlayerで
SetAudioStreamType(Stream.Music);
SetDataSource(Uri.EscapeUriString(Mediaurl));
とAudioStreamTypeをStream.Musicにして、DataSourceにエスケープしたstreamingのURIを設定します。
そしてPrepareAsync()として非同期に準備します。
再生する際は、準備出来たらStart()してあげればいいようです。
停止については、Stop()して、Reset()してあげればいいようです。
なお、Reset()を忘れるとエラーが出ました。
まとめると以下のようになります。(PlayButton,StopButtonというButtonを使用しています)
~略
using Android.Media;
~略
MediaPlayer Mp = new MediaPlayer ();
string Mediaurl = "streamingのURI"
//Playbuttonの処理
PlayButton.Click += (object sender, EventArgs e) => {
if (Mp.IsPlaying || Mediaurl == string.Empty) {
return;
}
Mp.SetAudioStreamType(Stream.Music);
Mp.SetDataSource(Uri.EscapeUriString(Mediaurl));
Mp.PrepareAsync();
};
//stopbuttonの処理
StopButton.Click += (object sender, EventArgs e) => {
if (Mp.IsPlaying) {
Mp.Stop ();
Mp.Reset ();
}
};
Mp.Prepared += (object sender, EventArgs e) =>{
Mp.Start();
};
~略
###なんだよ中華タブレット
実はメインでデバッグに使用している中華タブレットで上記のコードでは再生できず、他のエミュレータやSony Tablet Pでは再生されるという現象が発生しました。カスタムファームを使っているからかもしれません。
ただ、
でも同様現象が起こっているようです。
記載されているshoutcastでの回避方法を取るとshoutcastのみなら再生出来ました。
一体何なんだろう。