我看了一下Apple的AddMusic
示例代码,但这不是我想要的。我正试图找到一种方法来启动/停止在iPod应用程序中播放音乐,而不是控制应用程序沙箱中包含的内容。
像这样......
____________
| |
| |< || >| | skip back, play/pause, skip forward
| |
| XXXXXXXX | album art
| XXXXXXXX |
| XXXXXXXX |
| XXXXXXXX |
| |
|____________|
当然应用程序比这更复杂,但是现在,我想专注于假设直接控制。
奖励指向任何未经cheating获取参考的人。
- 艺术品加载错误已移至a new question。
- 文字转语音实施已移至a new question。
- 歌曲开始后,进度条的填充率为100%。此代码有效:
// your must register for notifications to use them
- (void)handleNowPlayingItemChanged:(id)notification {
…
// this is what I forgot to do
NSNumber *duration = [item valueForProperty:MPMediaItemPropertyPlaybackDuration];
float totalTime = [duration floatValue];
progressSlider.maximumValue = totalTime;
…
}
// called on a one-second repeating timer
- (void)updateSlider {
progressSlider.value = musicPlayer.currentPlaybackTime;
[progressSlider setValue:musicPlayer.currentPlaybackTime animated:YES];
}
答案 0 :(得分:4)
MediaPlayer framework正是您要找的。有一个useful guide,其中还包含指向MediaPlayer API概述的链接。
具体来说,您正在寻找MPMusicPlayerController
。您的应用可以控制专用的应用媒体播放器或iPod媒体播放器,这似乎是您想要的。
一个简单的例子就是(标题省略):
@implementation MyPlaybackController
- (id)initWithNibName:(NSString *)nibName bundle:(id)bundleOrNil
{
if ((self = [super initWithNibName:nibName bundle:bundleOrNil])) {
self.musicPlayer = [MPMusicPlayerController iPodMusicPlayer];
}
return self;
}
- (IBAction)skipForward:(id)sender
{
[self.musicPlayer skipToNextItem];
}
- (IBAction)skipBack:(id)sender
{
[self.musicPlayer skipToPreviousItem];
}
- (IBAction)togglePlayback:(id)sender
{
if (self.musicPlayer.playbackState == MPMusicPlaybackStatePlaying) {
[self.musicPlayer pause];
} else {
[self.musicPlayer play];
}
}
@end
请花些时间阅读文档,并注意有关家庭共享的提醒。您还需要在控制之外的玩家状态更改中注册通知。