From 588b60be435c60da422c7e67f15bec9ffe97cd51 Mon Sep 17 00:00:00 2001
From: 18034727885 <973609879@qq.com>
Date: 星期三, 25 三月 2026 17:47:40 +0800
Subject: [PATCH] 替换亚马逊云为华为云

---
 app/src/main/java/com/jxonlinecar/driver/base/Const.java                 |    2 
 app/src/main/java/com/jxonlinecar/driver/base/local/BasePhotoActivity.kt |   49 ++++++---------
 build.gradle                                                             |    3 
 app/src/main/java/com/jxonlinecar/driver/utils/UploadManager.java        |   90 ++++++++++++++++++++++++++++++
 app/src/main/java/com/jxonlinecar/driver/netUtls/Api.java                |    2 
 app/proguard-rules.pro                                                   |   18 +++++
 app/build.gradle                                                         |    3 
 7 files changed, 133 insertions(+), 34 deletions(-)

diff --git a/app/build.gradle b/app/build.gradle
index 6f42416..916171c 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -119,5 +119,6 @@
     //http日志拦截器
     implementation 'com.squareup.okhttp3:logging-interceptor:3.8.1'
     implementation project(path: ':easyfloat')
-    implementation 'com.amazonaws:aws-android-sdk-s3:2.1.7'
+    //华为云
+    implementation 'com.huaweicloud:esdk-obs-android:3.21.12'
 }
diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro
index 5b15771..2b84156 100644
--- a/app/proguard-rules.pro
+++ b/app/proguard-rules.pro
@@ -135,4 +135,20 @@
 -keep class com.google.protobuf.** {*;}
 
 -dontwarn com.tencent.bugly.**
--keep public class com.tencent.bugly.**{*;}
\ No newline at end of file
+-keep public class com.tencent.bugly.**{*;}
+
+#华为云
+#okhttp
+-dontwarn okhttp3.**
+-keep class okhttp3.**{*;}
+
+#okio
+-dontwarn okio.**
+-keep class okio.**{*;}
+
+#sdk
+-keep class com.obs.services.** {*;}
+-keep class com.obs.log.** {*;}
+
+#java-xmlbuilder
+-keep class com.jamesmurty.utils.**{*;}
\ No newline at end of file
diff --git a/app/src/main/java/com/jxonlinecar/driver/base/Const.java b/app/src/main/java/com/jxonlinecar/driver/base/Const.java
index 0bf9572..5826104 100644
--- a/app/src/main/java/com/jxonlinecar/driver/base/Const.java
+++ b/app/src/main/java/com/jxonlinecar/driver/base/Const.java
@@ -18,7 +18,7 @@
     public static String accessKeyId = "IWZDAITHHVYR4W3BBPFM";
     public static String accessKeySecret = "YnGQmmTds5asKMqPkO2GqGDtwT7LP9bS40lYRkMv";
     public static String bucketName="jixichuxing";
-    public static String end_point = "https://obs-helf.cucloud.cn";
+    public static String end_point = "obs.cn-east-3.myhuaweicloud.com";
 
     //语音单提示音
     public static String voiceOrder = "https://jyzx-obs.obs.cn-sccd1.ctyun.cn/e9f21e157c1446b3ab2cfcb37cd1e554.mp3";
diff --git a/app/src/main/java/com/jxonlinecar/driver/base/local/BasePhotoActivity.kt b/app/src/main/java/com/jxonlinecar/driver/base/local/BasePhotoActivity.kt
index 4593e60..1c5455e 100644
--- a/app/src/main/java/com/jxonlinecar/driver/base/local/BasePhotoActivity.kt
+++ b/app/src/main/java/com/jxonlinecar/driver/base/local/BasePhotoActivity.kt
@@ -20,20 +20,17 @@
 import android.widget.TextView
 import androidx.loader.content.CursorLoader
 import cn.sinata.xldutils.utils.sysErr
-import com.amazonaws.auth.BasicAWSCredentials
-import com.amazonaws.services.s3.AmazonS3Client
-import com.amazonaws.services.s3.model.CannedAccessControlList
-import com.amazonaws.services.s3.model.PutObjectRequest
 import com.example.emanagercar.ui.base.Local.BaseLoginActivity
+import com.jxonlinecar.driver.R
+import com.jxonlinecar.driver.base.Const
+import com.jxonlinecar.driver.ui.DialogUtil
+import com.jxonlinecar.driver.utils.BitmapUtil
+import com.jxonlinecar.driver.utils.UploadManager
 import com.tbruyelle.rxpermissions2.RxPermissions
 import com.ypx.imagepicker.ImagePicker
 import com.ypx.imagepicker.bean.MimeType
 import com.ypx.imagepicker.bean.SelectMode
 import com.ypx.imagepicker.builder.MultiPickerBuilder
-import com.jxonlinecar.driver.R
-import com.jxonlinecar.driver.base.Const
-import com.jxonlinecar.driver.ui.DialogUtil
-import com.jxonlinecar.driver.utils.BitmapUtil
 import kotlinx.android.synthetic.main.dialog_phone.view.*
 import org.jetbrains.anko.toast
 import java.io.*
@@ -44,6 +41,7 @@
 
 
     var phoneDialog: Dialog? = null
+    var uploadManager: UploadManager =  UploadManager();
 
     @SuppressLint("CheckResult")
     fun showSelectPhone() {
@@ -60,6 +58,7 @@
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         checkPermissions(*Const.PERMISSIONS_LIST_CARMER)
+        uploadManager.initHW()
     }
 
     override fun onPermissionsGranted(requestCode: Int, perms: MutableList<String>) {
@@ -98,9 +97,9 @@
                     phoneDialog = DialogUtil.getDialog(mContext, R.layout.dialog_phone)
                     phoneDialog?.let {
                         val view = DialogUtil.getView(phoneDialog!!)
-                        if (!title.isEmpty()){
+                        if (!title.isEmpty()) {
                             view.btn_title.text = title
-                        }else{
+                        } else {
                             view.btn_title.text = "选择照片"
                         }
                         view.button_cancel.setOnClickListener {
@@ -175,7 +174,7 @@
         ImagePicker.takePhoto(this, name, isCopyInDCIM) {
             showNum = 1
             var pathItem = getRealPathFromUri(mContext, it[0].uri)
-            var uri =  it[0].uri
+            var uri = it[0].uri
             pathItem?.let {
                 savePhone(pathItem, 2, uri)
             }
@@ -215,29 +214,17 @@
 //                        }
 //                    }
                 }
-
-                val ossClient = AmazonS3Client(
-                    BasicAWSCredentials(
-                        Const.accessKeyId,
-                        Const.accessKeySecret
-                    )
-                )
-                ossClient.setEndpoint(Const.end_point)
-                val objectKey = UUID.randomUUID().toString()
-                val req =
-                    PutObjectRequest(Const.bucketName, objectKey, File(copyFile)).withCannedAcl(
-                        CannedAccessControlList.PublicReadWrite
-                    )
-                ossClient.putObject(req)
-                val resourceUrl = ossClient.getResourceUrl(Const.bucketName, objectKey)
+                val resourceUrl = uploadManager.uploadHWSync(File(copyFile));
                 showNum--
                 Handler(mainLooper).post {
                     Log.d("showNum==", "showNum==========" + showNum.toString())
                     sysErr(resourceUrl)
                     if (showNum <= 0)
                         dismissDialog()
-                    getPhoneUrl(resourceUrl!!, type, copyFile)
-                    getPhoneUrl(resourceUrl, type)
+                    resourceUrl?.also {
+                        getPhoneUrl(it, type, copyFile)
+                        getPhoneUrl(it, type)
+                    }
                 }
 
 //                val ossUtil = OSSUtil(this)
@@ -336,7 +323,6 @@
         }
         return null
     }
-
 
 
     /**
@@ -548,6 +534,7 @@
             return result
         }
     }
+
     open fun compressImage(image: Bitmap): Bitmap? {
         val baos = ByteArrayOutputStream()
         image.compress(
@@ -632,4 +619,8 @@
         }
     }
 
+    override fun onDestroy() {
+        super.onDestroy()
+        uploadManager.release()
+    }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/jxonlinecar/driver/netUtls/Api.java b/app/src/main/java/com/jxonlinecar/driver/netUtls/Api.java
index 6efac83..715e9f7 100644
--- a/app/src/main/java/com/jxonlinecar/driver/netUtls/Api.java
+++ b/app/src/main/java/com/jxonlinecar/driver/netUtls/Api.java
@@ -12,7 +12,7 @@
     public static final String BASE_URL = "https://www.ljcx168.com/driver-server/";
 
 //    public static final String SOCKET_SERVER = "192.168.110.111";
-    public static final String SOCKET_SERVER = "116.169.59.170";
+    public static final String SOCKET_SERVER = "8.131.157.137";
     public static final int SOCKET_PORT = 9977;
     public static final int SUCCESS = 200;
 
diff --git a/app/src/main/java/com/jxonlinecar/driver/utils/UploadManager.java b/app/src/main/java/com/jxonlinecar/driver/utils/UploadManager.java
new file mode 100644
index 0000000..7e95ceb
--- /dev/null
+++ b/app/src/main/java/com/jxonlinecar/driver/utils/UploadManager.java
@@ -0,0 +1,90 @@
+package com.jxonlinecar.driver.utils;
+
+import android.util.Log;
+
+import androidx.annotation.NonNull;
+
+import com.jxonlinecar.driver.base.Const;
+import com.obs.services.ObsClient;
+import com.obs.services.exception.ObsException;
+import com.obs.services.model.PutObjectRequest;
+import com.obs.services.model.PutObjectResult;
+
+import java.io.File;
+import java.util.UUID;
+
+/**
+ * 上传管理器
+ */
+public class UploadManager {
+    private static final String TAG = "UploadManager";
+    // 创建华为云ObsClient实例
+    private ObsClient obsClient;
+
+    public UploadManager() {
+    }
+
+    /**
+     * 初始化华为云
+     */
+    public void initHW() {
+        obsClient = new ObsClient(Const.accessKeyId, Const.accessKeySecret, Const.end_point);
+    }
+
+    /**
+     * 上传华为云,耗时操作
+     *
+     * @param file 文件
+     */
+    public String uploadHWSync(@NonNull File file) {
+        if (obsClient == null) {
+            Log.d(TAG, "not init");
+            return null;
+        }
+        try {
+            // 文件上传
+            // localfile 为待上传的本地文件路径,需要指定到具体的文件名
+            PutObjectRequest request = new PutObjectRequest();
+            request.setBucketName(Const.bucketName);
+            String objectKey = UUID.randomUUID().toString();
+            request.setObjectKey(objectKey);
+            request.setFile(file);
+            PutObjectResult putObjectResult = obsClient.putObject(request);
+            if (putObjectResult.getStatusCode() == 200) {
+                Log.d(TAG, "putObject successfully");
+                return putObjectResult.getObjectUrl();
+            }
+        } catch (ObsException e) {
+            Log.d(TAG, "putObject failed");
+            // 请求失败,打印http状态码
+            Log.d(TAG, "HTTP Code:" + e.getResponseCode());
+            // 请求失败,打印服务端错误码
+            Log.d(TAG, "Error Code:" + e.getErrorCode());
+            // 请求失败,打印详细错误信息
+            Log.d(TAG, "Error Message:" + e.getErrorMessage());
+            // 请求失败,打印请求id
+            Log.d(TAG, "Request ID:" + e.getErrorRequestId());
+            Log.d(TAG, "Host ID:" + e.getErrorHostId());
+            e.printStackTrace();
+        } catch (Exception e) {
+            Log.d(TAG, "putObject failed");
+            // 其他异常信息打印
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    /**
+     * 释放资源
+     */
+    public void release() {
+        if (obsClient != null) {
+            try {
+                obsClient.close();
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        obsClient = null;
+    }
+}
diff --git a/build.gradle b/build.gradle
index 726a5e7..ccf7baf 100644
--- a/build.gradle
+++ b/build.gradle
@@ -3,6 +3,7 @@
 buildscript {
     ext.kotlin_version = '1.3.61'
     repositories {
+        maven { url 'https://mirrors.huaweicloud.com/repository/maven/' }
         maven { url "https://maven.aliyun.com/nexus/content/groups/public/" }
         maven { url 'https://maven.aliyun.com/repository/google/' }
 //        maven { url 'https://maven.aliyun.com/repository/jcenter/' }
@@ -22,7 +23,7 @@
 
 allprojects {
     repositories {
-
+        maven { url 'https://mirrors.huaweicloud.com/repository/maven/' }
         maven { url "https://maven.aliyun.com/nexus/content/groups/public/" }
         maven { url 'https://maven.aliyun.com/repository/google/' }
 //        maven { url 'https://maven.aliyun.com/repository/jcenter/' }

--
Gitblit v1.7.1