ios – 如何检查MPMediaItem的MPMediaType只是音频?

我希望我需要进行逐位比较,但我不清楚如何在Objective-C语法中完成. MPMediaType的枚举定义如下.

我需要做的是确保MPMediaItem根本不是视频,因为尽管使用我的媒体查询过滤到MPMediaTypeAnyAudio,AVAssetReader仍会阻塞视频文件.

如何确保MPMediaItem是唯一的音频类型之一?

enum {
    // audio
    MPMediaTypeMusic        = 1 << 0,MPMediaTypepodcast      = 1 << 1,MPMediaTypeAudioBook    = 1 << 2,MPMediaTypeAudioITunesU = 1 << 3,// available in iOS 5.0
    MPMediaTypeAnyAudio     = 0x00ff,// video (available in iOS 5.0)
    MPMediaTypeMovie        = 1 << 8,MPMediaTypeTVShow       = 1 << 9,MPMediaTypeVideopodcast = 1 << 10,MPMediaTypeMusicVideo   = 1 << 11,MPMediaTypeVideoITunesU = 1 << 12,MPMediaTypeAnyVideo     = 0xff00,MPMediaTypeAny          = ~0
};
typedef NSInteger MPMediaType;

解决方法

要从音乐库中检索所有音乐曲目,请尝试:
MPMediaPropertyPredicate *predicate = [MPMediaPropertyPredicate predicateWithValue:[NSNumber numberWithInteger:MPMediaTypeMusic] forProperty:MPMediaItemPropertyMediaType];

MPMediaQuery *query = [[MPMediaQuery alloc] init];
[query addFilterPredicate:predicate];

NSArray *items = [query items];

要检索音乐,有声读物和播客:

MPMediaPropertyPredicate *predicate = [MPMediaPropertyPredicate predicateWithValue [NSNumber numberWithInteger:MPMediaTypeMusic | MPMediaTypepodcast | MPMediaTypeAudioBook] forProperty:MPMediaItemPropertyMediaType comparisonType:MPMediaPredicateComparisonContains];

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...