public void Prepare(string assetName, HandlePrepare prepareHandler) { if (mMediaPlayer == null) { mMediaPlayer = new Android.Media.MediaPlayer(); } AssetFileDescriptor assetFd = Android.App.Application.Context.Assets.OpenFd(assetName); mMediaPlayer.Reset(); mMediaPlayer.SetDataSource(assetFd); mMediaPlayer.SetAudioStreamType(ExchangeAudioStreamType(mAudioStreamType)); mMediaPlayer.Looping = mLoop; mMediaPlayer.SetOnPreparedListener(new LocalPrepareListener(prepareHandler)); }
public void Prepare(string assetName, HandlePrepare prepareHandler) { if (mAudioPlayer != null) { mAudioPlayer.Stop(); mAudioPlayer.Dispose(); } bool result = false; int extStartDotIndex = assetName.LastIndexOf('.'); if (extStartDotIndex > 0) { string fileName = assetName.Substring(0, extStartDotIndex); string extName = assetName.Substring(extStartDotIndex); NSDataAsset assetData = new NSDataAsset(fileName); NSError error = null; if (assetData != null) { AVAudioSession.SharedInstance().SetCategory(AVAudioSessionCategory.Playback); AVAudioSession.SharedInstance().SetActive(true); mAudioPlayer = new AVAudioPlayer(assetData.Data, extName, out error); SetLooping(mLoop); SetVolume(mLeftVolume, mRightVolume); } result = error == null; if (result) { result = mAudioPlayer.PrepareToPlay(); } } prepareHandler?.Invoke(assetName, result); }
public LocalPrepareListener(HandlePrepare prepareHandler) { mPrepareHandler = prepareHandler ?? throw new NullReferenceException("prepareHandler == null"); }