[UIKit] Tips 現在再生している曲を取得
MobileMusicPlayerAPIを使うと、現在再生中の曲の情報を取得できます。
ヘッダファイル(MobileMusicPlayer.h)を見ればだいたいのことは書いてありますが、取得のところでつまずいたので書いておきます。
サンプルはこの辺にあるんですが、これだとアーティスト情報しか取得できません。(後で説明。)
私もここで詰まりました。
大まかな流れはこんな感じになります。
1. 再生中の曲のindexを取得
2. IAP接続を行う。(connectionIDを取得)
3. 曲の固有ID(Identifier)を取得
4. IDからその曲の情報(アーティスト名や曲名など)を取得
5. 3に戻り、別の情報を取得
ここで、曲の情報を取得する前に必ずIDを取得しておきます。
IDは一回取得するだけで良いように思われますが、毎回取得しないと正しく曲の情報が取得できませんでした。上のサンプルも同様です。
サンプル
一度、情報を取得してしまえば、NSStringのオブジェクトとして初期化して普通に扱えますね。
エンコーディングはUTF8なようです。
それから、他にも曲のスキップなんかもできるみたいです。(未検証)
いずれはやってみたいと思いますが。
ヘッダファイル(MobileMusicPlayer.h)を見ればだいたいのことは書いてありますが、取得のところでつまずいたので書いておきます。
サンプルはこの辺にあるんですが、これだとアーティスト情報しか取得できません。(後で説明。)
私もここで詰まりました。
大まかな流れはこんな感じになります。
1. 再生中の曲のindexを取得
2. IAP接続を行う。(connectionIDを取得)
3. 曲の固有ID(Identifier)を取得
4. IDからその曲の情報(アーティスト名や曲名など)を取得
5. 3に戻り、別の情報を取得
ここで、曲の情報を取得する前に必ずIDを取得しておきます。
IDは一回取得するだけで良いように思われますが、毎回取得しないと正しく曲の情報が取得できませんでした。上のサンプルも同様です。
サンプル
//曲のindexを取得
int songIndex = PCPlayerGetCurrentPlayingSong();
if (songIndex < 0) {
//再生していない
return;
}
//IAP接続開始
int connection = PCCreateIAPConnection();
if (connection == 0) {
//再生していないか接続失敗
return;
}
//アーティストを取得
char* tmp;
ident = PCPlayerGetIdentifierAtIndex(NULL, songIndex);
tmp = PCCopyStringValueForPropertyForIdentifier(connection, kPropertyArtist, ident);
_currentArtist = [NSString stringWithUTF8String:tmp];
//曲名を取得
ident = PCPlayerGetIdentifierAtIndex(NULL, songIndex);
tmp = PCCopyStringValueForPropertyForIdentifier(connection, kPropertySongTitle, ident);
_currentTitle = [NSString stringWithUTF8String:tmp];
//接続を閉じる
PCCloseConnection(connection);
一度、情報を取得してしまえば、NSStringのオブジェクトとして初期化して普通に扱えますね。
エンコーディングはUTF8なようです。
それから、他にも曲のスキップなんかもできるみたいです。(未検証)
いずれはやってみたいと思いますが。
コメント
re:
>>moyashiさん
どうもです。
pauseとplayはPCSetPlaybackStateとかですかね。
僕は曲のスキップがしたいんですが、この辺は低レベルな層なので良くわからんですね。
どうもです。
pauseとplayはPCSetPlaybackStateとかですかね。
僕は曲のスキップがしたいんですが、この辺は低レベルな層なので良くわからんですね。
なるほど。
情報ありがとうございます。やっぱりナゼ?って思いましたか。これで何かできそうです。
pauseとplayができないかと思ってるんですが、AVController.hの奴はMobileMusicPlayerとは関係無いみたいですし。でもplayaudioでやっているから方法はあるんでしょうね。
pauseとplayができないかと思ってるんですが、AVController.hの奴はMobileMusicPlayerとは関係無いみたいですし。でもplayaudioでやっているから方法はあるんでしょうね。
コメントの投稿
トラックバック
http://novi.10.dtiblog.com/tb.php/181-c626f00b


PCSetPlaybackState(NULL, kPlayerPaused);
などでコントロールOKでした。
kPlayerStoppedにすると、kPlayerPlayingで再生できなくなっちゃいますね。
pauseと再開ができれば十分なんでいいですが。
ともあれ、どうもありがとうございます。