AdminFragment.java 13 KB
package com.sunvote.xpadapp.fragments;

import java.util.Timer;
import java.util.TimerTask;

import com.sunvote.xpadapp.R;
import com.sunvote.xpadapp.base.BaseFragment;
import com.sunvote.xpadapp.utils.SharedPreferencesUtil;
import com.sunvote.xpadcomm.ScreenUtil;
import com.sunvote.xpadcomm.XPadSystem;

import android.app.AlertDialog;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.PowerManager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.inputmethod.EditorInfo;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.TextView;
import android.view.View.OnClickListener;
import android.widget.Toast;

public class AdminFragment extends BaseFragment {
    public TextView tvSn;
    TextView tvModalInfo;
    String TAG = "AdminFragment";
    private int comTestCnt;
    private int comTestCnt2;
    private int comTestOkCnt;
    private ProgressDialog dlg = null;
    private Integer comTestInterval=20;
    private static final String COMTESTINTERVAL = "comTestInterval";
    private boolean stopComTest ;
	
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_admin, container, false);
        tvModalInfo = (TextView) view.findViewById(R.id.admin_modal_info);
        tvSn = (TextView) view.findViewById(R.id.admin_modal_sn);
        setKeySn();

        mMainActivity.adminFragment = this;
        comTestInterval = (Integer) SharedPreferencesUtil.getData(getActivity(),COMTESTINTERVAL,Integer.valueOf(20));
        try {
            tvModalInfo.setText(getString(R.string.app_version) + getVersionName(getActivity()) + "  " + getString(R.string.hardware_ver) + mMainActivity.mModelInfo.hModel + "  " + getString(R.string.firmware_ver)
                    + mMainActivity.mModelInfo.sVer);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        ImageButton btnBack = (ImageButton) view.findViewById(R.id.admin_btnback);
        btnBack.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                timer.cancel();
                goBack();
            }
        });

        Button btnMatch = (Button) view.findViewById(R.id.admin_match);
        btnMatch.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.d("AdminFragment", "btnMatch");
                mMainActivity.presenter.execKeypadMatch(0, 0);
            }
        });

        Button btnConfig = (Button) view.findViewById(R.id.admin_config_mode);
        btnConfig.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Log.d("AdminFragment", "btnConfig");
                mMainActivity.presenter.configMode();

            }
        });

        Button btnReboot = (Button) view.findViewById(R.id.admin_btnReboot);
        btnReboot.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
                builder.setMessage("确认要重启吗?");
                builder.setTitle("重启");
                builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                        XPadSystem.rebootXPad(getActivity());
                    }
                });

                builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                    }
                });

                builder.create().show();


            }
        });

        Button btnPowerOff = (Button) view.findViewById(R.id.admin_btnShutdown);
        btnPowerOff.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
                builder.setMessage("确认要关机吗?");
                builder.setTitle("关机");
                builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                        XPadSystem.powerOffXPad(getActivity());
                    }
                });

                builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                    }
                });

                builder.create().show();

            }
        });

        Button btnInterval = (Button) view.findViewById(R.id.admin_btnInterval);
        btnInterval.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {

                final EditText inputEt= new EditText(getActivity());
                inputEt.setText(String.format("%d",comTestInterval));
                inputEt.setSelectAllOnFocus(true);
                inputEt.setInputType(EditorInfo.TYPE_CLASS_PHONE);
                AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
                builder.setTitle(getString(R.string.setcomtest_interval)).setIcon(android.R.drawable.ic_dialog_info).setView(inputEt)
                        .setNegativeButton(getString(R.string.cancel), null);
                builder.setPositiveButton(getString(R.string.ok), new DialogInterface.OnClickListener() {

                    public void onClick(DialogInterface dialog, int which) {
                        inputEt.getText().toString();
                        comTestInterval = Integer.parseInt(inputEt.getText().toString());
                        SharedPreferencesUtil.saveData(getActivity(),COMTESTINTERVAL,comTestInterval);

                    }
                });
                builder.show();


//                final Thread thread = new Thread("getInfo") {
//                    public void run() {
//                        try {
//                            mMainActivity.presenter.getWorkMode();
//                            Thread.sleep(100);
//                            mMainActivity.presenter.getKeypadParam();
//                        }catch (Exception e){
//                            e.printStackTrace();
//                        }
//
//                    }
//                };
//                thread.start();
            }
        });

        Button btnComTest = (Button) view.findViewById(R.id.admin_btnComTest);
        //btnComTest.setVisibility(View.INVISIBLE);
        btnComTest.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                comTestCnt = 0;
                comTestOkCnt = 0;
                comTestCnt2 = 0;
                dlg = new ProgressDialog(mMainActivity);
                dlg.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);// 设置水平进度条
                dlg.setCancelable(false);// 设置是否可以通过点击Back键取消
                dlg.setCanceledOnTouchOutside(false);// 设置在点击Dialog外是否取消Dialog进度条
                dlg.setIcon(R.drawable.ic_launcher);// 设置提示的title的图标,默认是没有的
                dlg.setTitle("串口通讯测试");
                dlg.setMax(200);
                dlg.setProgress(0);
                dlg.setMessage("串口通讯测试 收到次数:" + comTestCnt + "  成功次数:" + comTestOkCnt);
                dlg.setButton(DialogInterface.BUTTON_POSITIVE, "确定",
                        new DialogInterface.OnClickListener() {

                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                stopComTest = true;
                                mMainActivity.hideBottomUIMenu();
                                mMainActivity.showBottomUIMenu();
                              //  Toast.makeText(getActivity(),"收到次数:"+ comTestCnt2,Toast.LENGTH_LONG).show();
                            }
                        });
                dlg.show();

                stopComTest = false;
                Thread checkCom = new Thread("checkCom") {
                    public void run() {
                        for (int i = 1; i <= 200; i++) {
                            if(stopComTest){
                                break;
                            }
                            mMainActivity.presenter.comCommunicationTest(i, comTestOkCnt);
                            dlg.setProgress(i);
                            try {
                                Thread.sleep(comTestInterval);
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }
                        }
                    }
                };
                checkCom.start();

            }
        });


        timer.schedule(task, 1000, 1000);


        return view;
    }



    private static final int Msg_ComResponse = 1;
    private Handler mHandle = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            switch (msg.what) {
                case Msg_ComResponse:
                    Log.i(TAG, "handleMessage: on ComResponse");
                    comTestCnt++;
                    if (msg.arg1 != 0) {
                        comTestOkCnt++;
                    }
                    dlg.setMessage("串口通讯测试 收到次数:" + comTestCnt + "  成功次数:" + comTestOkCnt);
                    break;
                default:
                    break;
            }
        }
    };

    @Override
    public void onResume() {
        // TODO Auto-generated method stub

        mMainActivity.showBottomUIMenu();
        super.onResume();
    }

    @Override
    public void onStop() {
        Log.d("adminFr", "onstop");

        mMainActivity.hideBottomUIMenu();
        super.onStop();
    }

    @Override
    public void onDetach() {
        super.onDetach();
        mMainActivity.adminFragment = null;
    }

    private final Timer timer = new Timer();
    private final Timer timerCom = new Timer();

    Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {

            super.handleMessage(msg);
            if (msg.what == 111) {
                setKeySn();

            }
        }
    };

    private TimerTask task = new TimerTask() {
        @Override
        public void run() {
            // TODO Auto-generated method stub
            Message message = new Message();
            message.what = 111;
            handler.sendMessage(message);
        }
    };




    public void setKeySn() {

        try {
            tvSn.setText("SN:" + mMainActivity.mOnlineInfo.keySn);
            tvModalInfo.setText(getString(R.string.app_version) + getVersionName(getActivity()) + "  " + getString(R.string.hardware_ver) + mMainActivity.mModelInfo.hModel + "  " + getString(R.string.firmware_ver)
                    + mMainActivity.mModelInfo.sVer);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public static String getVersionName(Context context) throws Exception {
        String version = "";

        PackageManager packageManager = context.getPackageManager();

        PackageInfo packInfo = packageManager.getPackageInfo(context.getPackageName(), 0);
        version = packInfo.versionName;// + "." + packInfo.versionCode;

        return version;
    }

    private void goBack() {
        FragmentManager fm = getFragmentManager();
        FragmentTransaction tx = fm.beginTransaction();
        tx.setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out);
        //tx.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
        tx.remove(AdminFragment.this);
        tx.commit();

    }


    public void onComCommunicationTest(final int sendn, final boolean checkOk) {
        Message msg = new Message();
        msg.what = Msg_ComResponse;
        msg.arg1 = checkOk ? 1 : 0;
        mHandle.sendMessage(msg);
        comTestCnt2++;
        Log.i(TAG, "onComCommunicationTest: send Msg_ComResponse");
    }

}