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);
}
};
}
MediaPlayerインスタンスから現在再生中のファイルに関する情報を取得するための 文書化された方法 はありません。アプリにその情報自体を別の方法で保存させる必要があります。 MediaPlayerインスタンスを追跡するためにサービスを使用している場合(これをお勧めします)、これはそれほど難しいことではありません。
曲名を設定して取得できる独自のモデルクラスが必要だと思います。この情報およびその他の情報については、StackOverflowの質問を参照してください。
Mediaplayer(ExpressionMediaPlayer:Mediaplayer)のプレイリストインデックスを設定する方法 。
それがどのように実装されているかを知りたい場合は、 source を取得して、それらがどのように実装されているかを確認できます。