2010-08-10 14 views
13

Sto sviluppando un'applicazione mac che prevede la riproduzione audio. Vorrei mettere in pausa altri lettori audio quando inizia la riproduzione.Controllo iTunes da un'applicazione di cacao

come posso
1) rilevare che iTunes sia in esecuzione
2) rilevare che iTunes è al momento giocando
3) mettere in pausa iTunes
4) riprendere iTunes quando mi sono fatto

anche:
5) È un modo per mettere in pausa anche altri tipi di riproduzione multimediale? audio e video nel browser, ad esempio?

risposta

18

Potete farlo con il seguente codice che sta usando 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; 
} 

Il file iTunes.h generato eseguendo sdef /Applications/iTunes.app | sdp -fh --basename iTunes da una linea di comando. L'errore unknown type name "tdta" può essere ignorato.

È inoltre necessario aggiungere ScriptingBridge.framework ai framework collegati.

Questo è anche un collegamento allo ScriptingBridge documentation.

+0

cos'è iTunesEPlSPlaying? e c'è un modo per rilevare se l'audio sta giocando con swift? – quemeful

+0

quale tipo di dati è playerState? – quemeful

5

1) rilevano che iTunes sia in esecuzione

NSRunningApplication o Process Manager.

2) rilevare che iTunes è al momento giocando
3) mettere in pausa iTunes
4) riprendere iTunes quando mi sono fatto

Scripting Bridge.

5) È il modo di mettere in pausa anche altri tipi di riproduzione multimediale?

Dipende dall'applicazione.

audio e video nel browser, ad esempio?

No.

Problemi correlati