2011-06-13 48 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 

不要花時間閱讀本細則,並採取注意到關於家庭共享提到的需要注意的地方。您還需要註冊通知,以更改可能從您的控制範圍外發生的玩家狀態。

相關問題