【发布时间】:2011-03-28 00:33:58
【问题描述】:
我正在开发一个涉及音频播放的 mac 应用程序。 我想在播放开始时暂停其他音频播放器。
我该怎么做
1) 检测 iTunes 正在运行
2) 检测到 iTunes 当前正在播放
3) 暂停 iTunes
4) 完成后恢复 iTunes
还有:
5)是否也可以暂停其他类型的媒体播放?比如浏览器中的音频和视频?
【问题讨论】:
我正在开发一个涉及音频播放的 mac 应用程序。 我想在播放开始时暂停其他音频播放器。
我该怎么做
1) 检测 iTunes 正在运行
2) 检测到 iTunes 当前正在播放
3) 暂停 iTunes
4) 完成后恢复 iTunes
还有:
5)是否也可以暂停其他类型的媒体播放?比如浏览器中的音频和视频?
【问题讨论】:
也许创建一个 AppleScript 可以解决这个问题?
看看这个:
http://dougscripts.com/itunes/
或一些命令行脚本?:
http://www.macosxhints.com/article.php?story=20011108211802830
【讨论】:
1) 检测到 iTunes 正在运行
NSRunningApplication 或Process Manager。
2) 检测到 iTunes 当前正在播放
3) 暂停 iTunes
4) 完成后恢复 iTunes
5) 是否也可以暂停其他类型的媒体播放?
这取决于应用程序。
以浏览器中的音频和视频为例?
没有。
【讨论】:
您可以使用以下使用 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;
}
文件iTunes.h 是通过从命令行运行sdef /Applications/iTunes.app | sdp -fh --basename iTunes 生成的。错误unknown type name "tdta"可以忽略。
您还需要将 ScriptingBridge.framework 添加到链接的框架中。
这里也是ScriptingBridge documentation的链接。
【讨论】: