如何从MediaPlayer获取当前播放的歌曲详情

有什么方法可以获得MediaPlayer播放的当前歌曲的细节?

Solutions Collecting From Web of "如何从MediaPlayer获取当前播放的歌曲详情"

仅供参考,此作品:

import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.util.Log; public class MediaPlayer extends Activity { public static final String SERVICECMD = "com.android.music.musicservicecommand"; public static final String CMDNAME = "command"; public static final String CMDTOGGLEPAUSE = "togglepause"; public static final String CMDSTOP = "stop"; public static final String CMDPAUSE = "pause"; public static final String CMDPREVIOUS = "previous"; public static final String CMDNEXT = "next"; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); IntentFilter iF = new IntentFilter(); iF.addAction("com.android.music.metachanged"); iF.addAction("com.android.music.playstatechanged"); iF.addAction("com.android.music.playbackcomplete"); iF.addAction("com.android.music.queuechanged"); registerReceiver(mReceiver, iF); } private BroadcastReceiver mReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); String cmd = intent.getStringExtra("command"); Log.d("mIntentReceiver.onReceive ", action + " / " + cmd); String artist = intent.getStringExtra("artist"); String album = intent.getStringExtra("album"); String track = intent.getStringExtra("track"); Log.d("Music",artist+":"+album+":"+track); } }; } 

没有logging的方法从MediaPlayer实例获取当前正在播放的文件的信息,您需要让应用程序以另一种方式存储这些信息本身。 如果您使用服务来跟踪您的MediaPlayer实例(我build议),那么这应该不会太难。

我认为你需要有你自己的模特class,从中你可以设置和获得你的歌曲标题。 对于这个和其他信息,请参阅堆栈溢出问题:
如何为Mediaplayer(ExpressionMediaPlayer:Mediaplayer)设置PlayList索引 。

如果你很想知道它是如何实现的,你可以得到源代码 ,看看它们是如何实现的。

我学会了如何做,所以我不知道它是否适用于所有版本的Android。

 private void getTrackInfo(Uri audioFileUri) { MediaMetadataRetriever metaRetriever= new MediaMetadataRetriever(); metaRetriever.setDataSource(getRealPathFromURI(audioFileUri)); String artist = metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST); String title = metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE); } private String getRealPathFromURI(Uri uri) { File myFile = new File(uri.getPath().toString()); String s = myFile.getAbsolutePath(); return s; }