From c5f44333881c141e8791ceb9d373919260a5b4f7 Mon Sep 17 00:00:00 2001
From: nilupeng <qingingrunt2010@qq.com>
Date: Tue, 09 Aug 2022 04:51:36 +0000
Subject: [PATCH] 短信倒计时优化,其他优化

---
 app/src/main/java/com/runt/open/mvvm/ui/splash/SplashActivity.java                            |   15 ++++++-
 app/src/main/java/com/runt/open/mvvm/retrofit/utils/RetrofitUtils.java                        |   10 ++--
 app/src/main/java/com/runt/open/mvvm/ui/login/LoginViewModel.java                             |   17 ++++++--
 app/src/main/java/com/runt/open/mvvm/retrofit/api/LoginApiCenter.java                         |    3 +
 app/src/main/java/com/runt/open/mvvm/data/Results.java                                        |    3 +
 app/src/main/java/com/runt/open/mvvm/retrofit/converter/GsonConverterFactory.java             |   12 +++---
 app/src/main/java/com/runt/open/mvvm/retrofit/converter/DecryptGsonResponseBodyConverter.java |   27 +------------
 app/src/main/java/com/runt/open/mvvm/ui/login/RegisterLoginActivity.java                      |   12 +++--
 8 files changed, 49 insertions(+), 50 deletions(-)

diff --git a/app/src/main/java/com/runt/open/mvvm/data/Results.java b/app/src/main/java/com/runt/open/mvvm/data/Results.java
index e5770af..ff2330d 100644
--- a/app/src/main/java/com/runt/open/mvvm/data/Results.java
+++ b/app/src/main/java/com/runt/open/mvvm/data/Results.java
@@ -13,6 +13,9 @@
 
     public static class StringApiResult extends HttpApiResult<String> { }
 
+    //短信验证码
+    public static class SmsResult { public String sms; }
+
     //资讯信息
     public class Message {
         public String id,title,content,cTime;
diff --git a/app/src/main/java/com/runt/open/mvvm/retrofit/api/LoginApiCenter.java b/app/src/main/java/com/runt/open/mvvm/retrofit/api/LoginApiCenter.java
index c41d848..6c5e50b 100644
--- a/app/src/main/java/com/runt/open/mvvm/retrofit/api/LoginApiCenter.java
+++ b/app/src/main/java/com/runt/open/mvvm/retrofit/api/LoginApiCenter.java
@@ -1,6 +1,7 @@
 package com.runt.open.mvvm.retrofit.api;
 
 import com.runt.open.mvvm.config.Configuration;
+import com.runt.open.mvvm.data.HttpApiResult;
 import com.runt.open.mvvm.data.Results;
 
 import io.reactivex.Observable;
@@ -36,7 +37,7 @@
 
     @FormUrlEncoded
     @POST
-    Observable<Results.StringApiResult> getVerifyCode(@Url String url, @Field(Configuration.KEY_PHONE) String phone, @Field(Configuration.KEY_CODE) String code, @Field("time") String time);
+    Observable<HttpApiResult<Results.SmsResult>> getVerifyCode(@Url String url, @Field(Configuration.KEY_PHONE) String phone, @Field(Configuration.KEY_CODE) String code, @Field("time") String time);
 
     /**
      * 重置密码
diff --git a/app/src/main/java/com/runt/open/mvvm/retrofit/converter/DecryptGsonResponseBodyConverter.java b/app/src/main/java/com/runt/open/mvvm/retrofit/converter/DecryptGsonResponseBodyConverter.java
index 3e9ac2d..5d02452 100644
--- a/app/src/main/java/com/runt/open/mvvm/retrofit/converter/DecryptGsonResponseBodyConverter.java
+++ b/app/src/main/java/com/runt/open/mvvm/retrofit/converter/DecryptGsonResponseBodyConverter.java
@@ -17,8 +17,6 @@
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.nio.charset.Charset;
-import java.security.NoSuchAlgorithmException;
-import java.security.spec.InvalidKeySpecException;
 
 import okhttp3.ResponseBody;
 import retrofit2.Converter;
@@ -34,7 +32,6 @@
     private final TypeAdapter<T> adapter;
     private final Charset UTF_8 = Charset.forName("UTF-8");
     private final boolean transHump;//驼峰转换
-    private final String ENCRYPT = "encrypt";
 
     public DecryptGsonResponseBodyConverter(Gson gson, TypeAdapter<T> adapter, boolean transHump) {
         this.gson = gson;
@@ -47,13 +44,8 @@
         String response = null;
         try {
             String val = new String(value.bytes(),UTF_8);
-            response = decryptJsonStr(val);//解密
-        } catch (NoSuchAlgorithmException | InvalidKeySpecException e) {
-            e.printStackTrace();
-            HttpApiResult apiResult = new HttpApiResult<>();
-            apiResult.code = 412;
-            apiResult.msg = "解密数据出错"+e.getMessage();
-            response = new Gson().toJson(apiResult);
+            Log.e("Converter","val body:"+val);
+            response = transHump? GsonUtils.toHumpJson(val):val;
         } catch (JSONException e) {
             e.printStackTrace();
             HttpApiResult apiResult = new HttpApiResult<>();
@@ -75,20 +67,5 @@
         }
     }
 
-    /**
-     * 解密json
-     * @param body
-     * @return
-     * @throws Exception
-     */
-    protected String decryptJsonStr(String body) throws Exception {
-        Log.e("Converter","decryptJsonStr body:"+body);
-        /*if(body.indexOf("{") == 0) {
-            JSONObject json = new JSONObject(body);
-            body = json.toString();
-            //body = RSAUtils.decrypt(json.getString(ENCRYPT), RSAUtils.getPublicKey(RSAUtils.PUBLIC_KEY));//
-        }*/
-        return transHump? GsonUtils.toHumpJson(body):body;
-    }
 
 }
diff --git a/app/src/main/java/com/runt/open/mvvm/retrofit/converter/DecryptGsonConverterFactory.java b/app/src/main/java/com/runt/open/mvvm/retrofit/converter/GsonConverterFactory.java
similarity index 78%
rename from app/src/main/java/com/runt/open/mvvm/retrofit/converter/DecryptGsonConverterFactory.java
rename to app/src/main/java/com/runt/open/mvvm/retrofit/converter/GsonConverterFactory.java
index 519ea76..c613f3e 100644
--- a/app/src/main/java/com/runt/open/mvvm/retrofit/converter/DecryptGsonConverterFactory.java
+++ b/app/src/main/java/com/runt/open/mvvm/retrofit/converter/GsonConverterFactory.java
@@ -17,26 +17,26 @@
  *
  * @purpose Created by Runt (qingingrunt2010@qq.com) on 2021-7-22.
  */
-public class DecryptGsonConverterFactory extends Converter.Factory {
+public class GsonConverterFactory extends Converter.Factory {
 
-    public static DecryptGsonConverterFactory create() {
+    public static GsonConverterFactory create() {
         return create(new Gson(),false);
     }
 
-    public static DecryptGsonConverterFactory create(boolean transHump) {
+    public static GsonConverterFactory create(boolean transHump) {
         return create(new Gson(),transHump);
     }
 
 
-    public static DecryptGsonConverterFactory create(Gson gson,boolean transHump) {
-        return new DecryptGsonConverterFactory(gson,transHump);
+    public static GsonConverterFactory create(Gson gson, boolean transHump) {
+        return new GsonConverterFactory(gson,transHump);
     }
 
     private final Gson gson;
 
     private final boolean transHump;
 
-    public DecryptGsonConverterFactory(Gson gson, boolean transHump) {
+    public GsonConverterFactory(Gson gson, boolean transHump) {
         if (gson == null) throw new NullPointerException("gson == null");
         this.gson = gson;
         this.transHump = transHump;
diff --git a/app/src/main/java/com/runt/open/mvvm/retrofit/utils/RetrofitUtils.java b/app/src/main/java/com/runt/open/mvvm/retrofit/utils/RetrofitUtils.java
index 4110036..65e3440 100644
--- a/app/src/main/java/com/runt/open/mvvm/retrofit/utils/RetrofitUtils.java
+++ b/app/src/main/java/com/runt/open/mvvm/retrofit/utils/RetrofitUtils.java
@@ -5,7 +5,7 @@
 import com.runt.open.mvvm.retrofit.Interceptor.EncryptInterceptor;
 import com.runt.open.mvvm.retrofit.Interceptor.HttpLoggingInterceptor;
 import com.runt.open.mvvm.retrofit.api.CommonApiCenter;
-import com.runt.open.mvvm.retrofit.converter.DecryptGsonConverterFactory;
+import com.runt.open.mvvm.retrofit.converter.GsonConverterFactory;
 import com.runt.open.mvvm.retrofit.net.NetWorkListenear;
 
 import java.util.Collections;
@@ -47,7 +47,7 @@
     public <T> T getRetrofit(Class<T> clas) {
         if(retrofit == null){
             retrofit = getRetrofit(getOkHttpClient(logBuilder),
-                    new Retrofit.Builder().addConverterFactory(DecryptGsonConverterFactory.create(true))) ;
+                    new Retrofit.Builder().addConverterFactory(GsonConverterFactory.create(true))) ;
         }
         if(!BuildConfig.DEBUG){//正式版 不打印log
             return getUnLogRetrofit(clas);
@@ -62,7 +62,7 @@
     public <T> T getUnHumpRetrofit(Class<T> clas) {
         if(unHumpRetrofit == null){
             unHumpRetrofit = getRetrofit(getOkHttpClient(logBuilder),
-                    new Retrofit.Builder().addConverterFactory(DecryptGsonConverterFactory.create())) ;
+                    new Retrofit.Builder().addConverterFactory(GsonConverterFactory.create())) ;
         }
         if(!BuildConfig.DEBUG){//正式版 不打印log
             return getUnLogHumpRetorfit(clas);
@@ -77,7 +77,7 @@
     public <T> T  getUnLogRetrofit(Class<T> clas) {
         if(unLogRetrofit == null){
             unLogRetrofit = getRetrofit(getOkHttpClient(builder),
-                    new Retrofit.Builder().addConverterFactory(DecryptGsonConverterFactory.create(true))) ;
+                    new Retrofit.Builder().addConverterFactory(GsonConverterFactory.create(true))) ;
         }
         return unLogRetrofit.create(clas);
     }
@@ -89,7 +89,7 @@
     public <T> T getUnLogHumpRetorfit(Class<T> clas) {
         if(unLogHumpRetorfit == null){
             unLogHumpRetorfit = getRetrofit(getOkHttpClient(builder),
-                    new Retrofit.Builder().addConverterFactory(DecryptGsonConverterFactory.create())) ;
+                    new Retrofit.Builder().addConverterFactory(GsonConverterFactory.create())) ;
         }
         return unLogHumpRetorfit.create(clas);
     }
diff --git a/app/src/main/java/com/runt/open/mvvm/ui/login/LoginViewModel.java b/app/src/main/java/com/runt/open/mvvm/ui/login/LoginViewModel.java
index b83f332..eaa678a 100644
--- a/app/src/main/java/com/runt/open/mvvm/ui/login/LoginViewModel.java
+++ b/app/src/main/java/com/runt/open/mvvm/ui/login/LoginViewModel.java
@@ -3,6 +3,7 @@
 import androidx.lifecycle.MutableLiveData;
 
 import com.runt.open.mvvm.base.model.BaseViewModel;
+import com.runt.open.mvvm.data.HttpApiResult;
 import com.runt.open.mvvm.data.Results;
 import com.runt.open.mvvm.retrofit.api.LoginApiCenter;
 import com.runt.open.mvvm.retrofit.observable.HttpObserver;
@@ -26,7 +27,7 @@
     }
 
     MutableLiveData<Results.LoggedInUser> loginResult = new MutableLiveData<>();
-    MutableLiveData<Results.StringApiResult> verifyResult = new MutableLiveData<>();
+    MutableLiveData<Integer> verifyResult = new MutableLiveData<>();
     MutableLiveData<Results.StringApiResult> resetResult = new MutableLiveData<>();
     MutableLiveData<Results.StringApiResult> registerResult = new MutableLiveData<>();
     HttpObserver<Results.LoggedInUser> logginObserver = new HttpObserver<Results.LoggedInUser>(){
@@ -39,7 +40,7 @@
         return loginResult;
     }
 
-    public MutableLiveData<Results.StringApiResult> getVerifyResult() {
+    public MutableLiveData<Integer> getVerifyResult() {
         return verifyResult;
     }
 
@@ -119,10 +120,16 @@
      */
     public void getVerifyCode(String url,String phone){
         String time = new Date().getTime()+"";
-        httpObserverOnLoading(loginApi.getVerifyCode(url, phone, randomString(phone, time), time), new HttpObserver<Results.StringApiResult>(){
+        httpObserverOnLoading(loginApi.getVerifyCode(url, phone, randomString(phone, time), time), new HttpObserver<Results.SmsResult>(){
             @Override
-            protected void onSuccess(Results.StringApiResult data) {
-                verifyResult.setValue(data);
+            protected void onSuccess(Results.SmsResult data) {
+                verifyResult.setValue(0);
+            }
+
+            @Override
+            protected void onFailed(HttpApiResult httpResult) {
+                super.onFailed(httpResult);
+                verifyResult.setValue(-1);
             }
         });
     }
diff --git a/app/src/main/java/com/runt/open/mvvm/ui/login/RegisterLoginActivity.java b/app/src/main/java/com/runt/open/mvvm/ui/login/RegisterLoginActivity.java
index 224b886..9fff38f 100644
--- a/app/src/main/java/com/runt/open/mvvm/ui/login/RegisterLoginActivity.java
+++ b/app/src/main/java/com/runt/open/mvvm/ui/login/RegisterLoginActivity.java
@@ -35,11 +35,13 @@
         mBinding.txtRegister.setOnClickListener(onclick);
         mBinding.txtPrivacy.setOnClickListener(onclick);
         mBinding.editPhone.setText(getStringProjectPrefrence(Configuration.KEY_USERNAME));
-        mViewModel.getVerifyResult().observe(this, stringApiResult -> {
-           if(stringApiResult.code == 200){
-
+        mViewModel.getVerifyResult().observe(this, result -> {
+           if(result == 0){
+               putLongProjectPrefrence(VERIFY_CODE,new Date().getTime());
+               CodeTimer codeTimer = new CodeTimer(60000, 1000, mBinding.txtGetVerify);
+               codeTimer.startUp();
            }else{
-               showToast(stringApiResult.msg);
+
            }
         });
         mViewModel.getLoginResult().observe(this, loggedInUser -> {
@@ -65,7 +67,7 @@
         long getTime = getLongProjectPrefrence(VERIFY_CODE);
         long cha = new Date().getTime() - getTime;
         if(cha <1000*60){
-            CodeTimer codeTimer = new CodeTimer(cha, 1000, mBinding.txtGetVerify);
+            CodeTimer codeTimer = new CodeTimer((60) * 1000-cha, 1000, mBinding.txtGetVerify);
             codeTimer.startUp();
         }
         changeView();
diff --git a/app/src/main/java/com/runt/open/mvvm/ui/splash/SplashActivity.java b/app/src/main/java/com/runt/open/mvvm/ui/splash/SplashActivity.java
index bb5fa8f..f422ab8 100644
--- a/app/src/main/java/com/runt/open/mvvm/ui/splash/SplashActivity.java
+++ b/app/src/main/java/com/runt/open/mvvm/ui/splash/SplashActivity.java
@@ -1,7 +1,9 @@
 package com.runt.open.mvvm.ui.splash;
 
 import android.content.Intent;
+import android.os.Build;
 import android.os.Handler;
+import android.view.View;
 import android.view.WindowManager;
 
 import com.runt.open.mvvm.base.activities.BaseActivity;
@@ -20,9 +22,16 @@
     final String TAG = "WelcomeActivity";
     @Override
     public void initViews() {
-        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
-                WindowManager.LayoutParams.FLAG_FULLSCREEN);//全屏
-        hideBottomUIMenu();
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
+            // 延伸显示区域到刘海
+            WindowManager.LayoutParams attributes = getWindow().getAttributes();
+            attributes.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
+            getWindow().setAttributes(attributes);
+        }
+        // 设置页面全屏显示 隐藏底部导航
+        getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
+                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
+                | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
     }
 
     @Override

--
Gitblit v1.9.1