今回のチュートリアルは、ipod(iphone&ipad未検証)のミュージックプレイヤーで再生中の曲の情報を取り出して、表示させる方法を説明します。
XCode を起動し、View Based Application で新規プロジェクトを作成します。
このチュートリアル内では、「Song」という名前で保存しました。
音楽、動画などといったメディアアイテムは、ユーザがデスクトップのiTunesと同期した際にデバイス上にコピーされます。 デバイス上のメディアアイテムの一式をiPodライブラリ(iPod library)と呼びます。これらのアイテムを扱うために、MediaPlayerフレームワークを追加します。XCode 内のフレームワークに、「MediaPlayer.framework」を追加してください。
SongViewController.h を開き、以下のコードを追加してください。
#import <UIKit/UIKit.h>
#import <MediaPlayer/MediaPlayer.h>
@interface SongViewController : UIViewController {
IBOutlet UILabel *songTitleLabel;
IBOutlet UILabel *songArtistLabel;
IBOutlet UILabel *songAlbumLabel;
}
@property (nonatomic, assign) IBOutlet UILabel *songTitleLabel;
@property (nonatomic, assign) IBOutlet UILabel *songArtistLabel;
@property (nonatomic, assign) IBOutlet UILabel *songAlbumLabel;
@end
上記のコードは、簡単かと思いますが、最初にMediaPlayer.framework が使えるようにインポートしています。そして、取得した曲情報を view上に表示させるために、ラベルを3つ設定しています。表示内容は、ラベル名を見れば分かりますが、曲のタイトル、アルバム名、アーティスト名です。
次に、songViewController.m を開き、以下のコードを追加します。
#import “SongViewController.h”
@implementation SongViewController
@synthesize songArtistLabel, songTitleLabel, songAlbumLabel;
さらに、viewDidLoad メソッドを以下のように編集します。
MPMusicPlayerController *player = [MPMusicPlayerController iPodMusicPlayer];
MPMediaItem *nowPlayingItem = [player nowPlayingItem];
songTitleLabel.text = [nowPlayingItem valueForProperty:MPMediaItemPropertyTitle];
songAlbumLabel.text = [nowPlayingItem valueForProperty:MPMediaItemPropertyAlbumTitle];
songArtistLabel.text = [nowPlayingItem valueForProperty:MPMediaItemPropertyArtist];
MPMediaItemクラス
参考サイト
http://developer.apple.com/library/ios/#documentation/MediaPlayer/Reference/MPMediaItem_ClassReference/Reference/Reference.html
http://blog.livedoor.jp/second_flush/archives/51141605.html#MPMediaItemPropertyPersistentID
songViewController.m
メソッドvalueForPropertyが必要ではありませんか?
これがないと警告がでます。
songTitleLabel.text
= [nowPlayingItem valueForProperty:MPMediaItemPropertyTitle];
songAlbumLabel.text
= [nowPlayingItem valueForProperty:MPMediaItemPropertyAlbumTitle];
songArtistLabel.text
= [nowPlayingItem valueForProperty:MPMediaItemPropertyArtist];
またまた見たひとより さん>ご訪問&貴重なコメントありがとうございます。
基本的には、私の手元で動作確認したものを記事にしているのですが、バージョンの違いなどに関する警告でしょうか。該当メソッドが実装されてないことに関する警告でしょうか。
先ほど、xcode3.2.5で動作確認してみましたが、私の手元のiphoneでは警告もなく正常に動きました。
ん〜なんででしょう。。。
本件とは関係ないかと思いますが、
[nowPlayingItem valueForProperty:MPMediaItemPropertyTitle];
などのvalue…の前にスペースが入ってなかったので、修正しました。