How to get volume key event when the screen is locked?

前端 未结 1 908
自闭症患者
自闭症患者 2021-01-06 07:38
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
    int action = event.getAction();
    int keyCode = event.getKeyCode();
        switch (keyCode) {
             


        
相关标签:
1条回答
  • 2021-01-06 07:56

    The event only trigger when the screen is on..other wise root permission is needed.

    Make a BroadcastReceiver extended class

     public class YourBoardcastReceiver extends BroadcastReceiver {
                    @Override
                    public void onReceive(Context context, Intent intent) {
    
    
    Log.e("get something", "i dont know what!!");
    
            String intentAction = intent.getAction();
            KeyEvent event = null;
            if (Intent.ACTION_MEDIA_BUTTON.equals(intentAction)) {
                event = (KeyEvent) intent
                        .getParcelableExtra(Intent.EXTRA_KEY_EVENT);
            }
    
            if (event == null) {
                return;
            }
    
            int keycode = event.getKeyCode();
            int action = event.getAction();
            long eventtime = event.getEventTime();
    
            if (keycode == KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE
                    || keycode == KeyEvent.KEYCODE_HEADSETHOOK) {
                if (action == KeyEvent.ACTION_DOWN) {
                    // Start your app here!
    
                    // ...
                    Log.e("event/////", "Trigerd");
    
                    if (isOrderedBroadcast()) {
                        abortBroadcast();
                    }
                }
            }
        }
                    }
            }
    

    And in your Manifest :

    <receiver android:name="YourBoardcastReceiver">
                    <intent-filter>
                            <action android:name="android.intent.action.SCREEN_ON" />
                    </intent-filter>
    </receiver>
    

    and Call it like this.

    mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
        mRemoteControlResponder = new ComponentName(getPackageName(),
                YourBoardcastReceiver.class.getName());
    
    0 讨论(0)
提交回复
热议问题