今回のチュートリアルは、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];

現在再生中のミュージックプレイヤーを設定し、再生中の曲情報を取得しています。
(今回は、取得していませんが、歌詞を表示する場合は、MPMediaItemPropertyLyrics を使います。MPMediaItem の各プロパティについて詳しく知りたい方は、一番下に参考サイトを載せているので、参照してください。)
ここで取得した曲情報を view 上に表示させるために、Interface Builder を起動(SongViewController.xib をダブルクリック)し、view 上にラベルを三つ配置します。
そして、配置したラベルとXCode上に宣言したIBOutlet を接続します。
ここまで完了したら、ビルド&実行します。デバイス上でアプリケーションを起動すると、プレイヤーで再生中の曲が表示されます。
注意点としては、シミュレータには、再生中の音楽情報がないので、何も表示されません。
また、再生中の曲に歌詞が設定されているにもかかわらず、歌詞が表示されないのは、ipodから一度貸し表示させることで、歌詞が取得可能になると思います。が、これでは、あまり実用的ではありませんね。。。AVURLAssetのlyricsプロパティなら取得可能(?)。

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

この投稿へのコメント

    1. またまた見たひとより より:

      songViewController.m
      メソッドvalueForPropertyが必要ではありませんか?
      これがないと警告がでます。
      songTitleLabel.text
      = [nowPlayingItem valueForProperty:MPMediaItemPropertyTitle];

      songAlbumLabel.text
      = [nowPlayingItem valueForProperty:MPMediaItemPropertyAlbumTitle];

      songArtistLabel.text
      = [nowPlayingItem valueForProperty:MPMediaItemPropertyArtist];

    2. admin より:

      またまた見たひとより さん>ご訪問&貴重なコメントありがとうございます。
      基本的には、私の手元で動作確認したものを記事にしているのですが、バージョンの違いなどに関する警告でしょうか。該当メソッドが実装されてないことに関する警告でしょうか。

      先ほど、xcode3.2.5で動作確認してみましたが、私の手元のiphoneでは警告もなく正常に動きました。

      ん〜なんででしょう。。。

      本件とは関係ないかと思いますが、
      [nowPlayingItem valueForProperty:MPMediaItemPropertyTitle];
      などのvalue…の前にスペースが入ってなかったので、修正しました。

コメントを残す

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます。
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

CAPTCHA


ピックアップ記事

WordPressのURL(パーマリンクの設定)

2009年11月20日 過去Blog
当サイトの記事は「http://yamazon.org/zencart/76」といったURLになっていますが、このように「ドメイン名/カテゴリ名/記事ID」の階層をもったURLにするためには Wordpressの管理画面内の「設定」>「パーマリンク設定」の中の「一般的な設定」内の「カスタム構造」を選択し、「/%category%/%post_id%」と指定します。 もっと詳しいパーマリンクの使…
「WordPressのURL(パーマリンクの設定)」をはてなブックマークに追加

iPhoneのメールの受信エラー[ “i.softbank.jp” が応答しません]

2010年12月29日 過去Blog
twitterでも始めようかと思い、iPhoneから登録作業をしてたのですが、twitterに空メールを送った後に、以下のエラーが出てきて、送られてくるメールが受信出来ない状態になりました。 「imap.softbank.jp」が応答しません。メール設定で入力されているアカウント情報が正しい事を確認してください。 …
「iPhoneのメールの受信エラー[ “i.softbank.jp” が応答しません]」をはてなブックマークに追加

Macで顔文字を使う

2011年02月28日 過去Blog
windowsでは使う事も多かった顔文字もmacでは、特に使わないままで、やってきましたが、最近macでメールする事も増えてきて、顔文字を使いたいと思うようになったので、その設定のメモです。 1.顔文字辞書ダウンロード まず、顔文字辞書をダウンロードします。 今回は、こちらとこちらを利用させてもらいました。 2.ことえりに登録する ダウンロードしたファイルを解凍します。 その中から、必要な辞書…
「Macで顔文字を使う」をはてなブックマークに追加

ABPeoplePickerNavigationControllerのキャンセルボタンを無効にし、新規追加ボタンを実装する

2011年01月17日 過去Blog
viewController内に以下のようにインターフェースを宣言します。 @interface ABPeoplePickerNavigationController (Expose) @property (nonatomic, assign) BOOL allowsCancel; @property (nonatomic, assign) BOOL allowsCardEditing; @end 同じファイル内に、以下のように設定します。 ABPeoplePickerNavigationController *contactsNavController = [[ABPeoplePickerNavigationController alloc] init]; contactsNavController.tabBarItem.title = @"連絡先"; contactsNavController.allowsCancel = NO; contactsNavController.allowsCardEditing = YES; contactsNavController.peoplePickerDelegate=self; …
「ABPeoplePickerNavigationControllerのキャンセルボタンを無効にし、新規追加ボタンを実装する」をはてなブックマークに追加

データベースに機種依存文字の入ったCSVデータをインポート

2010年05月19日 過去Blog
phpMyAdminにて、データベース側にインポートする際、エンコードの設定を「cp932」に設定することで、機種依存文字を文字化けせずにインポートすることが可能になります。 *今回は、機種依存文字を含むsjisのCSVをutf8のデータベースにインポートしました。 参考サイト:http://smiu2it.blog.so-net.ne.jp/2009-04-16
「データベースに機種依存文字の入ったCSVデータをインポート」をはてなブックマークに追加
© graffiti on the web . All rights reserved. WordPress Theme by comfy