2011-05-08 41 views
0

我见过的应用程序,如果你触摸屏幕的某一部分(即左上角),他们将启动一个应用程序。这可以从主屏幕或我的屏幕上的任何应用程序完成。最好的我可以计算出他们如何做到这一点是通过一个服务来接收所有的触摸事件,然后测试他们是否在指定的区域?你会如何做到这一点?任何人都可以将我指向正确的方向吗?服务从手机上的所有活动接收触摸事件?

回答

1

尽我所能的身影,他们是如何通过具有接收所有触摸事件,然后测试他们是否是在指定的区域中的服务做到这一点?

你会怎么做呢?

服务无法接收触摸事件,对不起。

任何人都可以指向正确的方向吗?

我相信有问题的应用程序正在利用已关闭的安全漏洞。

+0

我刚刚下载了其中一个应用程序,它似乎在Android 2.2上工作。他们用它做了一个非常方便的应用程序,它有一个在后台运行的服务。他们基本上都是这样的,所以如果我在屏幕底部打开任何我的应用程序的手势,然后打开应用程序,它允许我为其他程序创建快捷方式。你能想出任何其他方式可以完成这样的事情吗?我看到的第一个地方是你的书,但是我没有看到有关TouchEvent操作的任何章节。 – spierce7 2011-05-08 18:29:35

+0

@ spierce7:“我今天刚刚下载了一个应用程序,它似乎在Android 2.2上工作” - 应用程序是什么? – CommonsWare 2011-05-08 18:30:59

+0

Wave发射器。免费应用程序在亚马逊Appstore今天。 – spierce7 2011-05-08 18:33:06

0

执行onTouchListener并检查它返回的视图或坐标。服务仅用于使用线程来控制后台活动。

编辑:

也许这样做会覆盖Activity.dispatchTouchEvent(TouchEvent event)和使用循环来挑选出被触摸的View最好WASY。例如。

@Override 
dispathTouchEvent(MotionEvent event) { 
    ViewGroup viewGroup = (ViewGroup)findViewById(R.id.mylayout); 
    for (int i = 0; i < viewGroup.getChildCount(); i++) { 
     // do comparison to see if event.getX() and event.getY() fall in the view.getChildAt(i).getX(), getWidth(), getY() and getHeight() 
    } 
} 
+0

我有点困惑。因此,举例来说,如果我有一个服务实现onTouchListener,然后我可以接受事件或查看它返回,然后根据点击的位置,我可以例如发起一个活动?或者你是否说我不能在活动中这样做? – spierce7 2011-05-08 18:10:12

+0

@ spierce7:根本不使用服务。我会更详细地编辑我的答案。 – techiServices 2011-05-08 18:21:59

+0

好的,我有点困惑,因为那样会有什么效果。在我看来,为了打开我的应用程序的另一部分,我将不得不从我的服务中运行一些东西,我想我会等待您的编辑。 – spierce7 2011-05-08 18:30:55