- 浏览: 375769 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
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 5133在ipad/iphone应用中,有许多效果是两个组件需要部分重 ... -
IOS http 请求参数中中文编码
2012-12-08 18:11 6135在使用NSURLRequest 进行http的网络访问的时候, ... -
IOS HTTP 同步请求
2012-12-04 17:20 1290NSURL* url = [NSURL URLWithS ... -
performSelectorOnMainThread
2012-11-29 10:14 1023iphone开发中,在主线程之外的线程更新主线程所显示的 ... -
UIButton 按钮状态和设置
2012-11-28 12:00 1593UIButton的状态有 deault、hightlight、 ... -
ios NSLOG 格式
2012-11-23 14:33 911NSLog的格式如下所示: %@ 对象 %d, ... -
IOS 改变模态窗口大小
2012-11-15 18:45 2595每种样式的模态窗口的大小都是固定的,这个真心不好,如何改变呢, ... -
IOS Controller加载另外一个NIB文件
2012-11-13 17:45 1137[[[NSBundle mainBundle] load ... -
IOS UIColor RGB问题
2012-11-08 13:47 1032iPhone RGB生成 UIColor对象 [UIColo ... -
IOS UIColor RGB问题
2012-11-08 13:47 0iPhone RGB生成 UIColor对象 [UIColo ... -
iOS 隐藏标签栏
2012-10-19 14:02 4457当前ios应用是具有标签栏的,如果点击当前应用的一个东西(例如 ... -
object-c 中for循环的两种方式
2012-09-26 11:02 7087在java中就有两种for的循环写法,同样,在oc中也有两种写 ... -
UIFont字体大全
2012-09-14 19:17 10657原文地址:UIFont 设置字体作者:青竹居士UIFont 设 ... -
IOS UILable 背景设置透明
2012-09-14 13:54 1013如果将UILabel 的alpha 设置为0,label上的字 ... -
IOS 相关组件的默认高度
2012-09-13 19:03 969导航条:44像素 标签:49像素 -
IOS UIView的clipsToBounds属性
2012-09-10 17:38 6292clipsToBounds属性介绍: 值:BO ...
相关推荐
在iOS平台上,获取本地音乐文件并进行播放是开发音视频应用的一个重要环节。这个过程涉及到多媒体框架、文件系统操作以及音频播放控制等多个方面。本文将详细介绍如何在iOS中实现这一功能,并提供相关知识点。 首先...
在iOS开发中,获取手机本地音乐是常见的需求,这通常涉及到多媒体编程,特别是与Apple的Media Library服务交互。本文将详细介绍如何使用Objective-C或Swift语言来实现这一功能,以及涉及的相关知识点。 首先,我们...
在iOS开发中,获取本地音乐是一项常见的需求,特别是在构建音乐播放类应用时。这个"iOS 获取本地音乐Demo"提供了一个示例,展示了如何访问并管理用户的设备音乐库。以下是关于这个主题的详细知识: 首先,我们需要...
在iOS平台上,开发一款音乐播放器是许多开发者和爱好者热衷的项目,特别是与知名服务如豆瓣音乐结合的播放器。本项目名为“ios豆瓣音乐播放器”,它提供了完整的源码和图片资源,旨在帮助开发者学习和理解如何构建...
iOS获取唯一标识,在不刷机的前提下,无论多次获取,还是卸载后重装程序,获取的 uuid 都不会发生改变
在iOS开发中,音频处理是一项常见的任务,尤其是在创建音乐应用或者需要播放、转换音频的场景。本篇文章将深入探讨在iOS中使用lame库进行音频转换为MP3格式时遇到的时长获取不准确的问题,并提供解决方案。 首先,...
在iOS开发中,获取视频长度和当前播放时间是多媒体应用中的常见需求,尤其是在视频播放器、社交媒体、在线教育等场景下。以下将详细介绍如何在iOS中实现这一功能,包括使用的框架、具体步骤以及代码示例。 ### 使用...
在iOS开发中,获取设备的IP地址和MAC地址是常见的需求,这主要涉及到网络编程和系统接口调用。本文将详细讲解如何在iOS平台上获取这两种关键的网络标识。 首先,让我们了解一下IP地址和MAC地址的基本概念。IP地址...
本教程将详细讲解如何在iOS中获取设备名称,以及涉及到的相关知识点。 首先,我们需要理解iOS设备模型的表示方式。苹果设备的名称通常由一系列型号标识符组成,例如"iPhone6,1"或"iPad4,7"。这些标识符并不直接对应...
标题“iOS播放音乐库音乐 播放系统音乐 IPod音乐库音乐”所提及的核心技术点是利用iOS的媒体播放框架来访问并播放用户设备上的音乐库音乐,以及系统内置的音乐。这通常涉及到苹果的Media Player框架(MediaPlayer....
在iOS开发中,获取本地IP和路由器IP是常见的需求,特别是在网络通信或者设备间互动的场景下。本文将深入探讨如何在iOS应用中实现这一功能,并介绍相关技术知识点。 首先,我们要了解网络接口(network interface)...
IOS 获取最新设备型号及当前设备及app的信息方法
"iOS获取拼音首字母"这个话题正是围绕这一需求展开的。通过一行代码快速获取汉字拼音首字母,开发者可以轻松实现基于拼音的中文字符串排序,从而提供更符合用户习惯的界面体验。 首先,我们要了解iOS中实现这个功能...
在iOS平台上开发一款音乐播放器是一项技术性强且充满挑战的任务,因为这涉及到音频处理、用户界面设计、多媒体库集成以及iOS平台的特定编程规范。以下是一些关于"iOS音乐播放器"开发的关键知识点: 1. **...
在iOS开发中,有时我们需要获取设备的唯一标识符来实现特定功能,如用户跟踪或个性化设置。虽然UDID(Unique Device Identifier)曾是常见的选择,但出于隐私保护的原因,Apple在后来的iOS版本中禁止了直接访问UDID...
在iOS开发中,有时我们需要获取用户设备上安装的所有应用程序的相关信息,例如应用的bundle ID、图标(icon)、名称等。这个任务通常对于系统分析、数据分析或者个性化推荐等场景很有用。在提供的标题和描述中,提到...
iOS 崩溃日志获取方法 iOS 崩溃日志获取是 iOS 开发和测试中非常重要的一步,能够帮助开发者和测试人员快速定位崩溃原因,提高应用程序的稳定性和可靠性。下面将详细介绍获取 iOS 崩溃日志的方法。 什么是崩溃日志...
在iOS开发中,与键盘相关的交互是不可或缺的一部分。本文将深入探讨如何在iOS应用中获取并处理系统键盘,包括键盘的高度和弹出速度,以及如何实现与第三方键盘的兼容。 首先,我们需要理解iOS中的键盘机制。苹果...
【iOS自制音乐播放器】项目概述 iOS自制音乐播放器是一款专为苹果设备设计的应用程序,它能够提供本地音乐播放以及在线音乐流媒体服务。该播放器具备音乐下载功能,并支持断点续传,这意味着用户在下载过程中即使...
在iOS开发中,获取设备的系统信息是一项常见的需求,这对于调试、日志记录以及提供个性化用户体验都至关重要。本文将深入探讨如何使用Objective-C(OC)语言来获取iPhone或iPad的系统版本号、MAC地址等关键数据信息...