【发布时间】:2017-09-12 16:31:43
【问题描述】:
基本上,我正在尝试获取 android 设备中音乐文件的详细信息(例如,音乐的标题、艺术家等)并将它们存储到 list<>。
(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"); 似乎不起作用。)
最后,如何获取音乐文件的图像? (歌曲图片)。
【问题讨论】:
标签: c# android xamarin xamarin.android