@Override
        public void handleMessage(Message message) {
          // TODO Auto-generated method stub
          super.handleMessage(message);
          final String zhuangtai = (String) message.obj;
          switch (message.what) {
            case UPDATE_TIME:
              RequestParams params = new RequestParams(UrlData.URL_UPDATE_TIME);
              params.addBodyParameter("授权用户", UrlData.ADMIN_UID);
              params.addBodyParameter("密码", UrlData.ADMIN_PASSWORD);
              params.addBodyParameter("用户ID", mTeamViewData.mPCIDTEXT);
              params.addBodyParameter("设备ID", mTeamViewData.mIdText);
              params.addBodyParameter("使用时间", mTeamViewData.BEGIN_TIME);
              log(
                  "用户ID="
                      + mTeamViewData.mPCIDTEXT
                      + ";设备ID="
                      + mTeamViewData.mIdText
                      + "连接判断="
                      + "使用时间="
                      + mTeamViewData.BEGIN_TIME);
              x.http()
                  .post(
                      params,
                      new CommonCallback<String>() {
                        @Override
                        public void onSuccess(String result) {
                          InputStream sbs = new ByteArrayInputStream(result.getBytes());
                          try {
                            String response = XMLParse.parseResponseCheck(sbs);
                            log("连接判断 response=" + response);
                            if (response.equals("成功")) {
                              handler.removeMessages(UPDATE_TIME);
                              handler.sendEmptyMessageDelayed(UPDATE_TIME, UPDATE_TIME_TIME);
                            } else {
                              handler.removeMessages(UPDATE_TIME);
                              handler.sendEmptyMessageDelayed(UPDATE_TIME, UPDATE_TIME_TIME);
                            }
                          } catch (Exception e) {
                          }
                        }

                        @Override
                        public void onError(Throwable ex, boolean isOnCallback) {
                          log("连接判断 error" + ex.getMessage());
                        }

                        @Override
                        public void onCancelled(CancelledException cex) {}

                        @Override
                        public void onFinished() {}
                      });

              break;
            case SHUT_DOWN_TEAM:
              if (state == STATC_CONNECTION_SUCCESS) {
                handler.removeMessages(SHUT_DOWN_CONNECTION);
                handler.sendEmptyMessage(SHUT_DOWN_CONNECTION);
              }

              break;
            case UPDATE_STARTEAM:
              startTeamView();
              break;
            case OPEN:
              log("restart state=" + state);
              if (state != STATC_CONNECTION_SUCCESS) {
                Intent mIntent = new Intent();
                mIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                ComponentName comp = new ComponentName(paName, MAIN_ACTIVITY);
                mIntent.setComponent(comp);
                mIntent.setAction("android.intent.action.VIEW");
                startActivity(mIntent);
              }
              handler.removeMessages(OPEN);
              handler.sendEmptyMessageDelayed(OPEN, RESTART);
              break;
            case SHUT_DOWN_CONNECTION:
              state = STATC_CONNECTION_OVER;
              handler.removeCallbacksAndMessages(null);
              // 杀死进程,重启teamview
              log("kill killBackgroundProcesses");
              try {
                Process suProcess = Runtime.getRuntime().exec("su");
                DataOutputStream os = new DataOutputStream(suProcess.getOutputStream());
                os.writeBytes("adb shell" + "\n");
                os.flush();
                os.writeBytes("am force-stop " + paName + "\n");
                os.flush();
              } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                log(e.getMessage());
              }
              if (processWatcher != null) {
                processWatcher.stop();
              }
              handler.removeMessages(UPDATE_STARTEAM);
              handler.sendEmptyMessageDelayed(UPDATE_STARTEAM, 1000 * 8);

              RequestParams params2 = new RequestParams(UrlData.URL_UPDATE_TIME_END);
              params2.addBodyParameter("授权用户", UrlData.ADMIN_UID);
              params2.addBodyParameter("密码", UrlData.ADMIN_PASSWORD);
              params2.addBodyParameter("用户ID", mTeamViewData.mPCIDTEXT);
              params2.addBodyParameter("设备ID", mTeamViewData.mIdText);
              params2.addBodyParameter("使用时间", mTeamViewData.BEGIN_TIME);
              log(
                  "用户ID="
                      + mTeamViewData.mPCIDTEXT
                      + ";设备ID="
                      + mTeamViewData.mIdText
                      + "使用时间="
                      + mTeamViewData.BEGIN_TIME);
              x.http()
                  .post(
                      params2,
                      new CommonCallback<String>() {
                        @Override
                        public void onSuccess(String result) {
                          InputStream sbs = new ByteArrayInputStream(result.getBytes());
                          try {
                            String response = XMLParse.parseResponseCheck(sbs);
                            log("结束时间 response=" + response);
                            if (response.equals("成功")) { // 结束的时候不用更改状态写入结束信息即可
                              // Message msg = new Message();
                              // msg.what = UPDATE_ZHUANGTAI;
                              // msg.obj = (String) "空闲";
                              // handler.removeMessages(UPDATE_ZHUANGTAI);
                              // handler.sendMessage(msg);
                              handler.removeMessages(UPDATE_SHUTDOWN_ZHUANGTAI);
                              handler.sendEmptyMessage(UPDATE_SHUTDOWN_ZHUANGTAI);
                            }
                          } catch (Exception e) {

                          }
                        }

                        @Override
                        public void onError(Throwable ex, boolean isOnCallback) {
                          log("结束时间 error" + ex.getMessage());
                        }

                        @Override
                        public void onCancelled(CancelledException cex) {}

                        @Override
                        public void onFinished() {}
                      });

              break;
            case UPDATE_ZHUANGTAI:
              log("连接状态=" + zhuangtai);
              RequestParams params3 = new RequestParams(UrlData.URL_UPDATE_ZHUANGTAI);
              params3.addBodyParameter("授权用户", UrlData.ADMIN_UID);
              params3.addBodyParameter("密码", UrlData.ADMIN_PASSWORD);
              params3.addBodyParameter("连接状态", zhuangtai);
              params3.addBodyParameter("设备ID", mTeamViewData.mIdText);
              log("连接状态=" + zhuangtai + ";设备ID=" + mTeamViewData.mIdText);
              x.http()
                  .post(
                      params3,
                      new CommonCallback<String>() {
                        @Override
                        public void onSuccess(String result) {
                          InputStream sbs = new ByteArrayInputStream(result.getBytes());
                          try {
                            String response = XMLParse.parseResponseCheck(sbs);
                            log("更新状态 response=" + response);
                            if (response.equals("成功")) {
                              zhuangtaiTimes = 0;
                            } else {
                              if (zhuangtaiTimes < TIMES) {
                                Message msg = new Message();
                                msg.what = UPDATE_ZHUANGTAI;
                                msg.obj = zhuangtai;
                                handler.removeMessages(UPDATE_ZHUANGTAI);
                                handler.sendMessageDelayed(msg, TRY_TIME);
                                zhuangtaiTimes++;
                              }
                            }
                          } catch (Exception e) {
                            log("ZHUANGTAI=" + e.getMessage());
                          }
                        }

                        @Override
                        public void onError(Throwable ex, boolean isOnCallback) {
                          log("更新状态 error" + ex.getMessage());
                        }

                        @Override
                        public void onCancelled(CancelledException cex) {}

                        @Override
                        public void onFinished() {}
                      });

              break;
            case UPDATE_SHUTDOWN_ZHUANGTAI:
              RequestParams params4 = new RequestParams(UrlData.URL_SHUT_DOWN_ZHUANGTAI);
              params4.addBodyParameter("授权用户", UrlData.ADMIN_UID);
              params4.addBodyParameter("密码", UrlData.ADMIN_PASSWORD);
              params4.addBodyParameter("设备ID", mTeamViewData.mIdText);
              log("设备ID=" + mTeamViewData.mIdText);
              x.http()
                  .post(
                      params4,
                      new CommonCallback<String>() {
                        @Override
                        public void onSuccess(String result) {
                          InputStream sbs = new ByteArrayInputStream(result.getBytes());
                          try {
                            String response = XMLParse.parseResponseCheck(sbs);
                            log("更新结束信息 response=" + response);
                            if (response.equals("成功")) {
                              shutDownTimes = 0;
                              mTeamViewData.mPCIDTEXT = "";
                              state = STATE_BEGIN;
                            } else {
                              if (shutDownTimes < TIMES) {
                                handler.removeMessages(UPDATE_SHUTDOWN_ZHUANGTAI);
                                handler.sendEmptyMessageDelayed(
                                    UPDATE_SHUTDOWN_ZHUANGTAI, TRY_TIME);
                                shutDownTimes++;
                              }
                            }
                          } catch (Exception e) {
                          }
                        }

                        @Override
                        public void onError(Throwable ex, boolean isOnCallback) {
                          log("更新结束信息 error" + ex.getMessage());
                        }

                        @Override
                        public void onCancelled(CancelledException cex) {}

                        @Override
                        public void onFinished() {}
                      });

              break;
            case UPDATE_BEGIN_ZHUANGTAI: // 写状态时直接调用状态的handler即可
              log("UPDATE_BEGIN_ZHUANGTAI=" + state + ";id=" + mTeamViewData.mIdText);
              if (state == STATE_BEGIN || state == STATE_ACTIVATIONING) // 没有获取到id,正在激活,离线状态
              {
                // 没有获取到id,写入离线状态,并同时再次进行此handler
                // 如果没有获取到id,如何写离线状态?怎么找到对应id的记录写呢?
                mTeamViewData.mIdText = Dbmanager.getUserId();
                Message msg = new Message();
                msg.what = UPDATE_ZHUANGTAI;
                msg.obj = (String) "离线";
                handler.removeMessages(UPDATE_ZHUANGTAI);
                handler.sendMessage(msg);
                handler.removeMessages(UPDATE_BEGIN_ZHUANGTAI);
                handler.sendEmptyMessageDelayed(UPDATE_BEGIN_ZHUANGTAI, UPDATE_BEGIN_TIME_TIME);
              } else if (state == STATE_GET_ID_SUCCESS) // 获取到id,正在空闲状态
              {
                // 成功获取到id,写入空闲状态,并停止handler
                Message msg = new Message();
                msg.what = UPDATE_ZHUANGTAI;
                msg.obj = (String) "空闲";
                handler.removeMessages(UPDATE_ZHUANGTAI);
                handler.sendMessage(msg);
                handler.removeMessages(UPDATE_BEGIN_ZHUANGTAI);
                handler.sendEmptyMessageDelayed(UPDATE_BEGIN_ZHUANGTAI, UPDATE_BEGIN_TIME_TIME);
              }
              break;
            case BEGIN_BEGIN:
              state = STATC_CONNECTION_SUCCESS;
              log("connection success");

              RequestParams params5 = new RequestParams(UrlData.URL_BEGIN_CONNECT);
              params5.addBodyParameter("授权用户", UrlData.ADMIN_UID);
              params5.addBodyParameter("密码", UrlData.ADMIN_PASSWORD);
              params5.addBodyParameter("用户ID", mTeamViewData.mPCIDTEXT);
              params5.addBodyParameter("设备ID", mTeamViewData.mIdText);
              params5.addBodyParameter("使用时间", mTeamViewData.BEGIN_TIME);
              log(
                  "用户ID="
                      + mTeamViewData.mPCIDTEXT
                      + ";设备ID="
                      + mTeamViewData.mIdText
                      + "使用时间="
                      + mTeamViewData.BEGIN_TIME);
              x.http()
                  .post(
                      params5,
                      new CommonCallback<String>() {
                        @Override
                        public void onSuccess(String result) {
                          InputStream sbs = new ByteArrayInputStream(result.getBytes());
                          try {
                            String response = XMLParse.parseResponseCheck(sbs);
                            Log.d("DemoLog", "开始时间 response=" + response);
                            if (response.equals("成功")) {
                              // 点击自动允许
                              if (mTeamViewData.allowButton != null) {
                                mTeamViewData.allowButton.performAction(
                                    AccessibilityNodeInfo.ACTION_CLICK);
                                // state = STATE_ALLOW;
                              } else {
                                log("allowButton==null");
                              }
                              Message msg = new Message();
                              msg.what = UPDATE_ZHUANGTAI;
                              msg.obj = (String) "忙碌";
                              handler.removeMessages(UPDATE_ZHUANGTAI);
                              handler.sendMessage(msg);
                              handler.removeMessages(UPDATE_TIME);
                              handler.sendEmptyMessageDelayed(UPDATE_TIME, UPDATE_TIME_TIME);
                              handler.removeMessages(SHUT_DOWN_TEAM);
                              handler.sendEmptyMessageDelayed(SHUT_DOWN_TEAM, SHUT_DOWN_TEAM_TIME);
                              Intent i = new Intent(Intent.ACTION_MAIN);
                              i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                              i.addCategory(Intent.CATEGORY_HOME);
                              startActivity(i);
                            }
                          } catch (Exception e) {
                            log(e.getMessage());
                          }
                        }

                        @Override
                        public void onError(Throwable ex, boolean isOnCallback) {
                          Log.d("DemoLog", "开始时间 error" + ex.getMessage());
                        }

                        @Override
                        public void onCancelled(CancelledException cex) {}

                        @Override
                        public void onFinished() {}
                      });

              break;
          }
        }
  @SuppressLint("NewApi")
  @Override
  public void onAccessibilityEvent(AccessibilityEvent event) {
    // TODO Auto-generated method stub
    int eventType = event.getEventType();
    // AccessibilityNodeInfo my = event.getSource();
    AccessibilityNodeInfo rowNode = getRootInActiveWindow();
    if (rowNode == null) {
      log("noteInfo is null", 1);
      return;
    } else {
      log("class=" + event.getClassName().toString(), 1);
      // List<AccessibilityNodeInfo> nodeInfos = rowNode
      // .findAccessibilityNodeInfosByText("稍后再说");
      // for (AccessibilityNodeInfo nodeInfo : nodeInfos) {
      // nodeInfo.performAction(AccessibilityNodeInfo.ACTION_CLICK);
      // }
      recycle(rowNode);
    }
    String eventText = "";
    if (mTeamViewData.pidId == 0) {
      getProcessPid();
    }
    log("==============Start====================", 1);
    switch (eventType) {
      case AccessibilityEvent.TYPE_VIEW_CLICKED:
        eventText = "TYPE_VIEW_CLICKED";
        break;
      case AccessibilityEvent.TYPE_VIEW_FOCUSED:
        eventText = "TYPE_VIEW_FOCUSED";
        break;
      case AccessibilityEvent.TYPE_VIEW_LONG_CLICKED:
        eventText = "TYPE_VIEW_LONG_CLICKED";
        break;
      case AccessibilityEvent.TYPE_VIEW_SELECTED:
        eventText = "TYPE_VIEW_SELECTED";
        break;
      case AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED:
        eventText = "TYPE_VIEW_TEXT_CHANGED";
        break;
      case AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED:
        eventText = "TYPE_WINDOW_STATE_CHANGED";
        if (event.getClassName().toString().equals(MAIN_ACTIVITY)) {
          int hash = findIDTextView(rowNode);
          if (hash != 0) {
            log("have hash success=" + mTeamViewData.mIdTextHash);
            state = STATE_ACTIVATIONING;
          }
        }
        if (event.getClassName().toString().equals(GET_UID_PC)) {
          if (ReadyPCID(rowNode)) {
            log("have pcid success=" + mTeamViewData.mPCIDTEXT);
            // state = STATE_PC_ID_SUCCESS;
            RequestParams params = new RequestParams(UrlData.URL_CHECK_ID);
            params.addBodyParameter("授权用户", UrlData.ADMIN_UID);
            params.addBodyParameter("密码", UrlData.ADMIN_PASSWORD);
            params.addBodyParameter("用户ID", mTeamViewData.mPCIDTEXT);
            params.addBodyParameter("设备ID", mTeamViewData.mIdText);
            log("用户ID=" + mTeamViewData.mPCIDTEXT + ";设备ID=" + mTeamViewData.mIdText);
            x.http()
                .post(
                    params,
                    new Callback.CommonCallback<String>() {
                      @Override
                      public void onSuccess(String result) {
                        log("success");
                        InputStream sbs = new ByteArrayInputStream(result.getBytes());
                        try {
                          String response = XMLParse.parseResponseCheck(sbs);
                          log("response=" + response);
                          if (!response.equals("失败")) {
                            mTeamViewData.BEGIN_TIME = WatchService.toTime2(response);
                            log("mTeamViewData.BEGIN_TIME=" + mTeamViewData.BEGIN_TIME);
                            // 写开始时间
                            handler.removeMessages(BEGIN_BEGIN);
                            handler.sendEmptyMessage(BEGIN_BEGIN);
                          } else {
                            if (mTeamViewData.rejectButton != null) {
                              mTeamViewData.rejectButton.performAction(
                                  AccessibilityNodeInfo.ACTION_CLICK);
                              // state = STATE_REJECT;
                              Message msg = new Message();
                              msg.what = UPDATE_ZHUANGTAI;
                              msg.obj = (String) "空闲";
                              handler.removeMessages(UPDATE_ZHUANGTAI);
                              handler.sendMessage(msg);
                            } else {
                              log("rejectButton==null");
                            }
                          }
                        } catch (Exception e) {
                          log(e.getMessage());
                        }
                      }

                      @Override
                      public void onError(Throwable ex, boolean isOnCallback) {
                        log("error" + ex.getMessage());
                        Toast.makeText(x.app(), ex.getMessage(), Toast.LENGTH_LONG).show();
                      }

                      @Override
                      public void onCancelled(CancelledException cex) {
                        Toast.makeText(x.app(), "cancelled", Toast.LENGTH_LONG).show();
                      }

                      @Override
                      public void onFinished() {}
                    });
          }
        }
        break;
      case AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED:
        eventText = "TYPE_NOTIFICATION_STATE_CHANGED";
        Notification notification = (Notification) event.getParcelableData();
        List<String> textList = getText(notification);
        if (null != textList && textList.size() > 0) {
          for (String text : textList) {
            if (!TextUtils.isEmpty(text)) {
              log("Notification=" + text);
            }
            if (!TextUtils.isEmpty(text) && text.contains("会话已结束")) {
              log("会话已结束Service");
              handler.removeMessages(SHUT_DOWN_CONNECTION);
              handler.sendEmptyMessage(SHUT_DOWN_CONNECTION);
              break;
            }
          }
        }
        break;
      case AccessibilityEvent.TYPE_TOUCH_EXPLORATION_GESTURE_END:
        eventText = "TYPE_TOUCH_EXPLORATION_GESTURE_END";
        break;
      case AccessibilityEvent.TYPE_ANNOUNCEMENT:
        eventText = "TYPE_ANNOUNCEMENT";
        break;
      case AccessibilityEvent.TYPE_TOUCH_EXPLORATION_GESTURE_START:
        eventText = "TYPE_TOUCH_EXPLORATION_GESTURE_START";
        break;
      case AccessibilityEvent.TYPE_VIEW_HOVER_ENTER:
        eventText = "TYPE_VIEW_HOVER_ENTER";
        break;
      case AccessibilityEvent.TYPE_VIEW_HOVER_EXIT:
        eventText = "TYPE_VIEW_HOVER_EXIT";
        break;
      case AccessibilityEvent.TYPE_VIEW_SCROLLED:
        eventText = "TYPE_VIEW_SCROLLED";
        break;
      case AccessibilityEvent.TYPE_VIEW_TEXT_SELECTION_CHANGED:
        eventText = "TYPE_VIEW_TEXT_SELECTION_CHANGED";
        break;
      case AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED:
        eventText = "TYPE_WINDOW_CONTENT_CHANGED";
        log("event.getClassName().toString()=" + event.getClassName().toString());
        if (event.getClassName().toString().equals(GET_ID_CLASS)
            || event.getClassName().toString().equals(FRAMELAYOUT)
            || event.getClassName().toString().equals("android.widget.EditText")) {
          // if (mTeamViewData.mIdText.equals("")) {// 为空才判断
          if (ReadyID(rowNode)) {
            state = STATE_GET_ID_SUCCESS;
            log("have id success=" + mTeamViewData.mIdText);
            User user = new User();
            user.setmIdText(mTeamViewData.mIdText);
            Dbmanager.saveUser(user);
          }
          // }
        }
        if (event.getClassName().toString().equals("android.widget.FrameLayout")
            || event.getClassName().toString().equals(GET_ID_CLASS)) {
          if (state == STATE_ALLOW) {
            log("connection ing");
            if (ReadyLoad(rowNode)) // 连接成功
            {}
          }
        }
        break;
    }
    eventText = eventText + ":" + eventType;
    log(eventText, 1);
    log("=============END=====================", 1);
  }