zoukankan      html  css  js  c++  java
  • android的Home键的监听封装工具类(一)

    android的Home键的监听封装:

     1 package com.gzcivil.utils;
     2 
     3 import android.content.BroadcastReceiver;
     4 import android.content.Context;
     5 import android.content.Intent;
     6 import android.content.IntentFilter;
     7 
     8 /**
     9  * Home键监听封装
    10  * 
    11  */
    12 public class HomeListener {
    13 
    14     static final String TAG = "HomeListener";
    15     private Context mContext;
    16     private IntentFilter mFilter;
    17     private OnHomePressedListener mListener;
    18     private InnerRecevier mRecevier;
    19 
    20     // 回调接口
    21     public interface OnHomePressedListener {
    22         public void onHomePressed();
    23         public void onHomeLongPressed();
    24     }
    25 
    26     public HomeListener(Context context) {
    27         mContext = context;
    28         mFilter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
    29     }
    30 
    31     /**
    32      * 设置监听
    33      * 
    34      * @param listener
    35      */
    36     public void setOnHomePressedListener(OnHomePressedListener listener) {
    37         mListener = listener;
    38         mRecevier = new InnerRecevier();
    39     }
    40 
    41     /**
    42      * 开始监听,注册广播
    43      */
    44     public void startWatch() {
    45         if (mRecevier != null) {
    46             mContext.registerReceiver(mRecevier, mFilter);
    47         }
    48     }
    49 
    50     /**
    51      * 停止监听,注销广播
    52      */
    53     public void stopWatch() {
    54         if (mRecevier != null) {
    55             mContext.unregisterReceiver(mRecevier);
    56         }
    57     }
    58 
    59     /**
    60      * 广播接收者
    61      */
    62     class InnerRecevier extends BroadcastReceiver {
    63         final String SYSTEM_DIALOG_REASON_KEY = "reason";
    64         final String SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS = "globalactions";
    65         final String SYSTEM_DIALOG_REASON_RECENT_APPS = "recentapps";
    66         final String SYSTEM_DIALOG_REASON_HOME_KEY = "homekey";
    67 
    68         @Override
    69         public void onReceive(Context context, Intent intent) {
    70             String action = intent.getAction();
    71             if (action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) {
    72                 String reason = intent.getStringExtra(SYSTEM_DIALOG_REASON_KEY);
    73                 if (reason != null) {
    74                     // Log.e(TAG, "action:" + action + ",reason:" + reason);
    75                     if (mListener != null) {
    76                         if (reason.equals(SYSTEM_DIALOG_REASON_HOME_KEY)) {
    77                             // 短按home键
    78                             mListener.onHomePressed();
    79                         } else if (reason.equals(SYSTEM_DIALOG_REASON_RECENT_APPS)) {
    80                             // 长按home键
    81                             mListener.onHomeLongPressed();
    82                         }
    83                     }
    84                 }
    85             }
    86         }
    87     }
    88 }
  • 相关阅读:
    HashMap底层实现原理(JDK1.8)源码分析
    JVM总结
    初识Nosql
    线程池总结
    Linux中常用操作命令
    JAVA—集合框架
    TeKtronix TDS210数字示波器使用简介
    硬盘的物理结构
    Unicode 与 UTF
    I2C串行总线
  • 原文地址:https://www.cnblogs.com/lijinlun0825/p/5174703.html
Copyright © 2011-2022 走看看