2011-05-08 40 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