如何检测主页按钮被“双重”按下?

时间:2016-02-19 10:10:34

标签: android button camera

我开发和应用程序使用Samsung Galaxy J7上的相机硬件来测量光线并在按下主屏幕时调整显示亮度。但是我遇到了问题,当主屏幕被双重按下时,因为我设置了打开内置相机应用程序的捷径。相机有黑屏(相机硬件不起作用)。我想让我的应用程序能够检测双屏按下的主屏幕,以便它可以跳过使用相机硬件,让内置相机应用程序正常工作。

PS。不要建议我使用“长按”或“最近的应用程序密钥”,因为我已经使用过它们。 ^^

使用代码会很好。提前谢谢。

这是基于@saeed建议的选项1代码:它工作但不是绝对完美。

if(firstHomePressed == true){

                        firstHomePressed = false;
                        secondHomePressed = false;

                        new Handler().postDelayed(new Runnable() {
                            @Override
                            public void run() {
                                if(secondHomePressed == false){
                                    Toast.makeText(mContext,"Pressed Once",Toast.LENGTH_SHORT).show();
                                }
                                else {
                                    Toast.makeText(mContext, "Double Pressed", Toast.LENGTH_SHORT).show();
                                }
                                firstHomePressed = true;
                            }
                        }, 1000);
                    }
                    else{
                        secondHomePressed = true;
                        Toast.makeText(mContext, "secondHomePressed : true", Toast.LENGTH_SHORT).show();
                    }

我发现通过使用“Intent.ACTION_CLOSE_SYSTEM_DIALOGS”来检测我按下的主页键操作,双击主页按钮只会调用一次接收器(甚至双按主页按钮)。

if (intent.getAction().equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS))
    {
        String reason = intent.getStringExtra(SYSTEM_REASON);

        //Toast.makeText(context,"ACTION_CLOSE_SYSTEM_DIALOGS : Reason : " + reason ,Toast.LENGTH_LONG).show();

        // Detect home screen key press or "recent app" key pressed when screen is in unlocked state
        if (reason != null)
        {
            MainActivity.logForDebug("MyThread", "reason : " + reason);

            if (reason.equals(SYSTEM_HOME_KEY)) {

            }
        }
    }

无论如何,我得到了解决方案。当我的应用程序启动时,我按下单个或双个主页按钮,让我的应用程序之前启动默认相机应用程序更多延迟。然后默认相机可以正常工作。

但仍然不知道如何正确检测双按主页按钮。 ^^

3 个答案:

答案 0 :(得分:1)

http://localhost:58384/LogDiary/http%3a/localhost%3a58384/LogDiary/Comments%3fcompanyId%3d11033

Source

答案 1 :(得分:1)

您可以使用处理程序来解决此特定问题。 首先,您必须声明private boolean doublePressedOnce = false;,然后将此代码放在onClick方法中:

if (doublePressedOnce) {
    // here you can write method to call camera app
Toast.makeText(mContext, "Double Pressed", Toast.LENGTH_SHORT).show();
}

this.doublePressedOnce = true;
new Handler().postDelayed(new Runnable() {
    @Override
    public void run() {
        doublePressedOnce = false;
    }
}, 2000);

答案 2 :(得分:0)

我猜你可以使用手势或计时器,而不是我知道的太多选择: how to implement double click in android