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