1
wxr
2023-03-31 7e42cc13a14b7de31c9f5d5c61cdf24f3246335d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.Provider;
 
namespace Shared
{
    [System.Serializable]
    public class MusicInfo
    {
        
        static MusicInfo ()
        {
            System.Threading.Tasks.Task.Run (() => {
                var cursor = Application.Activity.ContentResolver.Query (MediaStore.Audio.Media.ExternalContentUri, new []
                { 
                    MediaStore.Audio.AudioColumns.Id,//歌曲ID
                    MediaStore.Audio.AudioColumns.Title,//歌曲名称
                    MediaStore.Audio.AudioColumns.Artist,//歌曲的歌手名                    
                    MediaStore.Audio.AudioColumns.Album,// 歌曲的专辑名
                    MediaStore.Audio.AudioColumns.AlbumId,//歌曲专辑ID
                    MediaStore.Audio.AudioColumns.Data,//歌曲文件的路径
                    MediaStore.Audio.AudioColumns.Size,//歌曲的总播放时长                    
                    MediaStore.Audio.AudioColumns.Duration,//歌曲的总播放时长
                   }, null, null, null); 
 
 
                for (cursor.MoveToFirst (); !cursor.IsAfterLast; cursor.MoveToNext ()) {
 
                    musicInfoList.Add (new MusicInfo {
                        SourceType = "Local",
                        ID = cursor.GetString (cursor.GetColumnIndex (MediaStore.Audio.AudioColumns.Id))?.Trim ('<').Trim('>').Replace ("&", ""),
                        Title = cursor.GetString (cursor.GetColumnIndex (MediaStore.Audio.AudioColumns.Title))?.Trim('<').Trim('>').Replace ("&", ""),
                        Artist = cursor.GetString (cursor.GetColumnIndex (MediaStore.Audio.AudioColumns.Artist))?.Trim('<').Trim('>').Replace ("&", ""),
                        Album = cursor.GetString (cursor.GetColumnIndex (MediaStore.Audio.AudioColumns.Album))?.Trim('<').Trim('>').Replace ("&", ""),
                        AlbumId = cursor.GetString (cursor.GetColumnIndex (MediaStore.Audio.AudioColumns.AlbumId))?.Trim('<').Trim('>').Replace ("&", ""),
                        Data = cursor.GetString (cursor.GetColumnIndex (MediaStore.Audio.AudioColumns.Data))?.Replace ("&", ""),
                        Size = cursor.GetString (cursor.GetColumnIndex (MediaStore.Audio.AudioColumns.Size))?.Trim('<').Trim('>').Replace ("&", ""),
                        Duration = cursor.GetString (cursor.GetColumnIndex (MediaStore.Audio.AudioColumns.Duration))?.Trim('<').Trim('>').Replace ("&", ""),
                    }); 
 
                    if (500 <= musicInfoList.Count) {
                        break;
                    } 
                }
                cursor.Close();
            });
        }
       
        /// <summary>
        /// 歌曲名称
        /// </summary>
        public string Title;
        /// <summary>
        /// 歌曲的歌手名 
        /// </summary>
        public string Artist;
        /// <summary>
        /// 歌曲的专辑名     
        /// </summary>
        public string Album;
        /// <summary>
        /// 歌曲专辑ID
        /// </summary>
        public string AlbumId;
        /// <summary>
        /// 歌曲文件的路径
        /// </summary>
        public string Data;
        /// <summary>
        /// 歌曲的总播放时长
        /// </summary>
        public string Size;
        /// <summary>
        /// 歌曲的总播放时长
        /// </summary>
        public string Duration;
        /// <summary>
        /// 音乐ID
        /// </summary>
        public string ID;
        /// <summary>
        /// 网络地址
        /// </summary>
        public string URL;
        /// <summary>
        ///   文件名
        /// </summary>
        public string filename;
        /// <summary>
        /// DLNA列表名
        /// </summary>
        public string dlnalistName;
        /// <summary>
        /// 图片
        /// </summary>
        public string Image;
        /// <summary>
        /// 电台类型
        /// </summary>
        public string Cntype;
        /// <summary>
        /// 电台类型
        /// </summary>
        public string Cnkey;
        /// <summary>
        /// 是否是目录
        /// </summary>
        public bool IsDirectory = true;
 
        public string SourceType;
        public string SourceName;
 
        readonly static List<MusicInfo> musicInfoList = new List<MusicInfo> ();
        /// <summary>
        /// 获取所有的
        /// </summary>
        public static List<MusicInfo> MusicInfoList {
            get {
                return musicInfoList;
            }
        }
        public object Tag;
    }
}