如何通过使用广播接收器检查音乐是否正在播放?

13

我希望防止我的一些代码在音乐或视频正在播放时执行。如何使用广播接收器实现这一点?

1个回答

50
你不需要广播接收器来完成这个功能 - AudioManager 是你的好朋友: AudioManager.isMusicActive() 可以完成你想要的工作,这里有详细信息,请仔细查看:AudioManager 下面是一个例子:
AudioManager manager = (AudioManager)this.getSystemService(Context.AUDIO_SERVICE);
if(manager.isMusicActive())
 {
     // do something - or do it not
 }

嗨,马丁,感谢您的快速回复。我尝试了您的代码,但它显示“getSystemService未定义为<class name>”。我需要将您的代码放在广播接收器中,因为那里是我需要防止某些代码执行的地方。真诚地, Emad - Emad-ud-deen
3
嗨,马丁,我找到了错误发生的原因。我需要在getSystemService之前添加关键字"context",然后它就可以正常工作了。真的,Emad。 - Emad-ud-deen
6
有没有办法也检测出音乐的详细信息?例如歌名、艺术家等? - Zen
这个方法会在音乐处于活跃状态时启动服务。有人能告诉我当音乐播放器被打开时如何启动服务吗? - Fiju
2
我不知道为什么,在我的情况下 manager.isMusicActive() 总是为真,即使没有活动的音乐播放器。 - dazed'n'confused

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接