获取Xamarin.iOS中的播放列表
我很难通过Xamarin.iOS获取iPhone的播放列表集合。我想用播放列表描述填充自定义对象列表。我在苹果的文档中找到了一个关于如何在Obj-C中实现的页面。然而,无论我在Xamarin中做什么,我都会得到无效的强制转换异常或其他错误。 将播放列表放入收藏是可以的。但是,问题出在播放列表的名称之后获取Xamarin.iOS中的播放列表,xamarin.ios,xamarin,Xamarin.ios,Xamarin,我很难通过Xamarin.iOS获取iPhone的播放列表集合。我想用播放列表描述填充自定义对象列表。我在苹果的文档中找到了一个关于如何在Obj-C中实现的页面。然而,无论我在Xamarin中做什么,我都会得到无效的强制转换异常或其他错误。 将播放列表放入收藏是可以的。但是,问题出在播放列表的名称之后 private List<Playlist> GetPlaylists() { MPMediaQuery mq = MPMediaQuery.playl
private List<Playlist> GetPlaylists()
{
MPMediaQuery mq = MPMediaQuery.playlistsQuery;
// At this point mq.Collections has a reference to the playlists. However I have no way of getting the Name/Description of the playlist.
// Thats why I was attempting to use MPMediaPlaylist
// MPMediaPlaylist[] mp1 = mq.Collections as MPMediaPlaylist[]; - doesn't work - results in mp1 being null
List<Playlist> playlists = (from p in mq.Collections
select new Playlist () { PlaylistDescription = ((MPMediaPlaylist)p).ValueForProperty("MPMediaPlaylistPropertyName").ToString()}
).ToList();
return playlists;
}
private List GetPlaylists()
{
MPMediaQuery mq=MPMediaQuery.playsquery;
//此时,mq.Collections引用了播放列表。但是我无法获取播放列表的名称/描述。
//这就是我尝试使用MPMediaPlaylist的原因
//MPMediaPlaylist[]mp1=mq。集合为MPMediaPlaylist[];-不工作-导致mp1为空
列表播放列表=(来自mq.Collections中的p
选择新建播放列表(){playldescription=((MPMediaPlaylist)p).ValueForProperty(“MPMediaPlaylistPropertyName”).ToString()}
).ToList();
返回播放列表;
}
我的另一个变体如下(但在forearch的迭代中再次收到无效的强制转换异常,即mp1中的MediaPlaylist):
MPMediaQuery mq=MPMediaQuery.playsquery;
数组mp1=mq.Collections作为数组;
列表播放列表=新列表();
foreach(mp1中的MPMediaPlaylist播放列表){
添加(新播放列表(){playldescription=Playlist.ValueForProperty(“MPMediaPlaylistPropertyName”).ToString();
}
正如我在代码中注释的那样,我可以通过查询的collections属性获得播放列表的句柄。但是,我无法获取播放列表的名称/标题/说明。这就是我尝试使用MPMediaPlaylist的原因
在即时窗口和观看窗口中,我尝试强制转换(MPMediaPlaylist)mq.collections[0],但再次得到无效的强制转换异常
但正如你在上面看到的,我没有成功地复制它。如果有人能关注一下我上面的内容,以及这个Objective-C链接和建议,我将不胜感激
非常感谢,
汤姆我只想把这个放在这里。。。。如果将来有人碰到这个问题 因此,要获取播放列表,您应执行以下操作:
MPMediaQuery playlistQuery = MPMediaQuery.PlaylistsQuery;
MPMediaItemCollection[] playlistCollection = playlistQuery.Collections;
foreach(MPMediaItemCollection collection in playlistCollection){
NSString key = MPMediaPlaylistProperty.Name;
string name = collection.ValueForKey(key).ToString();
//Do whatever you need with the info
}
这似乎应该会起作用——可能是个bug。我会尝试向bugzilla.xamarin.com提交一个测试用例
MPMediaQuery playlistQuery = MPMediaQuery.PlaylistsQuery;
MPMediaItemCollection[] playlistCollection = playlistQuery.Collections;
foreach(MPMediaItemCollection collection in playlistCollection){
NSString key = MPMediaPlaylistProperty.Name;
string name = collection.ValueForKey(key).ToString();
//Do whatever you need with the info
}