Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 仅获取音乐文件详细信息_C#_Android_Xamarin_Xamarin.android - Fatal编程技术网

C# 仅获取音乐文件详细信息

C# 仅获取音乐文件详细信息,c#,android,xamarin,xamarin.android,C#,Android,Xamarin,Xamarin.android,基本上,我试图在android设备中获取音乐文件的详细信息(例如音乐的标题、艺术家等),并将其存储到列表中(SongData包含列表,它包含Song对象的列表。) 代码运行良好,但在do..while循环中,songtile也包含其他非音乐文件 我尝试检查文件扩展名,但它不起作用,再次使用调试器后,给定的文件名不包含文件扩展名 那么,如何确保它只从音乐文件中获取细节,而不从其他类型的文件中获取细节呢? (另外,我想获取音乐文件艺术家的姓名,但显然int-songArtistColumn=musi

基本上,我试图在android设备中获取音乐文件的详细信息(例如音乐的标题、艺术家等),并将其存储到
列表中
SongData
包含列表,它包含
Song
对象的列表。)

代码运行良好,但在
do..while
循环中,
songtile
也包含其他非音乐文件
我尝试检查文件扩展名,但它不起作用,再次使用调试器后,给定的文件名不包含文件扩展名

那么,如何确保它只从音乐文件中获取细节,而不从其他类型的文件中获取细节呢?
(另外,我想获取音乐文件艺术家的姓名,但显然
int-songArtistColumn=musicCursor.GetColumnIndex(“艺术家”);
似乎不起作用。)


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

您可以尝试使用
musicCursor.GetColumnNames()
查看该文件允许您使用的内容

如果你执行它,你可以得到。
musicCursor.GetColumnNames()
将以
string[]
的形式返回结果,因此您可以使用
List songInfo=new List(string[])

您可能遇到的一个问题是
null异常
,当您试图处理的数据的值为null时,就会发生这种情况。如果艺术家或其他值未知,则直接从文件中获取此值

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

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());
        }
    }