Ejemplo n.º 1
0
        /// <summary>
        /// 连接设备并初始化基础服务
        /// </summary>
        /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
        private bool ConnectAndInitService()
        {
            bool      result             = false;
            kAMDError kAMDUndefinedError = kAMDError.kAMDUndefinedError;

            try
            {
                if (this.Connect() != (int)kAMDError.kAMDSuccess)
                {
                    return(false);
                }
                //TODO:初始化设备信息
                if (MobileDevice.AMDeviceValidatePairing(this.DevicePtr) != (int)kAMDError.kAMDSuccess)
                {
                    kAMDUndefinedError = (kAMDError)MobileDevice.AMDevicePair(this.DevicePtr);
                    if (kAMDUndefinedError != kAMDError.kAMDSuccess)
                    {
                        this.Disconnect();
                        return(false);
                    }
                }
                this.isSessionOpen = false;//确保Session已打开
                if (this.StartSession(false) == (int)kAMDError.kAMDSuccess)
                {
                    //TODO:初始化服务,填充基础数据
                    this.isConnected = true;
                    this.StopSession();
                    result = true;
                }
            }
            catch
            {
            }
            return(result);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 开启Session。Session需要在调用服务前先行打开,然后完成服务操作后自行关闭(函数会自动关闭),否则可能会遇到无法打开服务的错误
        /// </summary>
        /// <returns></returns>
        public kAMDError StartSession(bool isRretry = false)
        {
            var kAMDSuccess = kAMDError.kAMDSuccess;

            try
            {
                if (!this.isSessionOpen)
                {
                    kAMDSuccess = (kAMDError)MobileDevice.AMDeviceStartSession(this.DevicePtr);
                    if (kAMDSuccess != kAMDError.kAMDInvalidHostIDError)
                    {
                        if (kAMDSuccess != (int)kAMDError.kAMDSuccess)
                        {
                            //修复:Session关闭后一段时间无法再次打开的问题
                            if (!isRretry)
                            {
                                this.Disconnect();
                                this.Connect();
                                return(StartSession(true));
                            }
                            return(kAMDSuccess);
                        }
                        this.isSessionOpen = true;
                        return(kAMDSuccess);
                    }
                    if ((MobileDevice.AMDeviceUnpair(this.DevicePtr) == (int)kAMDError.kAMDSuccess) &&
                        (MobileDevice.AMDevicePair(this.DevicePtr) == (int)kAMDError.kAMDSuccess))
                    {
                        kAMDSuccess = (kAMDError)MobileDevice.AMDeviceStartSession(this.DevicePtr);
                        if (kAMDSuccess != kAMDError.kAMDSuccess)
                        {
                            return(kAMDSuccess);
                        }
                        this.isSessionOpen = true;
                        return(kAMDSuccess);
                    }
                }
                return(kAMDSuccess);
            }
            catch
            {
                kAMDSuccess = kAMDError.kAMDUndefinedError;
            }
            return(kAMDSuccess);
        }