问题
I am developing a mac application that involves audio playback. I would like to pause other audio players when our playback starts.
how can I
1) detect that itunes is running
2) detect that itunes is currently playing
3) pause itunes
4) resume itunes when I am done
also:
5) Is the a way to pause other types of media playback as well? audio and video in the in the browser for example?
回答1:
You can do that with the following code which is using 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;
}
The file iTunes.h
is generated by running sdef /Applications/iTunes.app | sdp -fh --basename iTunes
from a commandline. The error unknown type name "tdta"
can be ignored.
You also need to add ScriptingBridge.framework to the linked frameworks.
Here is also a link to the ScriptingBridge documentation.
回答2:
1) detect that itunes is running
NSRunningApplication or Process Manager.
2) detect that itunes is currently playing
3) pause itunes
4) resume itunes when I am done
Scripting Bridge.
5) Is the a way to pause other types of media playback as well?
That depends on the application.
audio and video in the in the browser for example?
No.
回答3:
Maybe creating an AppleScript can solve the problem?
Check this out:
http://dougscripts.com/itunes/
or some command line scripts?:
http://www.macosxhints.com/article.php?story=20011108211802830
来源:https://stackoverflow.com/questions/3452555/control-itunes-from-a-cocoa-application