merstik
merstik

Reputation: 101

android - how to run some code after the "power button" is pushed

I have an app that plays some music file while the application is open but when i press the power button the sound keeps playing for some reason. Is there a way to override the power button so it will also stop the media player when pushed ?

MediaPlayer mp;

protected void onCreate(Bundle savedInstanceState) {
...
...
mp = MediaPlayer.create(this, mAudio[0]);
mp.start();
...
...
}

I would like to call mp.stop() when the power button is pressed.

Upvotes: 2

Views: 952

Answers (3)

Mikhail Spitsin
Mikhail Spitsin

Reputation: 2608

First of all you need to understand, when you want to pause or stop the sound. If you want to do it, when you exit/hide an application, then overriding onKeyDown won't help. I think better approach in this case will be:

protected void onCreate(Bundle onSaveInstanceState) {
    super.onCreate(onSaveInstanceState);
    mp = MediaPlayer.create(this, mAudio[0]);
}

protected void onStart() {
    super.onStart();
    mp.start();
}

protected void onStop() {
    super.onStop();
    mp.stop();
}

But if you want to stop your sound only when Power button is pressed, then yes, you need to override onKeyDown

Upvotes: 0

Ido Naveh
Ido Naveh

Reputation: 2492

Add this method:

public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (event.getKeyCode() == KeyEvent.KEYCODE_POWER) {
        // stop the media from playing
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

This method is being activated when a key is being pressed. It checks what key is pressed and reacts for it.

Upvotes: 0

Shree Krishna
Shree Krishna

Reputation: 8562

Override onKeyDown and check if it's KEYCODE_POWER.

public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (event.getKeyCode() == KeyEvent.KEYCODE_POWER) {
        // Stop the media player here
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

Upvotes: 1

Related Questions