2011-10-07 6 views
3

현재 전원 버튼을 누르면 수신 대기 중입니다. 궁극적으로 화면이 잠겨 있는지 또는 잠금 해제되어 있는지 확인하기 위해 전원 단추를 두 번 누르면 코드가 실행됩니다. 나는 현재 이것을 가지고있다 :Android : 전원 키 누르기를 듣습니다.

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);//prevent phone from being locked 
} 

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 

    switch (keyCode) { 
     case KeyEvent.KEYCODE_POWER: 
     { 
      Toast.makeText(getBaseContext(), "Power button pressed", Toast.LENGTH_LONG).show(); 

      return true; 
     } 
     case KeyEvent.KEYCODE_MENU: 
      Toast.makeText(getBaseContext(), "Menu Button Pressed", Toast.LENGTH_LONG).show(); 

      return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 

코드는 메뉴 키 이벤트에 대한 축배로 잘 작동하지만 전원 키 이벤트에는 아무 것도하지 않는다. 어떤 아이디어?

+0

하지만 당신은 반사를 사용하여 얻을 수 있습니다

당신의 "@EActivity"주석 활동에 이것을 추가합니다. http://stackoverflow.com/a/31872330/3496570 – Nepster

답변

7

꺼져 있거나 켜져 있습니다. 나는 다음과 같이 사용했다 :

몇 초 후에 타임 아웃이 발생하여 전원 버튼을 누르는 것이 확실 할 수 있었다. 이렇게하면 사용자가 전원 단추를 세 번 눌러 적절한 동작을 수행하도록 할 수 있습니다.

+0

안녕하세요, AFAIK,이 의도는 이벤트가 발생한 후에 방송됩니다. 원하는 것이 맞습니까? –

0

"@Receiver"주석 android-annotations을 사용했습니다. 이에 대한 API가 없습니다

@Receiver(actions = Intent.ACTION_SCREEN_OFF) 
protected void onPowerButtonPressed() { 
// add your code 
} 
관련 문제