古事連記帖

趣味のこと、技術的なこと、適当につらつら書きます。

Xamarin.Android で System.IO.Stream を MediaPlayer に流し込む

Android.Media.MediaPlayer クラスの SetDataSource メソッドは、そのままだと System.IO.Stream を受け取ることができず*1、例えば WebAPI で拾ってきたバイト配列を MemoryStream に入れたり、FileIO で拾ってきた Stream といった .NET Framework 系のストリームとの相性があまりよくありません。

とはいえ、 SetDataSource メソッドのオーバーロードには MediaDataSource クラスのインスタンスをパラメーターとして受け取るものが用意されています。これは開発者が独自の方法でデータを読み込ませたいときに使うものですが、これを使って Stream も読めるようにします。

gist.github.com

*1:他の口があるかもしれない?