Ejemplo n.º 1
0
        private void onCompleted(object sender, PackEventArgs e)
        {
            SessionPack pack = sender as SessionPack;

            byte[] mResponseBuffer = pack.mResponseBuffer;
            if (e.isSuccess() && (mResponseBuffer != null))
            {
                //
                //  int num2 = Util.readInt(mResponseBuffer, ref offset);
                //Log.d("GetLoginQRCode", "mResponseBuffer" + Util.byteToHexStr(mResponseBuffer));


                byte[] response = Util.ReadProtoRawData(mResponseBuffer, 1);
                uint   Ret      = Util.ReadProtoInt(response, 1);

                RetConst ret    = (RetConst)Ret;
                int      offset = 0;

                if (ret == RetConst.MM_OK)
                {
                    GetLoginQrcode qrcode = new GetLoginQrcode();
                    response         = Util.ReadProtoRawData(mResponseBuffer, 2);
                    qrcode.ImgBuf    = Util.ReadProtoRawData(response, 2);
                    qrcode.Uuid      = Encoding.UTF8.GetString(Util.ReadProtoRawData(mResponseBuffer, 3));
                    qrcode.CheckTime = Util.ReadProtoInt(mResponseBuffer, 4);

                    response           = Util.ReadProtoRawData(mResponseBuffer, 5);
                    qrcode.NotifyKey   = Util.ReadProtoRawData(response, 2);
                    qrcode.ExpiredTime = Util.ReadProtoInt(mResponseBuffer, 6);
                    //  Log.d("GetLoginQRCode", " thread id " + Thread.CurrentThread.ManagedThreadId.ToString());
                    EventCenter.postEvent(EventConst.ON_LOGIN_GETQRCODE, qrcode, null);
                }
            }
            else
            {
                Log.e("GetLoginQRCode", "GetLoginQRCode failed. ");
            }
        }
Ejemplo n.º 2
0
        private void onEventHandlerCheckLoginQrcode(EventWatcher watcher, BaseEventArgs evtArgs)
        {
            if (evtArgs != null)
            {
                if (evtArgs.mEventID == EventConst.ON_LOGIN_GETQRCODE)
                {
                    GetLoginQrcode qrcode = evtArgs.mObject as GetLoginQrcode;
                    if (qrcode.ImgBuf != null)
                    {
                        pB_ShowQrcode.BeginInvoke(new Action(() => pB_ShowQrcode.Image = Image.FromStream(new MemoryStream(qrcode.ImgBuf))));

                        new NetSceneCheckLoginQRCode().doScene(qrcode.Uuid, qrcode.NotifyKey);
                        qrcode.ImgBuf = null;
                    }
                }

                if (evtArgs.mEventID == EventConst.ON_LOGIN_CHECKQRCODE)
                {
                    CheckQrcode qrcode = evtArgs.mObject as CheckQrcode;

                    // Log.d("event", "event thread id " + Thread.CurrentThread.ManagedThreadId.ToString());
                    switch (qrcode.Status)
                    {
                    case 0:
                        lab_ShowMsg.BeginInvoke(new Action(() => lab_ShowMsg.Text = "未扫描 剩余时间" + qrcode.ExpiredTime.ToString() + "S"));
                        break;

                    case 1:
                        lab_ShowMsg.BeginInvoke(new Action(() => lab_ShowMsg.Text = "已扫描 未确认  剩余时间" + qrcode.ExpiredTime.ToString() + "S"));


                        using (WebClient _client = new WebClient())
                        {
                            pB_ShowQrcode.Image = Image.FromStream(new MemoryStream(_client.DownloadData(qrcode.HeadImgUrl)));
                        }

                        break;

                    case 2:
                        lab_ShowMsg.BeginInvoke(new Action(() => lab_ShowMsg.Text = "已确认 " + qrcode.Nickname));

                        //ServiceCenter.sceneAuth.QrcodeLogin(qrcode.Username, qrcode.Password);


                        EventCenter.removeEventWatcher(EventConst.ON_LOGIN_GETQRCODE, this.m_WatcherCheckLoginQrcode);
                        EventCenter.removeEventWatcher(EventConst.ON_LOGIN_CHECKQRCODE, this.m_WatcherCheckLoginQrcode);

                        new NetSceneNewAuth().doScene(qrcode.Username, qrcode.Password);

                        if (Directory.Exists(Directory.GetCurrentDirectory() + "\\User\\" + qrcode.Username + "\\") == false)    //如果不存在就创建file文件夹
                        {
                            Directory.CreateDirectory(Directory.GetCurrentDirectory() + "\\User\\" + qrcode.Username);
                            Directory.CreateDirectory(Directory.GetCurrentDirectory() + "\\User\\" + qrcode.Username + "\\" + ConstantsProtocol.ChatRoomPath);
                        }
                        break;

                    case 4:
                        lab_ShowMsg.BeginInvoke(new Action(() => lab_ShowMsg.Text = "已取消扫描"));
                        break;

                    default:
                        lab_ShowMsg.BeginInvoke(new Action(() => lab_ShowMsg.Text = "debug Status" + qrcode.Status.ToString() + "S"));
                        break;
                    }
                }
            }
        }