在背景中双击监听器

时间:2018-10-10 09:49:05

标签: java android

如果该应用程序处于后台,我也会创建一个用于双击的应用程序。 我创建以下代码:

public class MainActivity extends Activity implements
        GestureDetector.OnGestureListener,
        GestureDetector.OnDoubleTapListener
{

    private static final String DEBUG_TAG = "Gestures";
    private GestureDetectorCompat mDetector;
    private int counter = 0;

    // Called when the activity is first created.
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mDetector = new GestureDetectorCompat(this,this);
        mDetector.setOnDoubleTapListener(this);
    }

    @Override
    public boolean onDoubleTap(MotionEvent event)
    {
        counter++;
        Log.d(DEBUG_TAG, String.valueOf(counter));
        return true;
    }
 //..........................
}

如果该应用程序在日志中打开,我会看到双击次数增加,如果该应用程序在后台工作,则该次数被阻止。 有办法解决吗?还是我必须创建服务?我需要一个通用的应用程序和服务,有一种方法可以同时创建两者吗? 谢谢

1 个答案:

答案 0 :(得分:0)

对此没有一个简单的答案。通常,这是不可能的,因为一个应用程序无法与该应用程序本身以外的其他Android界面进行交互。但是,如果设备具有Root Permissions,则可以直接读取触摸屏并拦截所有触摸事件。

存在一种不需要Root的替代方法,但我不鼓励使用Root:放置一个全屏View,它充当透明层并拦截所有事件。但是,此方法有几个缺点:降低了整个设备的图形性能(尤其是在运行游戏时),可能会在触摸交互式区域(按钮,复选框等)时干扰用户体验,但是通过松动某些触摸无法很好地工作事件。