サイト移転のお知らせ:http://techbooster.org/に移転しました

MediaMetadataRetrieverを使ってメディアファイルのメタ情報を取得する

2月 9, 2011   //   by kkato   //   マルチメディア  //  No Comments

今回はAndroid2.3.3(APIレベル10)から追加されたandroid.media.MediaMetadataRetrieverクラスを使ってメディアファイルのメタ情報を取得する方法を説明します。

メタ情報とはJPEGでいうExif情報みたいなもので、MP3などのメディアファイルのアルバム名やアーティスト名などのことです。

それでは続きで説明していきます。

2011/4/11修正

メタ情報を取得するメディアファイルの指定

まずMediaMetadataRetrieverクラスのインスタンスを取得します。そしてそのインスタンスに対してsetDataSourceメソッドでメディアファイルを指定します。ファイルディスクリプタ、パス名、URIで指定することができます。

public void setDataSource (FileDescriptor fd, long offset, long length)
public void setDataSource (String path)
public void setDataSource (FileDescriptor fd)
public void setDataSource (Context context, Uri uri)

サンプルコードではパス名を指定しています。

メタ情報の取得

MediaMetadataRetrieverクラスのextractMetadataメソッドを利用します。引数に取得するメタ情報を表すキーを指定します。

public String extractMetadata (int keyCode)

例えばアーティト名を取得するには下記のように記述します。(ここでのmmrはMediaMetadataRetrieverのインスタンスです)

mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST);

もしメディアファイルにそのメタ情報が無い場合や、データリソースで指定したファイルが存在していなかった場合にはこのメソッドの戻り値がnullになります。

その他のメタ情報のKEYはサンプルコードやドキュメントを参照してください。

※2/9現在ではプレビュー版のためAndroideDevelopersのサイトにはHoneycomb(3.0)のAPIの情報は載っていません。ダウンロードする必要があります。

ジャケット(アートワーク)の取得

MediaMetadataRetrieverクラスではジャケット(アートワーク)を取得することもできます。

ジャケット(アートワーク)を取得するにはgetEmbeddedPictureメソッドを使います。

public byte[] getEmbeddedPicture ()

戻り値はbyte[]なので、実際にはBitmapFactoryクラスのdecodeByteArrayメソッドでBitmapクラスにデコードするなどして利用します。

メディアファイルにジャケット(アートワーク)が存在しない場合にはnullが返ります。

ImageView imageView = (ImageView)findViewById(R.id.ImageView);
byte[] data = mmr.getEmbeddedPicture();

// 画像が無ければnullになる
if (null != data) {
	imageView.setImageBitmap(BitmapFactory.decodeByteArray(data, 0, data.length));
}


※著作権の関係でアートワークを変更しています・・・

サンプルコードについて

サンプルコードをそのまま動かしてみる場合は、SDカードにsample.mp3という名前で適当なMP3ファイルを配置してください。

または、onCreateメソッドでファイルを指定しているので、ここを任意のメディアファイルのパス名に修正してください。

関連する記事:

Sponsored Link

Comments are closed.

技術書新刊 発売中

アンドロイドアカデミアには、CIやテスト、互換検証など実務に生きるノウハウをあつめています

技術書新刊 発売中

Android Next!はAndroid 7.0に対応したはじめての技術書です!


The Web Explorer 2はCSSの中央寄せやWebAudioなど未来を読み解く一冊です


Revised TypeScript in DefinitelylandはTypeScript 2.0(β)に対応した解説書です。インストールから型定義まで幅広くサポートしています


技術書をかこう!はエンジニアらしい執筆環境を構築、HowTo本です