13

I would like to prevent some of my code from executing only when music or videos are currently playing. How would I accomplish this using a broadcast receiver?

gary
  • 4,227
  • 3
  • 31
  • 58
Emad-ud-deen
  • 4,734
  • 21
  • 87
  • 152

1 Answers1

50

You don't need a broadcast receiver for this - AudioManager is your friend:

AudioManager.isMusicActive() does the job you want, have a closer look here for details: AudioManager

here is an example:

AudioManager manager = (AudioManager)this.getSystemService(Context.AUDIO_SERVICE);
if(manager.isMusicActive())
 {
     // do something - or do it not
 }
DonGru
  • 13,532
  • 8
  • 45
  • 55
  • Hi Martin, Thanks for the quick reply. I tried your code but it states that "getSystemService is undefined for the type" . I need to place your code in the broadcast receiver because that's were I need to prevent certain code from executing. Truly, Emad – Emad-ud-deen Sep 06 '11 at 18:56
  • 3
    Hi Martin, I found out why the error was occurring. I needed to add the keyword: context before getSystemService and it worked. Truly, Emad – Emad-ud-deen Sep 06 '11 at 19:19
  • 6
    Is there a way to detect the details of the music too? Song-name; artist etc? – Zen May 11 '15 at 16:01
  • This method starts the service if music is active. Can someone tell me how to start service when music player is opened? – Fiju Jan 15 '17 at 14:53
  • 2
    I don't know why but in my case _manager.isMusicActive()_ is always true even if there is not active music player. – dazed'n'confused Jan 24 '19 at 05:55