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. "); } }
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; } } } }