iphone - 从另一个应用程序控制 iPod?

标签 iphone objective-c media-player ipod

我查看了 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/

相关文章:

iphone - 使用 iPhone 的模态登录 View

android - 在 VideoView 上绘画

Android Studio Mediaplayer如何淡入淡出

iphone - iPhone 中何时调用触摸取消方法?

iphone - 在 IOS 上使用 AFNetworking 流式传输 JSON

objective-c - 我的应用程序崩溃并关闭,关于原因的信息很少

iphone - 如何知道用户更喜欢英里还是公里?

java - 从 WearOS Watch 控制手机上的媒体

iphone - 加快 EKEvents 的获取速度

iphone - 如何在不挤压背景图像的情况下扩展 UIButton 的 hitTest 区域?