如果该应用程序处于后台,我也会创建一个用于双击的应用程序。 我创建以下代码:
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;
}
//..........................
}
如果该应用程序在日志中打开,我会看到双击次数增加,如果该应用程序在后台工作,则该次数被阻止。 有办法解决吗?还是我必须创建服务?我需要一个通用的应用程序和服务,有一种方法可以同时创建两者吗? 谢谢
答案 0 :(得分:0)
对此没有一个简单的答案。通常,这是不可能的,因为一个应用程序无法与该应用程序本身以外的其他Android界面进行交互。但是,如果设备具有Root Permissions,则可以直接读取触摸屏并拦截所有触摸事件。
存在一种不需要Root的替代方法,但我不鼓励使用Root:放置一个全屏View,它充当透明层并拦截所有事件。但是,此方法有几个缺点:降低了整个设备的图形性能(尤其是在运行游戏时),可能会在触摸交互式区域(按钮,复选框等)时干扰用户体验,但是通过松动某些触摸无法很好地工作事件。