- 浏览: 370064 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wangchong_kevin:
放在drawable-hdpi目录下的图片,如果在mdpi分辨 ...
BitmapFactory.Options 解决加载大图片OOM -
darren_nizna:
Netty 实战(精髓) http://gitlore. ...
Java NIO框架Netty教程(一) Hello Netty(转) -
大家来学习:
国内首部NIO+Netty5各种RPC架构实战演练课程观看地址 ...
Java NIO框架Netty教程(一) Hello Netty(转) -
lipeixiaoyu:
[color=red][/color]123
IOS UIView的clipsToBounds属性 -
ramon1989:
问一下,你的SimpleChannelHandler是哪个包下 ...
Java NIO框架Netty教程(一) Hello Netty(转)
1.访问音乐库的两种方法,如下图
(只能访问音频文件,如music,podcast,audiobook等)
2.MPMusicPlayerController的使用
有两种播放器可以选择,一种是application music player,另外一种是iPod music player。
第一种播放器是一种内部播放器,当程序对出后停止播放;而第二种播放器则与iPod播放器内的信息相关,退出之后不会停止播放。获取方式如下:
- + applicationMusicPlayer
- + iPodMusicPlayer
播放之前需要设置播放器的播放队列
- – setQueueWithQuery:
- – setQueueWithItemCollection:
管理播放模式和播放状态的一些属性
- currentPlaybackTime property
- nowPlayingItem property
- playbackState property
- repeatMode property
- shuffleMode property
- volume property
播放状态 MPMusicPlaybackState
enum {
MPMusicPlaybackStateStopped,
MPMusicPlaybackStatePlaying,
MPMusicPlaybackStatePaused,
MPMusicPlaybackStateInterrupted,
MPMusicPlaybackStateSeekingForward,
MPMusicPlaybackStateSeekingBackward
};
typedef NSInteger MPMusicPlaybackState;
播放控制方法
- – play
- – pause
- – stop
- – beginSeekingForward
- – beginSeekingBackward
- – endSeeking
- – skipToNextItem
- – skipToBeginning
- – skipToPreviousItem
播放状态发生变化时可以发送通知
- – beginGeneratingPlaybackNotifications
- – endGeneratingPlaybackNotifications
MPMusicPlayerControllerPlaybackStateDidChangeNotification
可以通过该通知来改变播放按钮的样式
MPMusicPlayerControllerNowPlayingItemDidChangeNotification
MPMusicPlayerControllerVolumeDidChangeNotification
具体步骤
1.注册和开始发送通知
- Listing 2-1 Registering for and activating music player notifications
- NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
- [notificationCenter
- addObserver: self
- selector: @selector (handle_NowPlayingItemChanged:)
- name: MPMusicPlayerControllerNowPlayingItemDidChangeNotification
- object: musicPlayer];
- [notificationCenter
- addObserver: self
- selector: @selector (handle_PlaybackStateChanged:)
- name: MPMusicPlayerControllerPlaybackStateDidChangeNotification
- object: musicPlayer];
- [musicPlayer beginGeneratingPlaybackNotifications];
- Listing 2-2 Unregistering and deactivating music player notifications
- [[NSNotificationCenter defaultCenter]
- removeObserver: self
- name: MPMusicPlayerControllerNowPlayingItemDidChangeNotification
- object: musicPlayer];
- [[NSNotificationCenter defaultCenter]
- removeObserver: self
- name: MPMusicPlayerControllerPlaybackStateDidChangeNotification
- object: musicPlayer];
- [musicPlayer endGeneratingPlaybackNotifications];
2.创建并配置一个Music Player
- Listing 2-3 Creating an application music player
- MPMusicPlayerController* appMusicPlayer =
- [MPMusicPlayerController applicationMusicPlayer];
- [appMusicPlayer setShuffleMode: MPMusicShuffleModeOff];
- [appMusicPlayer setRepeatMode: MPMusicRepeatModeNone];
- Listing 2-4 Creating an iPod music player
- MPMusicPlayerController* iPodMusicPlayer =
- [MPMusicPlayerController iPodMusicPlayer];
- if ([iPodMusicPlayer nowPlayingItem]) {
- // Update the UI (artwork, song name, volume indicator, etc.)
- // to reflect the iPod state
- }
3.设置播放队列
- – setQueueWithQuery:
- – setQueueWithItemCollection:
4.控制播放
3.MPMediaPickerController的使用
- <span style="font-size:18px;">- (IBAction)addSongsToMusicPlayer:(id)sender
- {
- MPMediaPickerController *mpController = [[MPMediaPickerController alloc] initWithMediaTypes:MPMediaTypeMusic];
- mpController.delegate = self;
- mpController.prompt = @"Add songs to play";
- mpController.allowsPickingMultipleItems = YES;
- [self presentModalViewController:mpController animated:YES];
- [mpController release];
- }
- </span>
主要是设置代理和选择多媒体类型,然后通过代理方法来获取选中的歌曲
- <span style="font-size:18px;">#pragma mark - Media Picker Delegate Methods
- - (void)mediaPicker:(MPMediaPickerController *)mediaPicker didPickMediaItems:(MPMediaItemCollection *)mediaItemCollection
- {
- [self.musicPlayer setQueueWithItemCollection:mediaItemCollection];
- [self dismissModalViewControllerAnimated:YES];
- }
- - (void)mediaPickerDidCancel:(MPMediaPickerController *)mediaPicker
- {
- [self dismissModalViewControllerAnimated:YES];
- }</span>
4.MPMediaItem
- - (id) valueForProperty: (NSString *) property
NSString *const MPMediaItemPropertyTitle;
NSString *const MPMediaItemPropertyAlbumTitle;
NSString *const MPMediaItemPropertyArtist;
5.MPMediaItemCollection
- - (id) valueForProperty: (NSString *) property
- + collectionWithItems:
- – initWithItems:
属性
- items property
- representativeItem property
- count property
- mediaTypes property
6.MPMediaPlaylist
- MPMediaQuery *myPlaylistsQuery = [MPMediaQuery playlistsQuery];
- NSArray *playlists = [myPlaylistsQuery collections];
- for (MPMediaPlaylist *playlist in playlists) {
- NSLog (@"%@", [playlist valueForProperty: MPMediaPlaylistPropertyName]);
- NSArray *songs = [playlist items];
- for (MPMediaItem *song in songs) {
- NSString *songTitle =
- [song valueForProperty: MPMediaItemPropertyTitle];
- NSLog (@"\t\t%@", songTitle);
- }
- }
7.MPMediaQuery
需要设置两个属性: filter and grouping type
filter描述查询内容,grouping type 描述返回内容的排列方式
查询可以获取items,也可以获取collections
- When you ask for items, the query returns a collection containing all the items that match the filter. The items are in “natural” order, meaning that they are ordered as iTunes shows them on the desktop.
- When you ask for collections, the media query employs not only its filter but also its grouping type.
- MPMediaQuery *everything = [[MPMediaQuery alloc] init];
- NSLog(@"Logging items from a generic query...");
- NSArray *itemsFromGenericQuery = [everything items];
- for (MPMediaItem *song in itemsFromGenericQuery) {
- NSString *songTitle = [song valueForProperty: MPMediaItemPropertyTitle];
- NSLog (@"%@", songTitle);
- }
- MPMediaPropertyPredicate *artistNamePredicate =
- [MPMediaPropertyPredicate predicateWithValue: @"Happy the Clown"
- forProperty: MPMediaItemPropertyArtist];
- MPMediaQuery *myArtistQuery = [[MPMediaQuery alloc] init];
- [myArtistQuery addFilterPredicate: artistNamePredicate];
- NSArray *itemsFromArtistQuery = [myArtistQuery items];
多个查找条件,查找名为"Sad the Joker"的艺术家的"Stair Tumbling"专辑
- MPMediaPropertyPredicate *artistNamePredicate =
- [MPMediaPropertyPredicate predicateWithValue: @"Sad the Joker"
- forProperty: MPMediaItemPropertyArtist];
- MPMediaPropertyPredicate *albumNamePredicate =
- [MPMediaPropertyPredicate predicateWithValue: @"Stair Tumbling"
- forProperty: MPMediaItemPropertyAlbumTitle];
- MPMediaQuery *myComplexQuery = [[MPMediaQuery alloc] init];
- [myComplexQuery addFilterPredicate: artistNamePredicate];
- [myComplexQuery addFilterPredicate: albumNamePredicate];
- Listing 4-4 Applying multiple predicates when initializing a media query
- NSSet *predicates =
- [NSSet setWithObjects: artistNamePredicate, albumNamePredicate, nil];
- MPMediaQuery *specificQuery =
- [[MPMediaQuery alloc] initWithFilterPredicates: predicates];
- Listing 4-5 Testing if a property key can be used for a media property predicate
- if ([MPMediaItem canFilterByProperty: MPMediaItemPropertyGenre]) {
- MPMediaPropertyPredicate *rockPredicate =
- [MPMediaPropertyPredicate predicateWithValue: @"Rock"
- forProperty: MPMediaItemPropertyGenre];
- [query addFilterPredicate: rockPredicate];
- }
- Listing 4-6 Using grouping type to specify media item collections
- MPMediaQuery *query = [[MPMediaQuery alloc] init];
- [query addFilterPredicate: [MPMediaPropertyPredicate
- predicateWithValue: @"Moribund the Squirrel"
- forProperty: MPMediaItemPropertyArtist]];
- // Sets the grouping type for the media query
- [query setGroupingType: MPMediaGroupingAlbum];
- NSArray *albums = [query collections];
- for (MPMediaItemCollection *album in albums) {
- MPMediaItem *representativeItem = [album representativeItem];
- NSString *artistName =
- [representativeItem valueForProperty: MPMediaItemPropertyArtist];
- NSString *albumName =
- [representativeItem valueForProperty: MPMediaItemPropertyAlbumTitle];
- NSLog (@"%@ by %@", albumName, artistName);
- NSArray *songs = [album items];
- for (MPMediaItem *song in songs) {
- NSString *songTitle =
- [song valueForProperty: MPMediaItemPropertyTitle];
- NSLog (@"\t\t%@", songTitle);
- }
- }
专辑封面的使用
- Listing 4-7 Displaying album artwork for a media item
- MPMediaItemArtwork *artwork =
- [mediaItem valueForProperty: MPMediaItemPropertyArtwork];
- UIImage *artworkImage =
- [artwork imageWithSize: albumImageView.bounds.size];
- if (artworkImage) {
- albumImageView.image = artworkImage;
- } else {
- albumImageView.image = [UIImage imageNamed: @"noArtwork.png"];
- }
发表评论
-
IOS 设置组件在最上层显示
2013-01-10 16:00 5064在ipad/iphone应用中,有许多效果是两个组件需要部分重 ... -
IOS http 请求参数中中文编码
2012-12-08 18:11 6117在使用NSURLRequest 进行http的网络访问的时候, ... -
IOS HTTP 同步请求
2012-12-04 17:20 1247NSURL* url = [NSURL URLWithS ... -
performSelectorOnMainThread
2012-11-29 10:14 1004iphone开发中,在主线程之外的线程更新主线程所显示的 ... -
UIButton 按钮状态和设置
2012-11-28 12:00 1562UIButton的状态有 deault、hightlight、 ... -
ios NSLOG 格式
2012-11-23 14:33 872NSLog的格式如下所示: %@ 对象 %d, ... -
IOS 改变模态窗口大小
2012-11-15 18:45 2552每种样式的模态窗口的大小都是固定的,这个真心不好,如何改变呢, ... -
IOS Controller加载另外一个NIB文件
2012-11-13 17:45 1098[[[NSBundle mainBundle] load ... -
IOS UIColor RGB问题
2012-11-08 13:47 973iPhone RGB生成 UIColor对象 [UIColo ... -
IOS UIColor RGB问题
2012-11-08 13:47 0iPhone RGB生成 UIColor对象 [UIColo ... -
iOS 隐藏标签栏
2012-10-19 14:02 4427当前ios应用是具有标签栏的,如果点击当前应用的一个东西(例如 ... -
object-c 中for循环的两种方式
2012-09-26 11:02 7019在java中就有两种for的循环写法,同样,在oc中也有两种写 ... -
UIFont字体大全
2012-09-14 19:17 10596原文地址:UIFont 设置字体作者:青竹居士UIFont 设 ... -
IOS UILable 背景设置透明
2012-09-14 13:54 956如果将UILabel 的alpha 设置为0,label上的字 ... -
IOS 相关组件的默认高度
2012-09-13 19:03 906导航条:44像素 标签:49像素 -
IOS UIView的clipsToBounds属性
2012-09-10 17:38 6207clipsToBounds属性介绍: 值:BO ...
相关推荐
iOS 获取本地音乐 并实现播放,只能在真机上测试
获取iOS 本地音乐文件
iOS 代码,可以获取iphone本地的手机音乐,直接打开可以调试。
ios 获取IP Mac地址
ios获取网络json数据本地解析显示
iOS获取唯一标识,在不刷机的前提下,无论多次获取,还是卸载后重装程序,获取的 uuid 都不会发生改变
iOS移动应用开发 iOS 获取日期的年月日(OC).pdf 学习资料 复习资料 教学资源
iOS 获取本地通讯录 加了seatchbar可以搜索 和系统通讯录一样 右边加了indexview 可以点击跳转到指定位置
iOS 使用lame库将音频转化MP3会发现通过player获取时长与原文件时长不符,本文主要解决该问题
IOS 获取最新设备型号及当前设备及app的信息方法
ios音乐播放器 与老镇教程一致的豆瓣音乐播放器,含源码和图片等资源,希望帮到各位!由于本人积分不多了,所以分有点高,请谅解!
IOS音乐播放器
利用IOS自带SDK,获取硬件设备的MAC物理地址。可根据参数(这里利用MAC地址)进行MD5的加密处理,生成NSString字符串,并可随意截长来做UniqueIdentity
iOS获取验证码demo
iOS 获取手机通讯录的demo,很方便集成到项目,几行代码就可轻松调用 AddressBook *addressBook = [AddressBook shareAddressBook]; addressBook.delegate = self; [addressBook ...
iOS demo获取经纬度和位置信息及城市名。以及iOS8获取不成功的问题解决。
IOS获取时间戳并转化为对应格式的时间 支持多个单独时间的格式化
iOS获取iCloud图库
获取手机上所有应用的信息,支持iOS10以下。私有方法,可以获取到icon,bundle id,名称等信息。
ios获取视频长度和当前播放时间