메뉴 건너뛰기

모바일앱


Floating window를 WindowManager에 띄우기 위한 파라메터에서 FLAG_NOT_FOCUSABLE을 없애면 홈키를 제외한 나머지 키 이벤트를 받을 수 있습니다.


params= new WindowManager.LayoutParams(
        WindowManager.LayoutParams.WRAP_CONTENT,
        WindowManager.LayoutParams.MATCH_PARENT,
        WindowManager.LayoutParams.TYPE_PHONE,
//                WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
                | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
                | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
        PixelFormat.TRANSLUCENT);


그리고, 해당 파라메터를 이용해서 WindowManager에 "addview"를 할 레이아웃이 만약 FrameLayout이라면,

먼저, 아래와 같이 해당 레이아웃을 확장한 후, 

public class MyTopLayout extends FrameLayout {
     public MyTopLayout(Context context) {
        super(context, null, 0);
  :
}


아래와 같이 dispatchKeyEvent 코드를 작성합니다.

@Override
    public boolean dispatchKeyEvent(KeyEvent event) {
        if (event.getAction() == KeyEvent.ACTION_DOWN ) {
            switch (event.getKeyCode()) {
                case KeyEvent.KEYCODE_BACK:                    
                        myCallbackListener.onKeyEvent(event);                    
                    break;
                default:
            }
        }
        return super.dispatchKeyEvent(event);
    }


물론, 위에서 보이는 myCallbackListener의 모습은 아래와 같이 정의 되어 있겠죠?

public interface MyKeyEventCallbackListener {
    void onKeyEvent(KeyEvent event);
}


해당 인터페이스의 구현은 키 이벤트를 받고자 하는 엑티비티 등에서 하시면 됩니다. 아래와 같이 말입니다.

public class MyActivity extends Activity implements MyKeyEventCallbackListener {

   :

 @override
  void onKeyEvent(KeyEvent event) {
     //키 이벤트를 받아 대응할 코드
  }
}







번호 제목 글쓴이 날짜 조회 수
공지 [TIP] 안드로이드 앱 빌드시 "Error:Execution failed for task ':app:compileDebugJavaWithJavac'" 오류가 발생할 경우 파이팅건맨 2017.09.13 11730
공지 [TIP] 안드로이드 - 설치된 앱 목록 얻기 파이팅건맨 2016.03.22 7760
공지 [TIP] 죽지 않는 안드로이드 서비스 만들기 (Unstoppable service) [6] 파이팅건맨 2015.06.26 7224
16 [TIP] 안드로이드 앱이 처음 설치될때 Referrer 정보 받아 오기 (2020.3.1 이후) 파이팅건맨 2020.10.15 135
15 [TIP] Android 코드에서 블루투스 연결이 잘 안될때 [3] 파이팅건맨 2019.05.11 3084
14 [TIP] "cordova run android" 명령을 실행했는데 "A problem occurred evaluating project ':CordovaLib'"오류가 뜰때 파이팅건맨 2019.01.22 1115
13 [TIP] Mac에서 Cordova run android 를 실행했는데 "Command failed with exit code EACCES" 오류가 뜰때 파이팅건맨 2019.01.22 480
12 [TIP] 안드로이드에서 심박수 측정하는 코드 [18] 파이팅건맨 2019.01.02 3621
11 [TIP] 안드로이드 스튜디오에서 Error:android-apt plugin is incompatible with the Android Gradle plugin. Please use 'annotationProcessor' configuration instead 오류날때 파이팅건맨 2018.02.02 2953
10 [TIP] 안드로이드 앱 빌드시 "Error:Execution failed for task ':app:compileDebugJavaWithJavac'" 오류가 발생할 경우 파이팅건맨 2017.09.13 11730
9 [TIP] 안드로이드 앱이 처음 설치될때 Referrer 정보 받아 오기 파이팅건맨 2016.08.30 6918
8 [TIP] 안드로이드에서 구글 스프레드시트에 데이터 쓰기 파이팅건맨 2016.05.04 3155
7 [TIP] 안드로이드에서 키보드가 나타날 때 레이아웃이 위로 움직인다면 파이팅건맨 2016.03.22 1063
6 [TIP] 안드로이드 - 설치된 앱 목록 얻기 파이팅건맨 2016.03.22 7760
5 [TIP] 안드로이드의 최상단에 띄워놓은 Floating Window가 키보드를 인지하는 방법 파이팅건맨 2016.01.07 2314
» [TIP] 안드로이드의 Floating Window가 Back키를 인지 하는 방법 [2] 파이팅건맨 2016.01.07 2305
3 [TIP] 죽지 않는 안드로이드 서비스 만들기 (Unstoppable service) [6] 파이팅건맨 2015.06.26 7224
2 [TIP] 내 안드로이드 앱에 위젯을 띄우는 방법 파이팅건맨 2015.06.03 620
1 [TIP] 안드로이드 앱 삭제 방지 기능 구현 파이팅건맨 2015.06.03 4552
위로