t3hcakeman
t3hcakeman

Reputation: 2339

Android How to listen for Volume Button events?

I know you guys are probably tired of these kinds of posts, but why doesn't anything happen when I press volume down? I'm just trying to make a simple code, but apparently it's not working.

package com.cakemansapps.lightwriter;
import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.FrameLayout;
import android.view.KeyEvent;
import android.util.Log;

public class LightWriter extends Activity implements OnTouchListener {
private static final String TAG = "Touch" ;
@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  FrameLayout main = (FrameLayout) findViewById(R.id.main_view);
}

@Override
public boolean onKeyLongPress(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) 
{
    Log.w("LightWriter", "I WORK BRO.");
    return true;
}
return super.onKeyLongPress(keyCode, event);
}

public boolean onTouch(View view, MotionEvent me) {
    throw new UnsupportedOperationException("Not supported yet.");
}

}

Upvotes: 52

Views: 73179

Answers (5)

FoamyGuy
FoamyGuy

Reputation: 46856

I don't know if you can get long press events for the hardware keys.

I've used this code to listen for the volume button before.

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN){
        // Do something
    }
    return true;
}

If that doesn't work for you let us know what device you are testing on.

Kotlin

override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
    if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) { 
        // Do something
    }
    return true
}

Upvotes: 71

Sergey Benner
Sergey Benner

Reputation: 4431

try these. just tested them:

@Override
public boolean onKeyLongPress(int keyCode, KeyEvent event) {
    super.onKeyLongPress(keyCode, event);
    if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
        Log.w("LightWriter", "I WORK BRO.");
        return true;
    }
    return false;
}

public boolean onKeyDown(int keyCode, KeyEvent event) {
    super.onKeyDown(keyCode, event);
    if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
        Log.w("LightWriter", "I WORK BRO.");
        return true;
    }
    return true;
}

Upvotes: 5

Hamidreza Sadegh
Hamidreza Sadegh

Reputation: 2196

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_VOLUME_DOWN)) {
        // ... your code
        return true;
    } else if ((keyCode == KeyEvent.KEYCODE_VOLUME_UP)) {
        // ... your code
        return true;
    } else
        return super.onKeyDown(keyCode, event);
}

Upvotes: 9

Pawneshwer Gupta
Pawneshwer Gupta

Reputation: 2342

use this code to handle Volume key event

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    super.onKeyUp(keyCode, event);
    if (keyCode == KeyEvent.KEYCODE_VOLUME_UP)
    {
        Toast.makeText(MainActivity.this,"Up working",Toast.LENGTH_SHORT).show();
        return true;
    }
    return false;
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    super.onKeyDown(keyCode, event);
    if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN)
    {
        Toast.makeText(MainActivity.this,"Down working",Toast.LENGTH_SHORT).show();
        return true;
    }
    return false;
}

Upvotes: 4

Zar E Ahmer
Zar E Ahmer

Reputation: 34380

Another approach

@Override
public boolean dispatchKeyEvent(KeyEvent event) {
    int action = event.getAction();
    int keyCode = event.getKeyCode();
        switch (keyCode) {
        case KeyEvent.KEYCODE_VOLUME_UP:
            if (action == KeyEvent.ACTION_DOWN) {
                //TODO
            }
            return true;
        case KeyEvent.KEYCODE_VOLUME_DOWN:
            if (action == KeyEvent.ACTION_DOWN) {
                //TODO
            }
            return true;
        default:
            return super.dispatchKeyEvent(event);
        }
    }

Upvotes: 17

Related Questions