Ejemplo n.º 1
0
        private void DoOneDeviceMonitor()
        {
            //1.获取当前连接列表
            List <Device> devices = null;

            int iRestartAttemptCount = 0;

            do
            {
                devices = FindCurConnectDevices();

                iRestartAttemptCount++;
                if (null == devices && iRestartAttemptCount >= ConstCodeHelper.MONITOR_ATTEMPTCOUNT)
                {//如果多次查找都返回null 说明adb连接失败 考虑重启ADB服务
                    LoggerManagerSingle.Instance.Error("多次创建ADB连接失败,开始重启ADB服务!");

                    AndroidDeviceHelper.StopADB();
                    AndroidDeviceHelper.StartADB();
                    return;
                }
            } while (null == devices);

            //2.获取新增设备和断开连接设备
            var sameds        = CurConnectDevs.Where(s => devices.Any(sd => sd.Equals(s))).ToList();
            var newConnecnted = devices.Except(CurConnectDevs).ToList();
            var disConnecteds = CurConnectDevs.Except(devices).ToList();

            foreach (var same in sameds)
            {
                //如果基本属性获取不成功,则重试一次
                if (same.Model == null || same.Manufacture == null)
                {
                    UpdateNewDevice(same);
                }
            }

            foreach (var add in newConnecnted)
            {
                UpdateNewDevice(add);

                OnConnected(add);
                CurConnectDevs.Add(add);
            }

            foreach (var dis in disConnecteds)
            {
                OnDisconnected(dis);
                CurConnectDevs.Remove(dis);
            }
        }
Ejemplo n.º 2
0
 public override void DoSelfPretection()
 {
     AndroidDeviceHelper.StopADB();
     AndroidDeviceHelper.StartADB();
 }