2011-06-13 27 views
9

我看了一下Apple的AddMusic示例代码,但那不是我想要的。我试图找到一种方法来启动/停止在iPod应用中播放音乐,而不是控制应用沙盒中包含的内容。从另一个应用程序控制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]; 
} 
+4

+1使用ASCII艺术! – 2011-06-13 15:55:31

+0

我已经建立了这个应用程序。但从来没有完成它。使用bonjour与第一个应用程序交谈......伟大的思想...... – 2011-06-14 14:20:01

回答

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 

不要花时间阅读本细则,并采取注意到关于家庭共享提到的需要注意的地方。您还需要注册通知,以更改可能从您的控制范围外发生的玩家状态。

相关问题