我们可以通过覆盖Android中的硬件按钮来更新UI

时间:2014-11-14 12:13:02

标签: android android-ui android-button android-hardware

我想按下音量调低按钮打开警告框,即使我的应用已关闭。 请帮帮我,告诉我是否有可能。

3 个答案:

答案 0 :(得分:1)

其他答案仅在应用未关闭时才有效。 OP询问他是否可以这样做,即使该应用程序已关闭。简单来说,这是不可能的,因为即使在后台创建服务,它也不会起作用,因为服务不会收到关键的回调事件。 This post显示了一种解决方法,您可以继续尝试,但是在每个ROM中工作的机会都很低。

答案 1 :(得分:0)

试试这个:

@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) {
                    //Alert dialog code here
                   AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
            context);

        // set title
        alertDialogBuilder.setTitle("Your Title");

        // set dialog message
        alertDialogBuilder
            .setMessage("Click yes to exit!")
            .setCancelable(false)
            .setPositiveButton("Yes",new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog,int id) {
                    // if this button is clicked, close
                    // current activity
                    MainActivity.this.finish();
                }
              })
            .setNegativeButton("No",new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog,int id) {
                    // if this button is clicked, just close
                    // the dialog box and do nothing
                    dialog.cancel();
                }
            });

            // create alert dialog
            AlertDialog alertDialog = alertDialogBuilder.create();

            // show it
            alertDialog.show();
                }
                return true;
            case KeyEvent.KEYCODE_VOLUME_DOWN:
                if (action == KeyEvent.ACTION_DOWN) {
                    //TODO
                }
                return true;
            default:
                return super.dispatchKeyEvent(event);
            }
        }

答案 2 :(得分:0)

public boolean onKey(View v, int keyCode, KeyEvent event) {
    switch (keyCode) {
        case KeyEvent.KEYCODE_VOLUME_DOWN:


        break;
    }
    return false;
}
  • 应该这样做。