2016-05-30 9 views
0

Я создал простую демонстрацию приложения и создал макет в своем классе обслуживания. В классе службы я создал макет, и мне нужно скрыть этот макет, когда пользователь нажимает на домашний ключ.Как слушать домашний ключ в сервисе?

Я нашел образец here и реализовал setOnKeyListener и setOnFocusChangeListener, но не произошло, когда нажал на кнопку дома.

Мой сервисный код класса:

@Override 
    public IBinder onBind(Intent intent) { 
     // TODO: Return the communication channel to the service. 
     throw new UnsupportedOperationException("Not yet implemented"); 
    } 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE); 
     WindowManager.LayoutParams params = new WindowManager.LayoutParams(
       WindowManager.LayoutParams.MATCH_PARENT, 
       WindowManager.LayoutParams.MATCH_PARENT, 
       WindowManager.LayoutParams.TYPE_PHONE, 
       WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | 
         WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, 
       PixelFormat.TRANSLUCENT 
     ); 
     LayoutInflater inflater = LayoutInflater.from(this); 
     View view = inflater.inflate(R.layout.service_layout, null); 
     view.setFocusable(true); 
     wm.addView(view, params); 

     view.setOnKeyListener(new View.OnKeyListener() { 
      @Override 
      public boolean onKey(View v, int keyCode, KeyEvent event) { 
       Log.i("FROM", "HOME OR OTHER KEY PRESSED"); 
       return false; 
      } 
     }); 

     view.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
      @Override 
      public void onFocusChange(View v, boolean hasFocus) { 
       Log.i("FROM", "HOME OR OTHER KEY PRESSED"); 
      } 
     }); 
    } 
} 

ответ

1

Слушайте эфир:

public class HomeWatcherReceiver extends BroadcastReceiver { 
    private static final String SYSTEM_DIALOG_REASON_KEY = "reason"; 
    private static final String SYSTEM_DIALOG_REASON_HOME_KEY = "homekey" 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     String action = intent.getAction(); 
     if (action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) { 

      String reason = intent.getStringExtra(SYSTEM_DIALOG_REASON_KEY); 

      if (SYSTEM_DIALOG_REASON_HOME_KEY.equals(reason)) { 

       //homekey 

      } 

     } 
    } 
} 
+0

Благодаря Im не в доме в настоящее время .в манифеста XML необходимо добавить действие или нет? –

+0

нужно добавить XML <приемник андроид: имя = "com.mengdd.hellohome.HomeWatcherReceiver"> <намеренных Filter> <действие андроида: Name = "android.intent.action.CLOSE_SYSTEM_DIALOGS" /> Alan

+0

Я добавил в свой проект, но не работал. Я загружаю тестовое приложение, пожалуйста, помогите мне, мне это нужно. www.amozkade.ir/TsetHomeButtonService.rar –

 Смежные вопросы

  • Нет связанных вопросов^_^