2010-09-01 210 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

相關問題