| app/build.gradle | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| app/proguard-rules.pro | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| app/src/main/java/com/jxonlinecar/driver/base/Const.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| app/src/main/java/com/jxonlinecar/driver/base/local/BasePhotoActivity.kt | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| app/src/main/java/com/jxonlinecar/driver/netUtls/Api.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| app/src/main/java/com/jxonlinecar/driver/utils/UploadManager.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| build.gradle | ●●●●● 补丁 | 查看 | 原始文档 | 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/' }