示例#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)
                {
                    response = Util.ReadProtoRawData(mResponseBuffer, 3);
                    response = Util.ReadProtoRawData(response, 1);
                    byte[] decryptedData = AES.Decrypt(Util.ReadProtoRawData(response, 2), pack.NotifyKey);

                    //Log.d("NetSceneCheckLoginQRCode", " thread id " + Thread.CurrentThread.ManagedThreadId.ToString());
                    //Log.d("NetSceneCheckLoginQRCode", " decryptedData " + Util.byteToHexStr(decryptedData));


                    CheckQrcode qrcode = new CheckQrcode();

                    qrcode.Uuid   = Encoding.UTF8.GetString(Util.ReadProtoRawData(decryptedData, 1));
                    qrcode.Status = Util.ReadProtoInt(decryptedData, 2);
                    byte[] headUrl = Util.ReadProtoRawData(decryptedData, 5);

                    if (headUrl != null)
                    {
                        qrcode.HeadImgUrl = Encoding.UTF8.GetString(headUrl);

                        qrcode.Nickname = Encoding.UTF8.GetString(Util.ReadProtoRawData(decryptedData, 7));
                    }
                    qrcode.ExpiredTime = Util.ReadProtoInt(decryptedData, 8);
                    if (qrcode.Status == 2)
                    {
                        qrcode.Username = Encoding.UTF8.GetString(Util.ReadProtoRawData(decryptedData, 3));
                        qrcode.Password = Encoding.UTF8.GetString(Util.ReadProtoRawData(decryptedData, 4));
                        EventCenter.postEvent(EventConst.ON_LOGIN_CHECKQRCODE, qrcode, null);
                        return;
                    }



                    EventCenter.postEvent(EventConst.ON_LOGIN_CHECKQRCODE, qrcode, null);
                    Thread.Sleep(1500);

                    new NetSceneCheckLoginQRCode().doScene(Encoding.UTF8.GetString(Util.ReadProtoRawData(decryptedData, 1)), pack.NotifyKey);
                }
            }
            else
            {
                Log.e("NetSceneCheckLoginQRCode", "NetSceneCheckLoginQRCode failed. ");
            }
        }
示例#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;
                    }
                }
            }
        }