如何获得艺术家,媒体播放器中的专辑API级别2.2

时间:2012-01-27 10:25:05

标签: android

我是android新手。我正在开发基于Media Player的应用程序。 我的问题是如何获得正在播放的歌曲的艺术家,歌曲持续时间,专辑等。 我见过android.media.RemoteControlClient.MetadataEditor类但是包含在Api 14中。如果您有任何想法请提示

提前致谢。

3 个答案:

答案 0 :(得分:1)

研究以下

http://developer.android.com/reference/android/media/MediaPlayer.html http://developer.android.com/reference/android/provider/MediaStore.Audio.html

在第二个Audio类中包含Album,Artist等类。通过使用它们,您可以找到专辑艺术家等。

答案 1 :(得分:1)

为此,您可以使用content provider查询media store并对表格进行任何类型的修改。

一个完整的好示例:

//Some audio may be explicitly marked as not being music
String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0";

String[] projection = {
    MediaStore.Audio.Media._ID,
    MediaStore.Audio.Media.ARTIST,
    MediaStore.Audio.Media.TITLE,
    MediaStore.Audio.Media.DATA,
    MediaStore.Audio.Media.DISPLAY_NAME,
    MediaStore.Audio.Media.DURATION
};

cursor = this.managedQuery(
    MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
    projection,
    selection,
    null,
    null);

private List<String> songs = new ArrayList<String>();
while(cursor.moveToNext()){
    songs.add(cursor.getString(0) + "||" + cursor.getString(1) + "||" +   cursor.getString(2) + "||" +   cursor.getString(3) + "||" +  cursor.getString(4) + "||" +  cursor.getString(5));
}
// see http://androidsnippets.com/list-all-music-files

答案 2 :(得分:1)

您需要使用MediaMetadataRetriever

示例:

myUri = Uri.parse("android.resource://your.package.name/" + R.raw.yourSoundFile);
retriever = new MediaMetadataRetriever();
retriever.setDataSource(this, myUri);
album = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM);
Toast.makeText(this,album , Toast.LENGTH_SHORT).show();

其他字段可在javadoc中找到,例如:

  • METADATA_KEY_ALBUMARTIST
  • METADATA_KEY_ARTIST
  • METADATA_KEY_AUTHOR