【发布时间】:2016-05-31 20:49:04
【问题描述】:
我开发了一个应用程序,它使用三星 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)) {
}
}
}
无论如何,我得到了解决方案。当按下单或双主页按钮时,我在我的应用程序启动之前设置了更多延迟,以让默认相机应用程序在我的应用程序之前启动。然后默认相机可以正常工作。
但是仍然不知道如何正确检测双击主页按钮。 ^^
【问题讨论】:
-
复制粘贴我的代码后,您可以发布您的完整代码吗?