novi's Blog

Mac、iPod、オーディオなどの覚え書き

[UIKit] Tips 現在再生している曲を取得

MobileMusicPlayerAPIを使うと、現在再生中の曲の情報を取得できます。
ヘッダファイル(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なようです。

それから、他にも曲のスキップなんかもできるみたいです。(未検証)
いずれはやってみたいと思いますが。

歌詞アプリ Lyrics v0.01

買い物に行ったりと一日遊んでいました。
久しぶりにいったわけですよ。服とかなんとかを買いに。

それはよくて、とりあえずLyricsを更新しましたので置いておきます。

変更点
・うたまっぷの追加
・Sing365.com の追加
・()や〜〜などで囲まれた無駄な文字を削除
設定パネルやら何やらは後回しで。

まだ、野良リポジトリには登録されていないので早く使いたい人はこちらからダウンロードしてください。

あと、これからテストがあるので、あんまり更新できないかもです。
いろいろいじくりたいんですけどねぇー。
勉強しないと授業も聞いていないし...ちょっとヤバい。

今夜は雪かな

ひじょーに寒いです。さっきから雪降ってるし...

Google Code に登録してきました。
これで配布とソースの管理ができるぞ。と思ったら、うちの回線だとsvn使えないんだった。
cvsなら通るのに...

http://code.google.com/p/lyrics-app/

とりあえず、Sing365.com と うたまっぷ に対応させました。まだ細かいところを作っていないので公開はもう少しあとになりますが。
他はもう分からないので母艦でゲットして転送してやってくださいw

まあ、いってもらえればやりますけど。歌詞サイトなんてどこも同じで良くわからないんですよね。
しかも自分はほとんど歌詞のある曲は聴かないし。なんでこんなもん作ったんでしょうかねww

[UIKit] Tips テーブルセル

せっかくなのでLyrics.appに使っているUIKitのTipsみたいなものを書いていきます。

テーブルの作り方はCocoaDevを参照。
UIImageAndTextTableCellは重いので簡単なものならUISimpleAndTableCellを使います。
アイコンもセットできるらしい。(ヘッダ参照。)

データソースサンプル
cellには必ずautoreleaseを送ること。これをやらないと表示されなくなったものが解放されずに、リークします。

- (int)numberOfRowsInTable:(UITable*)table {
return 10;
}

- (UITableCell*)table:(UITable*)table cellForRow:(int)row column:(int)col {
//セルを作成
UISimpleTableCell* cell = [[UISimpleTableCell alloc] init];
[cell autorelease];

// タイトル取得
NSString* title = @"Title is ..."

//セル設定
[cell setTitle:title];
//矢印のスタイルと表示
[cell setDisclosureStyle:2];
[cell setShowDisclosure:YES];

return cell;
}


Lyrics.app 転送ツール ver1.1

転送ツールをバージョンアップしました。
Leopard・Tigerに対応しました。

ダウンロードはこちら。(拡張子.zip)

 | HOME |  »

プロフィール


novi


Author:novi
学生。♂。
飽きやすいのでネタがころころ変わります。最近は iPhone の hack と工作。










月別アーカイブ


検索フォーム


今日の献立


DTIミニモブログ


DTIブログ
ブログでアフィリエイト


DTIブログポータルへ

このブログを通報

カレンダー

10 | 2007/11 | 12
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -

Twitter


follow novi_ at http://twitter.com


カテゴリー


最近のエントリー


最近のコメント


最近のトラックバック


なかのひと


ジオターゲティング


ジオターゲティング


リンク


RSSリンク


PoweredBy

Powered By DTIブログ