iOS获取手机内部音乐列表
来源:互联网 发布:网页图片批量下载软件 编辑:程序博客网 时间:2024/06/05 02:46
主要是通过 MPMediaQuery 来获取系统的音乐列表
下面讲解这个类的一些属性和方法
1.首先说一下MPMediaPredicate这个类,
这个类可以用来过滤我们不想要的一些音乐
MPMediaPredicate 这个类的定义如图:
并没有定义属性和方法,应该是苹果预留的,为了以后能用在其他的过滤里面
但是我们可以使用它的子类 MPMediaPropertyPredicate
这是MPMediaPropertyPredicate 的 实例化方法
+ (MPMediaPropertyPredicate *)predicateWithValue:(nullable id)value forProperty:(NSString *)property comparisonType:(MPMediaPredicateComparison)comparisonType;
这个方法是过滤属性 property ,过滤的方法是进行比较 value 是否相等比较的类型comparisonType
比较的类型有两种:
MPMediaPredicateComparisonEqualTo,
第一个:MPMediaPredicateComparisonEqualTo 是比较两个是否相等,如 字符串的 isEqualToString
第二个:MPMediaPredicateComparisonContains 是检测是否包含
OK! MPMediaPropertyPredicate 理解完之后,下面继续
2.MPMediaQuery
下面一个个的讲解方法:
// 1. 这个是MPMediaQuery 的初始化方法,可以传入一个过滤的类MPMediaPredicate来过滤我们不想要的item
- (instancetype)initWithFilterPredicates:(nullableNSSet<MPMediaPredicate *> *)filterPredicatesNS_DESIGNATED_INITIALIZER;
// 2. 这个可以设置多个过滤条件
@property (nonatomic,strong,nullable)NSSet<MPMediaPredicate *> *filterPredicates;
// 3. 添加一个过滤条件
- (void)addFilterPredicate:(MPMediaPredicate *)predicate;
// 4. 移除一个过滤条件
- (void)removeFilterPredicate:(MPMediaPredicate *)predicate;
// 5. 返回一个通过 过滤条件过滤之后 的 存放MPMediaItems 类型的数组,如果没有item 匹配到,会返回一个空数组,如果在查找期间出错的话也有可能会返回一个nil,
// 这个item 数组就是我们想要的 音乐列表
// Returns an array of MPMediaItems matching the query filter predicates.
// If no items match this method returns an empty array, otherwise returns nil if an error prevents the items from being fetched.
@property (nonatomic,readonly,nullable)NSArray<MPMediaItem *> *items;
// 6. 返回一个指定组类型(groupingType)的数组,数组里面存放 MPMediaItemCollection 类型
// MPMediaItemCollection 类型可以看做是 item 的集合 通过 [MPMediaItemCollection items] 获得
// 例如,我们设置groupingType为MPMediaGroupingArtist 艺术家类型
// 那么返回的数组里面
第一个(MPMediaItemCollection)是 :刘德华的所有歌曲(MPMediaItem)的集合,
可以通过 [MPMediaItemCollection items] 获得刘德华的所有歌曲
第二个是小沈阳的歌曲集合
。。。。。。。
// Returns an array of MPMediaItemCollections matching the query filter predicates. The collections are grouped by the groupingType.
@property (nonatomic,readonly,nullable)NSArray<MPMediaItemCollection *> *collections;
// 7. 指定的组类型 组类型下面有介绍
// The property used to group collections, defaults to MPMediaGroupingTitle.
@property (nonatomic)MPMediaGrouping groupingType
// 7 同上
@property (nonatomic,readonly,nullable)NSArray<MPMediaQuerySection *> *itemSectionsNS_AVAILABLE_IOS(4_2);
@property (nonatomic,readonly,nullable)NSArray<MPMediaQuerySection *> *collectionSectionsNS_AVAILABLE_IOS(4_2);
// 8. 通过类方法直接获得我们想要的media 队列
// Base queries which can be used directly or as the basis for custom queries.
// The groupingType for these queries is preset to the appropriate type for the query.
+ (MPMediaQuery *)albumsQuery;
+ (MPMediaQuery *)artistsQuery;
+ (MPMediaQuery *)songsQuery;
+ (MPMediaQuery *)playlistsQuery;
+ (MPMediaQuery *)podcastsQuery;
+ (MPMediaQuery *)audiobooksQuery;
+ (MPMediaQuery *)compilationsQuery;
+ (MPMediaQuery *)composersQuery;
+ (MPMediaQuery *)genresQuery;
3. 使用
获取到了MPMediaQuery,便可以或得到 items (MPMediaItem),
在通过MPMediaItem 的属性方法就可以获得具体 MPMediaItem 的一些属性(如:播放本地连接)
当然也可以通过
- (id) valueForProperty: (NSString *) property的方法获得
列举几个
@property (nonatomic, readonly) MPMediaType mediaType // 媒体类型 如 MP3
@property (nonatomic, readonly, nullable) NSString *title// 标题
NSString * const MPMediaItemPropertyAssetURL
@property (nonatomic, readonly, nullable) NSURL *assetURL// 播放URL
NSString * const MPMediaItemPropertyPlayCount
@property (nonatomic, readonly) NSUInteger playCount// 播放次数
NSString * const MPMediaItemPropertyLastPlayedDate
@property (nonatomic, readonly, nullable) NSDate *lastPlayedDate // 最后一次播放的时间
// MPMediaGrouping
typedef NS_ENUM(NSInteger, MPMediaGrouping) {
MPMediaGroupingTitle, // 标题
MPMediaGroupingAlbum,// 唱片集
MPMediaGroupingArtist, // 艺术家
MPMediaGroupingAlbumArtist, // 唱片集艺术家
MPMediaGroupingComposer, // 作曲家
MPMediaGroupingGenre, // 类型流派
MPMediaGroupingPlaylist, // 播放列表
MPMediaGroupingPodcastTitle // 播客标题
}
以上仅为个人理解,理解有误的地方,请指出,谢谢
如有未理解或想要继续的探讨的朋友可以联系本人
- iOS获取手机内部音乐列表
- ios播放器相关(音乐列表获取)
- ios开发---音乐播放器之怎么获取音乐列表
- android获取手机和sd卡上音乐列表
- iphone开发 获取音乐列表
- IOS获取本地音乐
- ios 获取本地音乐
- android 获取内部存储器列表
- 获取手机内部所有AppInfo
- IOS手机浏览器无法获取网站视频与音乐,安卓与电脑都可以
- iOS获取本地音乐播放
- ios 获取音乐库音乐相关
- IOS Android 手机助手原理以及源码(IOS 获取应用列表)
- getAllContants--获取手机联系人列表
- swift获取手机通讯录列表
- 获取手机当前后台程序列表
- iOS获取应用列表
- 获取IOS应用列表
- javaweb学习总结(四十六)——Filter(过滤器)常见应用
- 实际项目使用例程(一)
- 第十六课程序的测试和修改——C#计算器编程教学
- Android Dev Intro - Android Thread Intro
- Maven 那点事儿
- iOS获取手机内部音乐列表
- android的进程/线程的管理
- DevSecOps简介(二)
- C++先序遍历与中序遍历生成二叉树 后序遍历与中序遍历生成二叉树
- 使用visual studio code开发Go程序
- 第十七课预期策略选择——C#计算器编程教学
- POJ 1651 Multiplication Puzzle
- 将dba转换成file号block号
- javaweb学习总结(四十七)——监听器(Listener)在开发中的应用