酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

Androidデバイスに入っている楽曲データを取得する

Androidデバイスに入っている楽曲データ一覧からアーティスト情報やタイトル情報を取得します。

private static final String[] projection = {
        MediaStore.Audio.Media._ID,
        MediaStore.Audio.Media.DATA,
        MediaStore.Audio.Media.TITLE,
        MediaStore.Audio.Media.ALBUM,
        MediaStore.Audio.Media.ARTIST,
        MediaStore.Audio.Media.ALBUM_ID,
        MediaStore.Audio.Media.ARTIST_ID,
        MediaStore.Audio.Media.DURATION,
        MediaStore.Audio.Media.TRACK,
};

private void debug(Context context) {
    ContentResolver resolver = getContentResolver();
    Cursor cursor = resolver.query(
            MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, projection, null, null, null);
    while (cursor.moveToNext()) {
        int index = cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST);
        Log.e("debug", cursor.getString(index));
    }
    cursor.close();
}

Google Play Musicからダウンロードした楽曲の情報は取得できない

この方法で自分で入れた楽曲の情報を取得することができましたが、Google Play Musicで購入した楽曲に関しては、上記の方法では取得できないようです。あくまでストレージに登録された楽曲データを取得するのにとどまっているようです。

Google Play Musicはライセンスの関係でストレージとは別の部分に保存されているのでしょう。

ユーザーにGoogleアカウントのIDとパスワードを入力してもらえるのであれば、Google Playから楽曲情報を取得する非公式ライブラリがいくつか出ているようです。

OSバージョンによる制限

いくつかOSのバージョンによって制限があるようです。

  • Android 4.1.1は、mp3ファイルのアーティスト名の日本語(ひらがな・カタカナ・漢字)が取得できていませんでした。
  • Android 6.0では、ユーザーがアプリがストレージを使用するのを許可していないと楽曲情報を取得できません。

関連記事