12
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

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

12
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?