- 浏览: 379755 次
- 性别:
- 来自: 北京
-
文章分类
最新评论
-
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 5179在ipad/iphone应用中,有许多效果是两个组件需要部分重 ... -
IOS http 请求参数中中文编码
2012-12-08 18:11 6147在使用NSURLRequest 进行http的网络访问的时候, ... -
IOS HTTP 同步请求
2012-12-04 17:20 1315NSURL* url = [NSURL URLWithS ... -
performSelectorOnMainThread
2012-11-29 10:14 1035iphone开发中,在主线程之外的线程更新主线程所显示的 ... -
UIButton 按钮状态和设置
2012-11-28 12:00 1616UIButton的状态有 deault、hightlight、 ... -
ios NSLOG 格式
2012-11-23 14:33 944NSLog的格式如下所示: %@ 对象 %d, ... -
IOS 改变模态窗口大小
2012-11-15 18:45 2626每种样式的模态窗口的大小都是固定的,这个真心不好,如何改变呢, ... -
IOS Controller加载另外一个NIB文件
2012-11-13 17:45 1176[[[NSBundle mainBundle] load ... -
IOS UIColor RGB问题
2012-11-08 13:47 1078iPhone RGB生成 UIColor对象 [UIColo ... -
IOS UIColor RGB问题
2012-11-08 13:47 0iPhone RGB生成 UIColor对象 [UIColo ... -
iOS 隐藏标签栏
2012-10-19 14:02 4481当前ios应用是具有标签栏的,如果点击当前应用的一个东西(例如 ... -
object-c 中for循环的两种方式
2012-09-26 11:02 7123在java中就有两种for的循环写法,同样,在oc中也有两种写 ... -
UIFont字体大全
2012-09-14 19:17 10712原文地址:UIFont 设置字体作者:青竹居士UIFont 设 ... -
IOS UILable 背景设置透明
2012-09-14 13:54 1050如果将UILabel 的alpha 设置为0,label上的字 ... -
IOS 相关组件的默认高度
2012-09-13 19:03 1016导航条:44像素 标签:49像素 -
IOS UIView的clipsToBounds属性
2012-09-10 17:38 6340clipsToBounds属性介绍: 值:BO ...
相关推荐
TapkuLibrary是一款专门为iOS平台设计的UI效果类库,它为开发者提供了丰富的用户界面元素和交互效果,使得在iOS应用开发中实现炫酷且高效的功能变得更加便捷。这个库深受开发者喜爱,因为它极大地拓展了标准UIKit的...
音乐播放器是一款自制品,虽然在视觉效果上可能并不追求华丽炫酷,但其核心在于提供了全面的功能,满足用户对音乐播放的各种需求。这款播放器是开发者与技术爱好者交流技术的平台,展现了作者对音频处理和用户体验...
首先,你需要下载“酷音铃声”APP来获取你喜欢的音乐作为新的铃声。这个应用提供了大量的个性化铃声供用户选择,你可以根据自己的喜好挑选。 接着,你需要将选定的音乐同步到iCloud Drive。在iPhone的设置中启用...
1. **Widget技术**:Widget是操作系统如Android、iOS等中常见的一种功能,用户可以通过Widget快速访问应用功能,无需打开完整应用。它们通常显示在主屏幕上,可以实时更新内容,如天气预报、新闻摘要、音乐播放控制...
这可以通过音频编辑软件完成,比如手机上的“酷音铃声”、“音乐剪辑”等应用,或者电脑端的专业软件如Audacity。 5. **版权问题**:使用第三方音频,特别是来自电影、动漫的片段作为铃声时,需要注意版权问题。...
它提供了丰富的功能,包括精灵管理、炫酷的图形效果、动画支持、物理引擎以及音频处理,让开发者能够在创建iOS游戏时节约大量时间。 在本教程中,我们将通过一个简单的忍者射击游戏实例,逐步学习如何使用Cocos2D。...
SpriteKit 是苹果公司为其iOS和macOS平台开发的一款2D游戏引擎,用于创建高质量的图形和交互式游戏。在这个“划线弹小球游戏”中,我们可以通过编程实现一个简单的休闲游戏,玩家需要通过在屏幕上划线来控制一个小球...
整个LED显示效果由部署在服务器(Windows/Mac/Raspberry/IOS/Android)processing语言生成,processing 的sketch实例能够通过采样点转换位图。树莓派作为服务器的角色,给fadecandy传输指令从而间接驱动灯条。采样点...