package com.edufound.mobile.xxt.util; import android.app.Activity; import android.app.Dialog; import android.os.Handler; import android.os.Handler.Callback; import android.os.Message; import android.view.Display; import android.view.Gravity; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.widget.RadioButton; import android.widget.RadioGroup; import com.edufound.mobile.xxt.R; public final class ShowSetting 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_DPAD_UP, KeyEvent.KEYCODE_DPAD_LEFT, KeyEvent.KEYCODE_DPAD_DOWN, KeyEvent.KEYCODE_DPAD_RIGHT, KeyEvent.KEYCODE_DPAD_UP, KeyEvent.KEYCODE_DPAD_LEFT, KeyEvent.KEYCODE_DPAD_DOWN, KeyEvent.KEYCODE_DPAD_RIGHT}; 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 DeviceUtil dUtil = new DeviceUtil(); 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; } } public void show(Activity act) { mContext = act; Logger.e("ShowSetting Dialog"); Dialog dialog = new Dialog(mContext); dialog.setContentView(createView()); Window dialogWindow = dialog.getWindow(); dialogWindow.setGravity(Gravity.CENTER); WindowManager m = mContext.getWindowManager(); Display d = m.getDefaultDisplay(); // 获取屏幕宽、高用 WindowManager.LayoutParams p = dialogWindow.getAttributes(); // 获取对话框当前的参数值 p.height = (int) (d.getHeight() * 0.6); p.width = (int) (d.getWidth() * 0.8); dialogWindow.setAttributes(p); dialog.setTitle("设置"); dialog.show(); } private View createView() { View infoView = LayoutInflater.from(mContext).inflate(R.layout.window_setting, null); RadioGroup rg = infoView.findViewById(R.id.setting_rg); int selectid = SPutil.getPrefInt(ContextUtil.getContext(), SPutil.videoType, 0); RadioButton moren = null; if (selectid == SPutil.VIDEO_IJKPLAYER) { moren = ((RadioButton) infoView.findViewById(R.id.setting_rg_ijk)); } else if (selectid == SPutil.VIDEO_VIDEOVIEW) { moren = ((RadioButton) infoView.findViewById(R.id.setting_rg_video)); } else { moren = ((RadioButton) infoView.findViewById(R.id.setting_rg_video)); } moren.setChecked(true); moren.requestFocus(); rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { switch (checkedId) { case R.id.setting_rg_video: ToastUtil.showToast("已选择默认播放器"); SPutil.setPrefInt(mContext, SPutil.videoType, SPutil.VIDEO_VIDEOVIEW); break; case R.id.setting_rg_ijk: ToastUtil.showToast("已选择IJKPlayer播放器"); SPutil.setPrefInt(mContext, SPutil.videoType, SPutil.VIDEO_IJKPLAYER); break; } } }); return infoView; } private static final ShowSetting INSTANCE = new ShowSetting(); public static void dispatchKeyEvent(KeyEvent e, Activity context) { try { mContext = context; getInstance().dispathInput(e); } catch (final Exception ex) { ex.printStackTrace(); } } public static ShowSetting 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: // show(); break; default: input(msg.what); break; } } catch (final Exception ex) { ex.printStackTrace(); } return true; } }