gpt4 book ai didi

android - 如何检测按下主页按钮 "double"?

转载 作者:可可西里 更新时间:2023-11-01 11:42:55 24 4
gpt4 key购买 nike

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

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

有代码就好了。提前谢谢你。

这是基于@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)) {

}
}
}

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

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

最佳答案

public class MyView extends View {

GestureDetector gestureDetector;

public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
// creating new gesture detector
gestureDetector = new GestureDetector(context, new GestureListener());
}

// skipping measure calculation and drawing

// delegate the event to the gesture detector
@Override
public boolean onTouchEvent(MotionEvent e) {
return gestureDetector.onTouchEvent(e);
}


private class GestureListener extends GestureDetector.SimpleOnGestureListener {

@Override
public boolean onDown(MotionEvent e) {
return true;
}
// event when double tap occurs
@Override
public boolean onDoubleTap(MotionEvent e) {
float x = e.getX();
float y = e.getY();

Log.d("Double Tap", "Tapped at: (" + x + "," + y + ")");

return true;
}
}
}

Source

关于android - 如何检测按下主页按钮 "double"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35502615/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com