AVPlayerViewController没有在Xamarin.iOS应用程序中呈现

时间:2016-05-26 13:49:46

标签: xamarin xamarin.ios cross-platform xamarin.forms avplayerviewcontroller

我是Xamarin的新手。我正在尝试使用列表视图中的Xamrin.iOS中的AVPlayerViewController播放声音。这是我的按钮操作。

var playBtn = new Button () {
WidthRequest = 50,
HeightRequest = 50,
BackgroundColor = Color.Transparent,
Command = new Command(() =>{
DependencyService.Get().PlayAudioFile("Audio.mp3");
})

playBtn是自定义单元格按钮。使用XAML填充细胞数据 “PlayAudioFile”是一个界面,并且是特定于平台的。我目前正在将它用于iOS。 这是我的iOS UIViewController代码

public void PlayAudioFile(string fileName)
{
string sFilePath = NSBundle.MainBundle.PathForResource(Path.GetFileNameWithoutExtension(fileName), Path.GetExtension(fileName));
var url = NSUrl.FromString (sFilePath);
var player = new AVPlayer (url);
player.Rate = 0.25f;
var playerVC = new AVPlayerViewController();
playerVC.Player = player;
playerVC.AllowsPictureInPicturePlayback = true;
playerVC.View.Frame = this.View.Frame;
player.Play ();
this.PresentViewController (playerVC, true, null);
}

但是AVPlayerViewController没有播放音频,也没有播放视频控制器。我做错了什么。 在此先感谢。

1 个答案:

答案 0 :(得分:0)

我发现这里有一个问题就是你创建url的方式。您正在使用bundle中的文件,这意味着它的本地文件。 使用NSUrl.FromFilename(sFilePath)代替NSUrl.FromString(sFilePath);

NSUrl.FromString将创建类似http://yourfolder/subfolder/fielname.extension的网址,在您的情况下无效。而NSUrl.FromFilename将创建类似file://yourfolder/subfolder/filesname.extension的网址。这在你的情况下是有效的。