마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

백그라운드에서 KeyEvent를 사용하고 싶습니다.

0 추천
백그라운드에서 KeyEvent를 사용하고 싶은데요.

백그라운드 실행시 아래 KeyEvent가 동작시 강제로 어플이 종료되버리네요...

어떻게 하면 백그라운드에서도 잘 동작할 수 있는지 부탁드립니다.

(메인이나 다른 어플 실행중에도 동작될 수 있도록 하는 방법이 궁금합니다.)

 

        new Thread(new Runnable()
        {                
         public void run()
         {
                KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_VOLUME_DOWN);         
                new Instrumentation().sendKeySync(event);
                KeyEvent event2 = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_VOLUME_DOWN);         
                new Instrumentation().sendKeySync(event2);
            }      
        }).start();

 

미디어 쪽은 확인해 보니 백그라운드 실행이 가능합니다.

제 생각으로는

new Thread(new Runnable()
{
public void run()
{

}
}).start();

이 Thread 사용 때문에 그런거 같은데 혹시 이방법 말고 다르게 키 강제 입력하는 방법을 아시면

부탁드리겠습니다.
아뇨뉸 (200 포인트) 님이 2013년 4월 1일 질문
아뇨뉸님이 2013년 4월 1일 수정

1개의 답변

0 추천
자신의 앱내에서만 작동하는거라면 가능하지만

백그라운드로 돌면서 다른 앱에 키이벤트를 발생시키는건 안드로이드 보안 정책상 불가능합니다.

단, 플랫폼키 얻어서 Hidden API 를 사용할 수 있는 조건이면 가능합니다만,

플랫폼키는 스마트제조사만 가지고 있고 극소수의 협력사들에게만 공유하는 거라서

일반 개발자는 사실상 얻기가 불가능합니다.

(구글에서 Hidden API, 플랫폼키 검색해보시면 관련 내용이 나옵니다)
Frog (3,910 포인트) 님이 2013년 4월 1일 답변
Frog님이 2013년 4월 1일 수정
...