仅获取音乐文件详细信息

时间:2017-09-12 01:07:18

标签: c# android xamarin xamarin.android

基本上我试图在Android设备中获取音乐文件的详细信息(例如音乐的标题,艺术家等)并将它们存储到SongData
Song包含列表,它包含public void PopulateSongList(Context context) { SongData songData = new SongData(); Android.Net.Uri musicUri = Android.Provider.MediaStore.Audio.Media.ExternalContentUri; //Used to query the media files. ICursor musicCursor = context.ContentResolver.Query(musicUri, null, null, null, null); if (musicCursor != null && musicCursor.MoveToFirst()) { int songID = 0; //get columns. int songTitleColumn = musicCursor.GetColumnIndex("title"); int songArtistColumn = musicCursor.GetColumnIndex("artist"); //add songs to list do { String songTitle = musicCursor.GetString(songTitleColumn); //Tried, but file name does not contain file extension. if (songTitle.ToLower().Contains(".mp4") || songTitle.ToLower().Contains(".m4a")) { String songArtist = musicCursor.GetString(songArtistColumn); songData.AddNewSong(new Song(++songID, songTitle, songArtist, null)); } } while (musicCursor.MoveToNext()); } } 对象的列表。)

do..while

代码效果很好但是在songTitle循环中,int songArtistColumn = musicCursor.GetColumnIndex("artist");也包含其他非音乐文件的文件。
我尝试检查文件扩展名但它不起作用,再次使用调试器后,给定的文件名不包含文件扩展名。

那么我如何确保它只从音乐文件中获取细节,而不是其他类型的文件呢? (另外,我想获取音乐文件的艺术家名称,但显然{{1}}似乎不起作用。)

最后,如何获取音乐文件的图像? (歌曲图片)。

1 个答案:

答案 0 :(得分:1)

您可以尝试使用musicCursor.GetColumnNames()来查看允许您使用的文件。

如果你执行它,你可以得到{p> Here's an image of the possible resultsmusicCursor.GetColumnNames()会在string[]中返回结果,因此您可以使用List<string> songInfo = new List<string>(string[]);

您可能遇到的问题是NullException,当您尝试使用的数据值为null时会发生这种情况。如果Artist或其他值未知,您将直接从文件中获取此值。

我不知道图像文件的存储位置,但如果它与音乐文件一起存储,则很可能存储在byte[]中。因此,您需要将byte[]转换为图片。