我想要实现的目标非常相似是在做。
我需要在音乐开始播放以及歌曲更改时得到通知。
所有这些都在服务中,因为我的应用程序可能会关闭(甚至 musicmatch 也会这样做)。
在上述情况下,即使 Musixmatch 应用程序未运行,当我在 Spotify 或任何播放器上更改歌曲时,我也会收到通知。
谁能告诉我如何实现这一目标。
我不需要代码帮助,只需要知道如何实现它。我真的很困惑 Musixmatch 是如何做到的。
这是查找音乐播放器是否正在播放的解决方案。
AudioManager manager = (AudioManager)this.getSystemService(Context.AUDIO_SERVICE);
if(manager.isMusicActive())
{
// Something is being played.
}
然后您可以从音乐播放器获取当前正在播放的歌曲的信息。
将下面的代码粘贴到活动类中的 onCreate 方法中。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
IntentFilter iF = new IntentFilter();
// Read action when music player changed current song
// I just try it with stock music player form android
// stock music player
iF.addAction("com.android.music.metachanged");
// MIUI music player
iF.addAction("com.miui.player.metachanged");
// HTC music player
iF.addAction("com.htc.music.metachanged");
// WinAmp
iF.addAction("com.nullsoft.winamp.metachanged");
// MyTouch4G
iF.addAction("com.real.IMP.metachanged");
registerReceiver(mReceiver, iF);
}
在您的活动类中创建新的 BroadcastReceiver mReceiver。
BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context arg0, 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);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)