2014-11-14 5 views
0

내 앱이 닫힌 경우에도 볼륨 작게 버튼을 눌러 알림 상자를 열려고합니다. 도와 주실 수 있는지 알려주세요.Android의 하드웨어 버튼을 재정 의하여 UI를 업데이트 할 수 있습니까?

+0

'내 앱이 닫힌 경우에도'배경 서비스를 사용해야합니다. –

+0

[여기를보세요] (http://stackoverflow.com/a/12793599/2591002) 및 [서비스가 KeyEvent 콜백을받지 못함] (http://stackoverflow.com/a/11397294/2591002) –

답변

0

이 시도 :

@Override 
    public boolean dispatchKeyEvent(KeyEvent event) { 
     int action = event.getAction(); 
     int keyCode = event.getKeyCode(); 
      switch (keyCode) { 
      case KeyEvent.KEYCODE_VOLUME_UP: 
       if (action == KeyEvent.ACTION_DOWN) { 
        //Alert dialog code here 
        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
      context); 

     // set title 
     alertDialogBuilder.setTitle("Your Title"); 

     // set dialog message 
     alertDialogBuilder 
      .setMessage("Click yes to exit!") 
      .setCancelable(false) 
      .setPositiveButton("Yes",new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog,int id) { 
        // if this button is clicked, close 
        // current activity 
        MainActivity.this.finish(); 
       } 
       }) 
      .setNegativeButton("No",new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog,int id) { 
        // if this button is clicked, just close 
        // the dialog box and do nothing 
        dialog.cancel(); 
       } 
      }); 

      // create alert dialog 
      AlertDialog alertDialog = alertDialogBuilder.create(); 

      // show it 
      alertDialog.show(); 
       } 
       return true; 
      case KeyEvent.KEYCODE_VOLUME_DOWN: 
       if (action == KeyEvent.ACTION_DOWN) { 
        //TODO 
       } 
       return true; 
      default: 
       return super.dispatchKeyEvent(event); 
      } 
     } 
0
public boolean onKey(View v, int keyCode, KeyEvent event) { 
    switch (keyCode) { 
     case KeyEvent.KEYCODE_VOLUME_DOWN: 


     break; 
    } 
    return false; 
} 
  • 가 수행해야합니다.
1

다른 답변은 앱이 종료되지 않은 경우에만 작동합니다. OP는 앱이 폐쇄 된 경우에도이를 수행 할 수 있는지 질문했습니다. 간단히 말해서 백그라운드에서 서비스를 만들지 만 서비스가 주요 콜백 이벤트를 수신하지 않아도 작동하지 않기 때문입니다. This post은 해결 방법을 보여 주지만 모든 ROM에서 작동하는 가능성은 낮습니다.