123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- package com.edufound.mobile.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.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;
- }
- }
|