2011-07-15 23 views
4

我想讓用戶可以覆蓋音量上/下按鈕的默認行爲(以及屏幕開/關按鈕 - 這是可能的?)的應用程序。不管怎麼說,使用一些代碼沿以下的線,我可以做到這一點:Android在廣播接收器中捕獲音量增大/減小按鍵?

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
super.onKeyUp(keyCode, event); 
if ((keyCode == KeyEvent.KEYCODE_VOLUME_UP)) { 
    //this is where I can do my stuff 
    return true; //because I handled the event 
} 
return false; //otherwise the system can handle it   

}

但我想它是可能的,即使當應用程序沒有打開,因此爲什麼我想建立一個廣播接收器或者在服務中加入某些東西來實現這一點。

感謝您的任何幫助。

+0

就硬件按鈕而言,我已經看到其他應用程序執行此操作。例如,AndroSS允許您覆蓋相機硬件按鈕以拍攝屏幕截圖。雖然這個程序需要root權限,所以我認爲你可能需要追求相同的...。 – Eric

+0

@JDS:我有同樣的要求。你能解決它嗎? – Basher51

回答

2

以及開/關按鈕的屏幕 - 這可能嗎?

幸運的是,沒有。

但我想它是可能的,即使當應用程序沒有打開,因此爲什麼我想建立一個廣播接收器或可能粘東西在一個服務,使這一切成爲可能。

,這是不可能的音量按鈕。

例如,AndroSS允許您覆蓋相機硬件按鈕以拍攝屏幕截圖。

這是相機按鈕。如果前臺活動不消耗相機按鈕點擊,則會變成其他應用程序可以偵聽的廣播Intent。這種行爲對於相機和媒體按鈕是唯一的,並不與任何其他硬件按鈕一起使用。

0

這不是一個好主意。這意味着每次按下音量上/下鍵時,無論您身處何處,您都可以捕捉它。如果我想改變我的鈴聲音量怎麼辦?媒體音量?使用搖桿進行其他用途的應用程序?它只是不會工作,只會加劇人們。再加上,我不確定它是否可行。

+10

別擔心那些其他問題,如果我製作了一個人們想使用的合理應用程序,它們就無關緊要。更重要的是這是否可能。 – JDS

0

因爲「onKeyDown」方法重寫Activity.onKeyDown(),所以這不是(很容易)可能的。出於這個原因,你必須有一個前臺活動來接收這些函數調用。

我沒有任何這樣的經歷,但你必須挖成深一點寫你自己的硬件鍵攔截/處理函數,因爲你不能將能夠訪問從活動類中的一個。

+1

關於如何開始的任何想法?或者它可能太多了?另外我想知道是否有任何廣播接收器告訴我音量是否發生了變化,這可能是一種便宜的手段,可以按照我的意願進行操作。 – JDS

0

這可能不會做你想做的,但如果你做的輸入法,輸入法可以捕捉音量+/-按鈕和爲所欲爲,想重新映射到其他按鍵操作。例如,我修改了薑餅風格的IME,將音量+/-按鈕在Kindle和Overdrive應用中進行翻頁/翻頁。