从所有可用的 android 设备获取当前播放曲目信息
Get current playing track info from all the available android devices
我很想从所有可用的 android devices.Therefore 中获取当前播放的曲目信息 devices.Therefore 我已经尝试了这段代码,它在模拟器或任何 nexus 中都可以正常工作 phone但是当我在 xperia phone 上试用它时,它确实有效并且没有得到任何信息!
我认为它无法检测到随身听媒体播放器。
public void onCreate() {
super.onCreate();
IntentFilter iF = new IntentFilter();
iF.addAction("com.android.music.metachanged");
iF.addAction("com.android.music.playstatechanged");
iF.addAction("fm.last.android.metachanged");
iF.addAction("fm.last.android.playbackpaused");
iF.addAction("com.sec.android.app.music.metachanged");
iF.addAction("com.nullsoft.winamp.metachanged");
iF.addAction("com.nullsoft.winamp.playstatechanged");
iF.addAction("com.amazon.mp3.metachanged");
iF.addAction("com.amazon.mp3.playstatechanged");
iF.addAction("com.miui.player.metachanged");
iF.addAction("com.miui.player.playstatechanged");
iF.addAction("com.real.IMP.metachanged");
iF.addAction("com.real.IMP.playstatechanged");
iF.addAction("com.sonyericsson.music.metachanged");
iF.addAction("com.sonyericsson.music.playstatechanged");
iF.addAction("com.rdio.android.metachanged");
iF.addAction("com.rdio.android.playstatechanged");
iF.addAction("com.samsung.sec.android.MusicPlayer.metachanged");
iF.addAction("com.samsung.sec.android.MusicPlayer.playstatechanged");
iF.addAction("com.andrew.apollo.metachanged");
iF.addAction("com.andrew.apollo.playstatechanged");
iF.addAction("com.htc.music.metachanged");
iF.addAction("com.htc.music.playstatechanged");
iF.addAction("com.spotify.music.playbackstatechanged");
iF.addAction("com.spotify.music.metadatachanged");
iF.addAction("com.rhapsody.playstatechanged");
registerReceiver(mReceiver, iF);
}
public BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
boolean playing = intent.getBooleanExtra("playing", false);
String cmd = intent.getStringExtra("command");
Log.v("tag ", action + " / " + cmd);
String artist = intent.getStringExtra("artist");
String album = intent.getStringExtra("album");
String track = intent.getStringExtra("track");
Log.i("tag", "This is the track information:");
Log.v("tag", artist + ":" + album + ":" + track);
Toast.makeText(TrackInformations.this, track, Toast.LENGTH_SHORT).show();
我想我遗漏了一些东西,因为也无法检测到 soundcloud 播放器。
我认为这是因为 Xperias 有一个不同的 Walkman 应用程序。
我用这个意图进行了测试,它有效:
com.sonyericsson.music.playbackcontrol.ACTION_TRACK_STARTED
intent extras不一样,track info是在Map上的,你需要debug看看自己需要什么
来自 Xperia Walkman 应用程序的清单(如果您需要更多过滤器):
玩得开心!
我很想从所有可用的 android devices.Therefore 中获取当前播放的曲目信息 devices.Therefore 我已经尝试了这段代码,它在模拟器或任何 nexus 中都可以正常工作 phone但是当我在 xperia phone 上试用它时,它确实有效并且没有得到任何信息! 我认为它无法检测到随身听媒体播放器。
public void onCreate() {
super.onCreate();
IntentFilter iF = new IntentFilter();
iF.addAction("com.android.music.metachanged");
iF.addAction("com.android.music.playstatechanged");
iF.addAction("fm.last.android.metachanged");
iF.addAction("fm.last.android.playbackpaused");
iF.addAction("com.sec.android.app.music.metachanged");
iF.addAction("com.nullsoft.winamp.metachanged");
iF.addAction("com.nullsoft.winamp.playstatechanged");
iF.addAction("com.amazon.mp3.metachanged");
iF.addAction("com.amazon.mp3.playstatechanged");
iF.addAction("com.miui.player.metachanged");
iF.addAction("com.miui.player.playstatechanged");
iF.addAction("com.real.IMP.metachanged");
iF.addAction("com.real.IMP.playstatechanged");
iF.addAction("com.sonyericsson.music.metachanged");
iF.addAction("com.sonyericsson.music.playstatechanged");
iF.addAction("com.rdio.android.metachanged");
iF.addAction("com.rdio.android.playstatechanged");
iF.addAction("com.samsung.sec.android.MusicPlayer.metachanged");
iF.addAction("com.samsung.sec.android.MusicPlayer.playstatechanged");
iF.addAction("com.andrew.apollo.metachanged");
iF.addAction("com.andrew.apollo.playstatechanged");
iF.addAction("com.htc.music.metachanged");
iF.addAction("com.htc.music.playstatechanged");
iF.addAction("com.spotify.music.playbackstatechanged");
iF.addAction("com.spotify.music.metadatachanged");
iF.addAction("com.rhapsody.playstatechanged");
registerReceiver(mReceiver, iF);
}
public BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
boolean playing = intent.getBooleanExtra("playing", false);
String cmd = intent.getStringExtra("command");
Log.v("tag ", action + " / " + cmd);
String artist = intent.getStringExtra("artist");
String album = intent.getStringExtra("album");
String track = intent.getStringExtra("track");
Log.i("tag", "This is the track information:");
Log.v("tag", artist + ":" + album + ":" + track);
Toast.makeText(TrackInformations.this, track, Toast.LENGTH_SHORT).show();
我想我遗漏了一些东西,因为也无法检测到 soundcloud 播放器。
我认为这是因为 Xperias 有一个不同的 Walkman 应用程序。
我用这个意图进行了测试,它有效:
com.sonyericsson.music.playbackcontrol.ACTION_TRACK_STARTED
intent extras不一样,track info是在Map上的,你需要debug看看自己需要什么
来自 Xperia Walkman 应用程序的清单(如果您需要更多过滤器):
玩得开心!