我想要实现的目标与Musixmatch正在做的非常相似。
我需要知道什么时候音乐开始播放,什么时候歌曲被改变。所有这些都在服务中,因为我的应用程序可能会被关闭(即使musicmatch也会这样做)。


在上述情况下,即使Musixmatch应用程序没有运行,当我在spotify或任何播放器上更改歌曲时,我都会收到通知。
谁能告诉我如何做到这一点。我不需要代码帮助,只需要知道如何实现它。我真的很困惑Musixmatch是怎么做到的。
发布于 2015-12-21 13:53:32
这是一个解决方案,可以找出音乐播放器是否正在播放。
AudioManager manager = (AudioManager)this.getSystemService(Context.AUDIO_SERVICE);
if(manager.isMusicActive())
{
// Something is being played.
}然后,您可以从音乐播放器获取当前正在播放的歌曲的信息。将下面的代码粘贴到activity类中的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);
}在您的activity类中创建新的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);
}发布于 2021-03-29 05:52:23
我正在研究类似的(了解事件和意图,以及在没有根的情况下可能发生的事情,使用automate、tasker、谷歌助手例程、adb和(第一:) MacroDroid
我希望你还在调查这件事!这不能满足您的需求,但需要注意的是
(重新spotify)
元数据更改意图在新曲目开始播放时发送。它使用意图操作com.spotify.music.metadatachanged,并包含以下意图附加内容
https://stackoverflow.com/questions/34389404
复制相似问题