2010-09-01 47 views

回答

6

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

+0

嗨弗雷德利,谢谢你的建议。 – Eby 2010-09-01 10:33:26

+0

我可以看到很多显示歌曲细节的小部件,就像您在http://developer.android.com/guide/topics/appwidgets/index.html这个小部件中看到的那样。 – Eby 2010-09-01 10:34:42

+1

是的。和?音乐小部件旨在与某个播放器集成,并且您无法将自己的小部件轻松与其他媒体播放器集成。 – fredley 2010-09-01 10:55:42

11

仅作参考,这个工程:

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); 
} 
}; 
} 
+0

我没有任何运气注册广播接收器(使用您的代码),然后播放带MediaPlayer的MP3 - 没有收到广播! – 2013-11-17 23:19:43

+0

只适用于谷歌播放音乐。我如何在玩游戏时获得其他玩家的信息? – 2013-12-18 09:52:02

-1

我学会了如何做到这一点刚才,所以我不知道这是否适用于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; 
} 
+0

OP的问题是检索MediaPlayer对象中播放的歌曲细节。这是一个不同的答案。 – 2015-06-10 09:09:36

相关问题