18034727885
2026-03-25 588b60be435c60da422c7e67f15bec9ffe97cd51
替换亚马逊云为华为云
1个文件已添加
6个文件已修改
167 ■■■■■ 已修改文件
app/build.gradle 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/proguard-rules.pro 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/jxonlinecar/driver/base/Const.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/jxonlinecar/driver/base/local/BasePhotoActivity.kt 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/jxonlinecar/driver/netUtls/Api.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/jxonlinecar/driver/utils/UploadManager.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
build.gradle 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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'
}
app/proguard-rules.pro
@@ -135,4 +135,20 @@
-keep class com.google.protobuf.** {*;}
-dontwarn com.tencent.bugly.**
-keep public class com.tencent.bugly.**{*;}
-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.**{*;}
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";
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()
    }
}
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;
app/src/main/java/com/jxonlinecar/driver/utils/UploadManager.java
New file
@@ -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;
    }
}
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/' }