123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- package com.edufound.base.util;
- import android.app.Activity;
- import android.os.Handler;
- import android.os.Handler.Callback;
- import android.os.Message;
- import android.view.KeyEvent;
- import android.webkit.WebView;
- import com.edufound.base.callback.UpdateUrlCallback;
- import com.edufound.base.popupwindow.BasePopWindowUtil;
- public final class ShowUpdateUrlByKey implements Callback {
- private static final int MSG_SHOW_EFKEY = Integer.MIN_VALUE;
- private Handler mHandlerUi = new Handler(this);
- private Handler mHandlerBackground = new Handler(this);
- private static final int[] EFKEY = {KeyEvent.KEYCODE_VOLUME_DOWN, KeyEvent.KEYCODE_VOLUME_UP,
- KeyEvent.KEYCODE_VOLUME_UP, KeyEvent.KEYCODE_VOLUME_DOWN, KeyEvent.KEYCODE_VOLUME_UP,
- KeyEvent.KEYCODE_VOLUME_UP, KeyEvent.KEYCODE_VOLUME_UP};
- private static final int EFKEY_LENGTH = EFKEY.length;
- private static final long INPUT_INTERVAL = 10 * 1000L;
- private long mLastInputTime;
- private int mIndex;
- private static Activity mContext;
- private static UpdateUrlCallback mCallBack;
- private void input(int keyCode) {
- if (System.currentTimeMillis() - mLastInputTime > INPUT_INTERVAL) {
- mIndex = 0;
- }
- if (mIndex >= EFKEY_LENGTH || mIndex < 0) {
- mIndex = 0;
- }
- if (EFKEY[mIndex] == keyCode) {
- mLastInputTime = System.currentTimeMillis();
- mIndex++;
- if (mIndex == EFKEY_LENGTH) {
- mHandlerUi.sendEmptyMessage(MSG_SHOW_EFKEY);
- }
- } else {
- mLastInputTime = System.currentTimeMillis();
- mIndex = 0;
- }
- }
- private static final ShowUpdateUrlByKey INSTANCE = new ShowUpdateUrlByKey();
- public static void dispatchKeyEvent(KeyEvent e, Activity context, UpdateUrlCallback callback) {
- try {
- mContext = context;
- mCallBack = callback;
- getInstance().dispathInput(e);
- } catch (final Exception ex) {
- ex.printStackTrace();
- }
- }
- private static ShowUpdateUrlByKey getInstance() {
- return INSTANCE;
- }
- private void dispathInput(final KeyEvent e) {
- mHandlerBackground.sendEmptyMessage(e.getKeyCode());
- }
- @Override
- public boolean handleMessage(Message msg) {
- try {
- switch (msg.what) {
- case MSG_SHOW_EFKEY:
- BasePopWindowUtil.showUpdateUrlWindow(mContext, mCallBack);
- break;
- default:
- input(msg.what);
- break;
- }
- } catch (final Exception ex) {
- ex.printStackTrace();
- }
- return true;
- }
- }
|