Unity から iTunes のステータスを知るほうほう

  • 12
    Like
  • 0
    Comment
More than 1 year has passed since last update.

iTunes 内部の情報

Cocoa で iTunes のステータス(現在再生中の曲名とか時間とか)を得るには Scripting Bridge をつかう。

Using Scripting Bridge
https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ScriptingBridgeConcepts/UsingScriptingBridge/UsingScriptingBridge.html

ターミナルで

sdef /Applications/iTunes.app | sdp -fh --basename iTunes

ってやると iTunes.h っていうヘッダーファイルができあがる。import してごにょごにょ。

再生時間を得るには
#import "iTunes.h"
iTunesApplication *iTunes = [SBApplication applicationWithBundleIdentifier:@"com.apple.iTunes"];
double position = iTunes.playerPosition;

ちょーかんたん。

iTunes.currentTrack.artist ってやればアーティストとれる。ほかにもいっぱいとれる情報ある。iTunes.h みるよろし。

iTunes の動作イベント

再生開始したとか停止したとかのイベントを外から知るには、てきとうにとんでる Notification をつかまえればよい。

見えない通知を捕まえて通知駆動アプリケーションを作る - ザリガニが見ていた...。
http://d.hatena.ne.jp/zariganitosh/20120918/notification_driven_applescript

- (void)setup
{
  [[NSDistributedNotificationCenter defaultCenter] addObserver:self
                                                      selector:@selector(updateTrackInfoFromITunes:)
                                                          name:@"com.apple.iTunes.playerInfo"
                                                        object:nil];
}

- (void)updateTrackInfoFromITunes:(NSNotification *)notification
{
  NSLog(@"%@", notification.userInfo);
}

再生開始・停止のタイミングで通知とんでくる。userInfo にいろいろ情報はいってる。

Plugin にする

Example の Simplest Plugin を参考に↑のいろいろをまとめる。ARC が使えないのでメモリ管理ちゃんとやらないとすぐに Unity 落ちる。。。

ソースコード

こちら。
https://github.com/Saqoosha/UnityiTunes