我查看了 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];
}
最佳答案
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
请务必花时间阅读文档并注意提到的关于家庭共享的注意事项。您还需要注册有关可能不受您控制的播放器状态更改的通知。
关于iphone - 从另一个应用程序控制 iPod?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6331866/