2014-02-20 47 views
2

我正在創建一個應用程序,並希望在按四次音量按鈕時執行一些操作。我這樣做,工作正常。覆蓋後臺服務中的音量按鈕

public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
    if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN || keyCode == KeyEvent.KEYCODE_VOLUME_UP) { 
     count++; 
     if(count==4){ 
      dosomething(); 
      return true; 
     } 
     else 
      return false; 
    } 
} 

的問題是,我的應用程序在後臺運行,併爲服務是不是要對用戶的輸入做出反應等什麼可以工作在這裏我怎麼能叫我的功能使說dosomething()在用戶輸入時應用程序在後臺。這是應用程序中最重要的部分,因爲否則應用程序的目的被破壞。它不一定是一個音量按鈕,如果家庭或任何其他作品,那麼它也很好。如果有人能幫助我,我會非常感激。

+0

@JesusS看到這個http://stackoverflow.com/questions/6712601/android-capturing - 廣播接收機中的音量 - 按下按鍵 這表示廣播接收機不能在後臺服務中工作。 – Hamza

+1

當然他們確實;):http://stackoverflow.com/questions/9092134/broadcast-receiver-within-a-service。 Regards – JesusS

回答

0

據我所知,是沒有辦法用t他Service來攔截音量按鈕,家庭,後退,電源按鈕鍵。

由於@SMR建議您只能將BroadcastReceiver用於音量和電源按鈕。

BroadcastReceiver - android.media.VOLUME_CHANGED_ACTION當介質卷更改時執行。

但當您的設備被鎖定時,此接收器不會調用。如果您想讓音量按鈕處於活動狀態,則必須在背景中運行媒體文件,這不是一個好的解決方案。我建議您不要使用此按鈕使音量按鈕處於活動狀態,因爲它會耗盡設備的電池電量,並會改變設備的流行爲。

可以註冊Screen_ONScreen_OFFBroadcastReceiver其執行時,設備屏幕ON/OFF

鏈接:http://thinkandroid.wordpress.com/2010/01/24/handling-screen-off-and-screen-on-intents/