2012-01-27 91 views
2

我是Android新手。我正在开发基于Media Player的应用程序。 我的问题是如何获得正在播放的歌曲的艺术家,歌曲持续时间,专辑等。 我已经看到了android.media.RemoteControlClient.MetadataEditor类,但包含在Api 14中。如果你有任何想法请建议如何获得媒体播放器中的艺术家,专辑API级别2.2

在此先感谢。

回答

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 
+0

感谢回复,但如果我通过流媒体播放歌曲 – Rajendra 2012-01-27 17:56:20

+0

这是什么方法? managedQuery – 2013-08-03 15:00:04

+0

@Ankit - managedQuery是按照活动生命周期管理光标的Activity类的方法。 – user370305 2013-08-04 07:38:22

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
相关问题