Selaa lähdekoodia

qr loop logic tune up

billyyoyo 6 vuotta sitten
vanhempi
commit
bf7d21e428

+ 8 - 1
app/src/main/java/com/sheep/gamegroup/module/home/fragment/FgtMainHeader.java

@@ -14,6 +14,7 @@ import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.MessageUnReadEntity;
 import com.sheep.gamegroup.model.entity.UserEntity;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
+import com.sheep.gamegroup.module.qrcode.QRCodeActivity;
 import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.util.Constant;
 import com.sheep.gamegroup.util.DataUtil;
@@ -153,7 +154,13 @@ public class FgtMainHeader extends BaseFragment {
 
     @OnClick(R.id.iv_user_face)
     public void onFaceClick() {
-        Jump2View.getInstance().goPersonnalCenterView(getActivity(), null);
+//        Jump2View.getInstance().goPersonnalCenterView(getActivity(), null);
+        Intent intent = new Intent(getActivity(), QRCodeActivity.class);
+        intent.putExtra("req", "sheep://liveness");
+        intent.putExtra("token", SpUtils.getToken(getContext()));
+        intent.putExtra("extra", "");
+        intent.putExtra("message", "检测到你的账号异常,需要人脸识别验证");
+        startActivityForResult(intent, Constant.INTENT_QRCODE_DATA);
     }
 
     @OnClick(R.id.iv_msg)

+ 16 - 13
app/src/main/java/com/sheep/gamegroup/module/qrcode/QRCodeActivity.java

@@ -78,6 +78,7 @@ public class QRCodeActivity extends BaseActivity implements Runnable {
                     @Override
                     public void onNext(BaseMessage baseMessage) {
                         qrCode = baseMessage.getData(QRCode.class);
+                        qrCode.setExpire_time(System.currentTimeMillis() / 1000 + 60);
                         Glide.with(QRCodeActivity.this).load(qrCode.getQr_url()).into(qrCodeImageView);
                         //二维码图片加载成功才开始轮询扫码结果
                         if (withLoop) {
@@ -101,19 +102,12 @@ public class QRCodeActivity extends BaseActivity implements Runnable {
 
                     @Override
                     public void onNext(BaseMessage baseMessage) {
+                        long expiredTime = qrCode.getExpire_time();
                         qrCode = baseMessage.getData(QRCode.class);
+                        qrCode.setExpire_time(expiredTime);
                         if (qrCode.getStatus() == 1) {
                             isLooping = false;
                             returnResult(qrCode.getAction_content());
-                        } else {
-                            if (qrCode.isExpired()) {
-                                if (qrCode.getCreate_count() < 5) {
-                                    G.showToast("二维码已过期, 自动刷新二维码");
-                                    createQRCodeAction(false);
-                                } else {
-                                    finish();
-                                }
-                            }
                         }
                     }
 
@@ -153,14 +147,23 @@ public class QRCodeActivity extends BaseActivity implements Runnable {
                 if (!isLooping) break;
                 if (qrCode != null) {
                     if (qrCode.isExpired()) {
-                        runOnUiThread(() -> ViewUtil.setText(timeView, "正在刷新二维码......"));
+                        runOnUiThread(() -> {
+                            ViewUtil.setText(timeView, "正在刷新二维码......");
+                            if (qrCode.getCreate_count() < 5) {
+                                G.showToast("二维码已过期, 自动刷新二维码");
+                                createQRCodeAction(false);
+                            } else {
+                                finish();
+                            }
+                            qrCode = null;
+                        });
                     } else {
+                        if (i % 3 == 0) {
+                            runOnUiThread(() -> fetchResult());
+                        }
                         runOnUiThread(() -> ViewUtil.setText(timeView, "剩余: " + (qrCode.getExpire_time() - System.currentTimeMillis() / 1000) + "S"));
                     }
                 }
-                if (i % 3 == 0) {
-                    runOnUiThread(() -> fetchResult());
-                }
             } catch (InterruptedException e) {
                 e.printStackTrace();
             }

+ 1 - 0
app/src/main/java/com/sheep/gamegroup/module/qrcode/QRCodeCaptureHelper.java

@@ -26,6 +26,7 @@ public class QRCodeCaptureHelper {
         if (TextUtils.isEmpty(text)) return;
         if(text.startsWith("http://") || text.startsWith("https://")){
             Jump2View.getInstance().goWeb(activity, text, "-");
+            return;
         }
         SheepApp.getInstance().getNetComponent().getApiService().getQRCodeInfo(SpUtils.getToken(activity), text)
                 .subscribeOn(Schedulers.io())