From c2c902a3bf998632ffffa9c1508aceba7b5a7b45 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期五, 10 一月 2025 11:14:09 +0800
Subject: [PATCH] 1.添加网络视频的显示功能相关
---
app/src/main/java/com/dayu/pipirrapp/activity/LoginActivity.java | 332 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 323 insertions(+), 9 deletions(-)
diff --git a/app/src/main/java/com/dayu/pipirrapp/activity/LoginActivity.java b/app/src/main/java/com/dayu/pipirrapp/activity/LoginActivity.java
index 5c0270b..8e62470 100644
--- a/app/src/main/java/com/dayu/pipirrapp/activity/LoginActivity.java
+++ b/app/src/main/java/com/dayu/pipirrapp/activity/LoginActivity.java
@@ -1,51 +1,365 @@
package com.dayu.pipirrapp.activity;
+import static com.dayu.pipirrapp.net.Constants.BASE_URL;
+
import android.content.Intent;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
import android.os.Bundle;
+import android.os.PersistableBundle;
import android.text.InputType;
+import android.util.Base64;
+import android.util.Log;
import android.view.LayoutInflater;
+import android.view.View;
+import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.appcompat.app.AppCompatActivity;
+import com.dayu.pipirrapp.MyApplication;
import com.dayu.pipirrapp.R;
+import com.dayu.pipirrapp.bean.db.LoginBean;
+import com.dayu.pipirrapp.bean.net.CodeResult;
+import com.dayu.pipirrapp.bean.net.LoginResult;
+import com.dayu.pipirrapp.dao.DaoSingleton;
import com.dayu.pipirrapp.databinding.ActivityLoginBinding;
+import com.dayu.pipirrapp.net.ApiManager;
+import com.dayu.pipirrapp.net.BaseResponse;
+import com.dayu.pipirrapp.net.subscribers.SubscriberListener;
+import com.dayu.pipirrapp.observer.LoginObserver;
+import com.dayu.pipirrapp.utils.CommonKeyName;
+import com.dayu.pipirrapp.utils.SharedPreferencesHelper;
+import com.dayu.pipirrapp.utils.ToastUtil;
+import com.tencent.bugly.crashreport.CrashReport;
+
+import java.util.HashMap;
+import java.util.Map;
-public class LoginActivity extends AppCompatActivity {
- private boolean isPasswordVisible = false;
+public class LoginActivity extends BaseActivity {
+ private final String TAG = "LoginActivity";
+
ActivityLoginBinding binding;
+ LoginObserver loginObserver;
+ //瀵嗙爜鏄惁鍙
+ private boolean isPasswordVisible = false;
+ //鏄惁鏄剧ず楠岃瘉鐮�
+ private boolean isShowCode;
+
+ private int loginError = 0;
+ private String codeToken;
+ //鐐瑰嚮娆℃暟鍒�10娆″悗鍙互閲嶆柊閫夋嫨tag
+ int clickNumber;
+
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
+ Log.i(TAG, "onCreate");
super.onCreate(savedInstanceState);
binding = ActivityLoginBinding.inflate(LayoutInflater.from(this));
setContentView(binding.getRoot());
+ initView();
+ initData();
+ }
+
+
+ private void initData() {
+
+ }
+
+
+ private void initView() {
+ loginObserver = new LoginObserver(this);
+ getLifecycle().addObserver(loginObserver);
binding.passwordBtn.setOnClickListener((view) -> {
togglePasswordVisibility();
});
binding.loginBtn.setOnClickListener(v -> {
- Intent intent = new Intent(LoginActivity.this, MainActivity.class);
- startActivity(intent);
+ String phone = binding.name.getText().toString().trim();
+ String pw = binding.password.getText().toString().trim();
+ String code = binding.code.getText().toString().trim();
+ if (validatePhone(phone) && validatePassword(pw)) {
+ if (isShowCode) {
+ if (!validateCode(code)) {
+ return;
+ }
+ }
+ login(phone, pw, codeToken, code);
+ } else {
+ ToastUtil.showToast(LoginActivity.this, "璇疯緭鍏ユ纭俊鎭�");
+ }
+
});
+ binding.codeImg.setOnClickListener(v -> {
+ getCode();
+ });
+ binding.codeError.setOnClickListener(v -> {
+ getCode();
+ });
+ binding.version.setOnClickListener(v -> {
+ clickNumber++;
+ if (clickNumber == 10) {
+ //鐐瑰嚮娆℃暟鍒�10娆″悗鍙互閲嶆柊閫夋嫨tag
+ loginObserver.choesLibrary();
+ clickNumber = 0;
+ }
+ });
+ if (SharedPreferencesHelper.getInstance(LoginActivity.this).get(CommonKeyName.isShowCode, false)) {
+ isShowCode = true;
+ binding.codeLL.setVisibility(View.VISIBLE);
+ getCode();
+ }
+
}
+
private void togglePasswordVisibility() {
if (isPasswordVisible) {
// 濡傛灉瀵嗙爜鍙锛岄殣钘忓瘑鐮�
binding.password.setInputType(
InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
- binding.passwordBtn.setImageResource(R.drawable.ic_visibility_off);
+ binding.passwordBtn.setImageResource(R.drawable.vt_ps_close);
} else {
// 濡傛灉瀵嗙爜闅愯棌锛屾樉绀哄瘑鐮�
binding.password.setInputType(InputType.TYPE_CLASS_TEXT);
- binding.passwordBtn.setImageResource(R.drawable.ic_visibility);
+ binding.passwordBtn.setImageResource(R.drawable.vt_ps_open);
}
-
// 绉诲姩鍏夋爣鍒版湯灏�
binding.password.setSelection(binding.password.getText().length());
-
// 鍒囨崲鏍囧織
isPasswordVisible = !isPasswordVisible;
}
+
+ /**
+ * 鑾峰彇楠岃瘉鐮�
+ */
+ private void getCode() {
+ Map<String, Object> data = new HashMap<>();
+ data.put("type", "math");//鍥剧墖绫诲瀷锛歝har-鏂囨湰锛宮ath-涓�浣嶆暟绠楀紡锛宮ath2-涓や綅鏁扮畻寮�
+
+
+ ApiManager.getInstance().requestGetHideLoading(LoginActivity.this, BASE_URL + "/app/captcha/get", CodeResult.class, data, new SubscriberListener<BaseResponse<CodeResult>>() {
+ @Override
+ public void onNext(BaseResponse<CodeResult> t) {
+ try {
+ if (t.isSuccess()) {
+ String encodedString = t.getContent().getBase64();
+ codeToken = t.getContent().getToken();
+ // 绉婚櫎Base64瀛楃涓茬殑澶撮儴淇℃伅
+ encodedString = encodedString.substring("data:image/png;base64,".length());
+ // 瀵笲ase64瀛楃涓茶繘琛岃В鐮�
+ byte[] imageAsBytes = Base64.decode(encodedString, Base64.DEFAULT);
+ // 浣跨敤BitmapFactory灏嗗瓧鑺傛暟缁勮В鐮佹垚Bitmap瀵硅薄
+ Bitmap image = BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length);
+ binding.codeImg.setImageBitmap(image);
+ binding.codeImg.setVisibility(View.VISIBLE);
+ binding.codeError.setVisibility(View.GONE);
+ } else {
+ binding.codeImg.setVisibility(View.INVISIBLE);
+ binding.codeError.setVisibility(View.VISIBLE);
+ ToastUtil.showToast(LoginActivity.this, "楠岃瘉鐮佽幏鍙栧け璐�");
+ }
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ CrashReport.postCatchedException(e);
+ }
+
+ }
+ });
+
+
+// ApiManager.getInstance().getCode(data, new CodeListener() {
+// @Override
+// public void onNext(CodeResult body) {
+// try {
+// if (body != null && !TextUtils.isEmpty(body.getBase64())) {
+// String encodedString = body.getBase64();
+// codeToken = body.getToken();
+// // 绉婚櫎Base64瀛楃涓茬殑澶撮儴淇℃伅
+// encodedString = encodedString.substring("data:image/png;base64,".length());
+// // 瀵笲ase64瀛楃涓茶繘琛岃В鐮�
+// byte[] imageAsBytes = Base64.decode(encodedString, Base64.DEFAULT);
+// // 浣跨敤BitmapFactory灏嗗瓧鑺傛暟缁勮В鐮佹垚Bitmap瀵硅薄
+// Bitmap image = BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length);
+// binding.codeImg.setImageBitmap(image);
+// binding.codeImg.setVisibility(View.VISIBLE);
+// binding.codeError.setVisibility(View.GONE);
+// } else {
+// binding.codeImg.setVisibility(View.INVISIBLE);
+// binding.codeError.setVisibility(View.VISIBLE);
+// ToastUtil.showToast(LoginActivity.this, "楠岃瘉鐮佽幏鍙栧け璐�");
+// }
+// } catch (Exception e) {
+// e.printStackTrace();
+// CrashReport.postCatchedException(e);
+// }
+// }
+//
+// @Override
+// public void error(Throwable throwable) {
+//
+// }
+// });
+ }
+
+ private void login(String phone, String pw, String token, String code) {
+
+ Map<String, Object> data = new HashMap<>();
+ data.put("phone", phone);
+ data.put("password", pw);
+ data.put("orgTag", MyApplication.myApplication.myTag);
+ if (isShowCode) {
+ data.put("token", token);
+ data.put("code", code);
+ }
+ ApiManager.getInstance().requestPostLoading(LoginActivity.this, BASE_URL + "/sso/sso/loginJson", LoginResult.class, data, new SubscriberListener<BaseResponse<LoginResult>>() {
+ @Override
+ public void onNext(BaseResponse<LoginResult> t) {
+ try {
+ if (t.isSuccess()) {
+ SharedPreferencesHelper.getInstance(LoginActivity.this).put(CommonKeyName.Token, t.getContent().getToken());
+ MyApplication.myApplication.token = t.getContent().getToken();
+ MyApplication.myApplication.userId = t.getContent().getId();
+ LoginBean loginBean = DaoSingleton.getInstance(LoginActivity.this).loginDao().findFirst();
+ if (loginBean == null) {
+ loginBean = new LoginBean();
+ }
+ loginBean.setName(t.getContent().getName());
+ loginBean.setPhone(t.getContent().getPhone());
+ loginBean.setUserID(t.getContent().getId());
+ DaoSingleton.getInstance(LoginActivity.this).loginDao().insert(loginBean);
+ SharedPreferencesHelper.getInstance(LoginActivity.this).put(CommonKeyName.isShowCode, false);
+ ToastUtil.showToastLong(LoginActivity.this, "鐧诲綍鎴愬姛!");
+ startMainActivity();
+
+ } else {
+ ToastUtil.showToast(LoginActivity.this, t.getMsg());
+ loginError++;
+ if (loginError >= 3) {
+ isShowCode = true;
+ SharedPreferencesHelper.getInstance(LoginActivity.this).put(CommonKeyName.isShowCode, true);
+ binding.codeLL.setVisibility(View.VISIBLE);
+ }
+ }
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ CrashReport.postCatchedException(e);
+ }
+
+ }
+ });
+ }
+
+ /**
+ * 鍚姩MainActivity
+ */
+ private void startMainActivity() {
+ Intent intent = new Intent(LoginActivity.this, MainActivity.class);
+ startActivity(intent);
+ LoginActivity.this.finish();
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ Log.i(TAG, "onStart");
+ }
+
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ Log.i(TAG, "onResume");
+ }
+
+ @Override
+ protected void onRestart() {
+ super.onRestart();
+ Log.i(TAG, "onRestart");
+ }
+
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+ Log.i(TAG, "onPause");
+ }
+
+
+ @Override
+ protected void onStop() {
+ super.onStop();
+ Log.i(TAG, "onStop");
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ getLifecycle().removeObserver(loginObserver);
+ Log.i(TAG, "onDestroy");
+ }
+
+
+ @Override
+ protected void onSaveInstanceState(@NonNull Bundle outState) {
+ super.onSaveInstanceState(outState);
+ Log.i(TAG, "onSaveInstanceState");
+ }
+
+ @Override
+ public void onSaveInstanceState(@NonNull Bundle outState, @NonNull PersistableBundle outPersistentState) {
+ super.onSaveInstanceState(outState, outPersistentState);
+ Log.i(TAG, "onSaveInstanceState---outPersistentState");
+ }
+
+ @Override
+ protected void onRestoreInstanceState(@NonNull Bundle savedInstanceState) {
+ super.onRestoreInstanceState(savedInstanceState);
+ }
+
+ // 鎵嬫満鍙锋牎楠岋細纭繚鏄竴涓湁鏁堢殑鎵嬫満鍙�
+ private boolean validatePhone(String phone) {
+ // 浣跨敤姝e垯琛ㄨ揪寮忓垽鏂槸鍚︿负鏈夋晥鐨勬墜鏈哄彿鐮侊紙涓浗澶ч檰锛�
+ String phonePattern = "^1[3-9]\\d{9}$"; // 绠�鍗曠殑鎵嬫満鍙风爜姝e垯
+ if (phone.isEmpty()) {
+ ToastUtil.showToast(LoginActivity.this, "鎵嬫満鍙蜂笉鑳戒负绌猴紒");
+ return false;
+ }
+// else if (!phone.matches(phonePattern)) {
+// ToastUtil.showToast(LoginActivity.this, "璇疯緭鍏ユ纭墜鏈哄彿锛�");
+// return false;
+// }
+ else {
+ return true;
+ }
+ }
+
+ // 瀵嗙爜鏍¢獙锛氱‘淇濆瘑鐮侀暱搴︾鍚堣姹�
+ private boolean validatePassword(String password) {
+ if (password.isEmpty()) {
+ ToastUtil.showToast(LoginActivity.this, "瀵嗙爜涓嶈兘涓虹┖锛�");
+ return false;
+ }
+// else if (password.length() < 6) {
+// ToastUtil.showToast(LoginActivity.this, "瀵嗙爜涓嶈兘灏戜簬6浣嶏紒");
+// return false;
+// }
+ else {
+ return true;
+ }
+ }
+
+ // 楠岃瘉鐮佹牎楠岋細纭繚楠岃瘉鐮佺鍚堥暱搴﹁姹�
+ private boolean validateCode(String code) {
+ if (code.isEmpty()) {
+ ToastUtil.showToast(LoginActivity.this, "楠岃瘉鐮佷笉鑳戒负绌�");
+ return false;
+ } else {
+ return true;
+ }
+ }
+
+
}
--
Gitblit v1.8.0