从cocoa应用程序控制iTunes

13

我正在开发一个涉及音频播放的Mac应用程序。 当我们的播放开始时,我希望暂停其他音频播放器。

如何实现:
1) 检测iTunes是否在运行
2) 检测iTunes当前是否正在播放
3) 暂停iTunes
4) 当完成后恢复iTunes

另外:
5) 是否有方法暂停其他类型的媒体播放?例如浏览器中的音频和视频?

3个回答

18
你可以使用下面的代码,它使用ScriptingBridge实现:
#import "iTunes.h"
#import "Cocoa/Cocoa.h"

int main()
{
  iTunesApplication* iTunes = [SBApplication applicationWithBundleIdentifier:@"com.apple.iTunes"];

  // check if iTunes is running (Q1)
  if ([iTunes isRunning])
  {
    // pause iTunes if it is currently playing (Q2 and Q3)
    if (iTunesEPlSPlaying == [iTunes playerState])
      [iTunes playpause];

    // do your stuff

    // start playing again (Q4)
    [iTunes playpause];
  }
  return 0;
}

运行命令 sdef /Applications/iTunes.app | sdp -fh --basename iTunes 可以生成文件 iTunes.h。 如果出现错误 unknown type name "tdta",可以忽略。

您还需要将 ScriptingBridge.framework 添加到链接的框架中。

这里还有一个 ScriptingBridge 文档链接


什么是iTunesEPlSPlaying?有没有一种方法可以使用Swift检测音频是否正在播放? - quemeful
playerState 是什么数据类型? - quemeful

5

1) 检测 iTunes 是否正在运行

可以使用 NSRunningApplication 或者 Process Manager

2) 检测 iTunes 是否正在播放
3) 暂停 iTunes
4) 在完成后恢复 iTunes

可以使用 Scripting Bridge

5) 还有其他媒体播放方式可以暂停吗?

这取决于应用程序。

例如浏览器中的音频和视频?

不行。


2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接