2011-07-15 65 views
7

如何使用public boolean onTouchEvent(MotionEvent event)從活動中獲得類似觸摸事件?顯然,在服務中重寫的方法並不是onTouchEvent,那麼我該如何去做這件事呢?有沒有直接的方法或可靠的解決方法?獲取服務中的觸摸事件(座標,MotionEvents等)

我的想法是創建一個服務,在用戶的背景中偵聽某個手勢,然後在該用戶做出正確的手勢時執行某些操作。謝謝!

編輯:這個問題的目的是爲這個question的答案。

+0

我不知道100%,所以我不打算把這個答案,但一個服務的整個想法是沒有任何人的互動。我也會認爲任何使用手機的人中有9人不會在應用程序之外做手勢,所以任何解決方案都可能會引起一個處理程序,這可能會降低整體用戶體驗。 – DeeV

+0

那麼看看這兩個應用https://market.android.com/details?id=mobi.conduction.swipepad.android&feature=search_result和https://market.android.com/details?id=com.mobilemerit .wavelauncher&特徵= search_result。我試圖找出如何做到這一點。 – Brian

+0

然後我希望有人回答這個,因爲我也有興趣知道。儘管我認爲這些定製小部件就像那些在手機桌面上找到的小部件,但它們總是處於最佳狀態。如果我沒有記錯的話,Wave Launcher就會在屏幕外顯示,你必須將其拖拽。最下面的20個像素左右是記錄它被觸摸的小部件的邊緣。從它的外觀來看,刷卡墊是一樣的。既不使用服務。 – DeeV

回答

0

您可以創建一個0x0視圖並將其作爲一個始終位於頂層的系統對話框添加到服務窗口。

您可以使用'WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH'權限收聽活動。不幸的是,你只能得到最初的觸摸事件,你不能傳遞事件來降低活動。我很高興你不能那樣做;你能想象惡意軟件如何利用這個獲得用戶的憑證。

+0

謝謝,但如果你提到我的問題,我有一個問題的鏈接,顯示如何工作。我最大的問題是實際上獲得移動觸摸手勢。像Wave Launcher和SwipePad這樣的應用程序能夠做到這一點,但我只是不知道如何。 – Brian

相關問題