안드로이드에서 강제로 키 이벤트를 발생 시키는 방법이다.

new Instrumentation().sendKeySync(event)를 이용하면 된다.

아래 소스는 처음 로딩시 하드웨어 메뉴버튼을 한번 눌러서 나타나게하고, 2초후에 다시 하드웨어 메뉴 버튼을 눌러서 메뉴를 사라지게 하는 소스이다.


사용자가 하드웨어 메뉴버튼을 누른것처럼 동작하는 것이다. 

onCreate()에서..

		// 메뉴 버튼 강제 실행하여 보이기
		openMenu();


Activity 내에서..

    Handler handler_menu = new Handler() {
        @Override
        public void handleMessage(Message msg) {
        	closeMenu();
        }
    };    
    
    // 메뉴 버튼을 눌럿다가 띤것처럼(클릭) 처리하고, 수행이 끝나면 closeMenu() 요청
    public void openMenu(){
	    new Thread(new Runnable() {         
	        public void run() {                 
          	  KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MENU);
              new Instrumentation().sendKeySync(event);	             
          	  KeyEvent event2 = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_MENU);
              new Instrumentation().sendKeySync(event2);	             
	            
              handler_menu.sendEmptyMessage(0);
	        }   
	    }).start();	    	
    }

    // 메뉴 버튼을 눌럿다가 띤것처럼(클릭) 처리    
    public void closeMenu2(){
	    new Thread(new Runnable() {         
	        public void run() {                 
          	  KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MENU);
              new Instrumentation().sendKeySync(event);	             
          	  KeyEvent event2 = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_MENU);
              new Instrumentation().sendKeySync(event2);	             

	        }   
	    }).start();	    	
    }    
    
    // 2초후에 다시 메뉴 버튼을 강제 실행하여 닫기
    public void closeMenu(){
        new Handler().postDelayed(new Runnable() {// 2 초 후에 실행
            @Override
            public void run() {
                // 실행할 동작 코딩
            	closeMenu2();
           }
        }, 2000);   
    }


참조 : http://blog.daum.net/_blog/BlogTypeView.do?blogid=0b2KL&articleno=22&_bloghome_menu=recenttext#ajax_history_home


<< 참고 >> android 버튼 클릭 이벤트 강제로 발생시키기

    button.performClick(); 

		
	Button bt_parse = (Button)findViewById(R.id.bt_parse);	
        ...
        bt_parse.performClick(); // 클릭 이벤트 발생
        bt_parse.performLongClick(); // 롱클릭 이벤트 발생



+ Recent posts