我开发和应用程序使用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)) {
}
}
}
无论如何,我得到了解决方案。当我的应用程序启动时,我按下单个或双个主页按钮,让我的应用程序之前启动默认相机应用程序更多延迟。然后默认相机可以正常工作。
但仍然不知道如何正确检测双按主页按钮。 ^^
答案 0 :(得分:1)
http://localhost:58384/LogDiary/http%3a/localhost%3a58384/LogDiary/Comments%3fcompanyId%3d11033
答案 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