基本上我试图在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}}似乎不起作用。)
最后,如何获取音乐文件的图像? (歌曲图片)。
答案 0 :(得分:1)
您可以尝试使用musicCursor.GetColumnNames()
来查看允许您使用的文件。
musicCursor.GetColumnNames()
会在string[]
中返回结果,因此您可以使用List<string> songInfo = new List<string>(string[]);
您可能遇到的问题是NullException
,当您尝试使用的数据值为null时会发生这种情况。如果Artist或其他值未知,您将直接从文件中获取此值。
我不知道图像文件的存储位置,但如果它与音乐文件一起存储,则很可能存储在byte[]
中。因此,您需要将byte[]
转换为图片。