|
@@ -1,14 +1,26 @@
|
|
|
package com.cooleshow.teacher.presenter.minestyle;
|
|
|
|
|
|
import android.app.Activity;
|
|
|
+import android.content.Context;
|
|
|
+import android.graphics.Bitmap;
|
|
|
+import android.graphics.drawable.Drawable;
|
|
|
+import android.text.TextUtils;
|
|
|
import android.util.Log;
|
|
|
|
|
|
+import com.bumptech.glide.Glide;
|
|
|
+import com.bumptech.glide.request.RequestOptions;
|
|
|
+import com.bumptech.glide.request.target.SimpleTarget;
|
|
|
+import com.bumptech.glide.request.transition.Transition;
|
|
|
import com.cooleshow.base.constanst.UploadConstants;
|
|
|
import com.cooleshow.base.data.net.BaseResponse;
|
|
|
import com.cooleshow.base.presenter.BasePresenter;
|
|
|
import com.cooleshow.base.rx.BaseObserver;
|
|
|
+import com.cooleshow.base.utils.FileUtils;
|
|
|
+import com.cooleshow.base.utils.LogUtils;
|
|
|
import com.cooleshow.base.utils.RequestBodyUtil;
|
|
|
+import com.cooleshow.base.utils.Utils;
|
|
|
import com.cooleshow.base.utils.helper.upload.UploadHelper;
|
|
|
+import com.cooleshow.teacher.R;
|
|
|
import com.cooleshow.teacher.api.APIService;
|
|
|
import com.cooleshow.teacher.bean.HomePageSheetMusicListBean;
|
|
|
import com.cooleshow.teacher.bean.TeacherSelfStyleInfoBean;
|
|
@@ -17,9 +29,20 @@ import com.cooleshow.teacher.ui.minestyle.MineStylePageActivity;
|
|
|
import com.daya.live_teaching.LiveTeachingApp;
|
|
|
import com.daya.live_teaching.model.FileUploadBean;
|
|
|
import com.daya.live_teaching.repository.ClassRepository;
|
|
|
+import com.luck.picture.lib.tools.BitmapUtils;
|
|
|
|
|
|
import java.io.File;
|
|
|
|
|
|
+import androidx.annotation.NonNull;
|
|
|
+import androidx.annotation.Nullable;
|
|
|
+import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
|
|
|
+import io.reactivex.rxjava3.core.Observable;
|
|
|
+import io.reactivex.rxjava3.core.ObservableEmitter;
|
|
|
+import io.reactivex.rxjava3.core.ObservableOnSubscribe;
|
|
|
+import io.reactivex.rxjava3.core.Observer;
|
|
|
+import io.reactivex.rxjava3.disposables.Disposable;
|
|
|
+import io.reactivex.rxjava3.schedulers.Schedulers;
|
|
|
+import io.rong.imkit.picture.tools.PictureFileUtils;
|
|
|
import retrofit2.Call;
|
|
|
import retrofit2.Callback;
|
|
|
import retrofit2.Response;
|
|
@@ -76,14 +99,22 @@ public class MineStylePagePresenter extends BasePresenter<MineStylePageContract.
|
|
|
});
|
|
|
}
|
|
|
|
|
|
- public void upLoadVideo(Activity activity, String filePath) {
|
|
|
+ private void uploadCover(Activity activity, String videoFilePath, String coverFilePath) {
|
|
|
+ TeacherSelfStyleInfoBean.StyleVideoBean styleVideoBean = new TeacherSelfStyleInfoBean.StyleVideoBean();
|
|
|
UploadHelper uploadHelper = new UploadHelper(activity, UploadConstants.UPLOAD_TYPE_OTHER);
|
|
|
- uploadHelper.uploadFile(new File(filePath));
|
|
|
+ uploadHelper.uploadFile(new File(coverFilePath));
|
|
|
+ uploadHelper.setLoadingTip("封面上传中");
|
|
|
uploadHelper.setUpLoadCallBack(new UploadHelper.UpLoadCallBack() {
|
|
|
@Override
|
|
|
public void onSuccess(String url) {
|
|
|
+ if (TextUtils.isEmpty(styleVideoBean.cover)) {
|
|
|
+ //上传完封面再上传视频
|
|
|
+ styleVideoBean.cover = url;
|
|
|
+ uploadHelper.setLoadingTip("视频上传中");
|
|
|
+ uploadHelper.uploadFile(new File(videoFilePath));
|
|
|
+ return;
|
|
|
+ }
|
|
|
if (getView() != null) {
|
|
|
- TeacherSelfStyleInfoBean.StyleVideoBean styleVideoBean = new TeacherSelfStyleInfoBean.StyleVideoBean();
|
|
|
styleVideoBean.videoUrl = url;
|
|
|
styleVideoBean.type = 0;
|
|
|
getView().upLoadVideoSuccess(styleVideoBean);
|
|
@@ -98,4 +129,66 @@ public class MineStylePagePresenter extends BasePresenter<MineStylePageContract.
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ public void getUploadVideoCover(Activity activity, String videoFilePath) {
|
|
|
+ Observable.create(new ObservableOnSubscribe<String>() {
|
|
|
+ @Override
|
|
|
+ public void subscribe(@io.reactivex.rxjava3.annotations.NonNull ObservableEmitter<String> emitter) throws Throwable {
|
|
|
+ getVideoCover(Utils.getApp(), videoFilePath, emitter);
|
|
|
+ }
|
|
|
+ }).subscribeOn(Schedulers.newThread())
|
|
|
+ .observeOn(AndroidSchedulers.mainThread())
|
|
|
+ .subscribe(new Observer<String>() {
|
|
|
+ @Override
|
|
|
+ public void onSubscribe(@io.reactivex.rxjava3.annotations.NonNull Disposable d) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onNext(@io.reactivex.rxjava3.annotations.NonNull String s) {
|
|
|
+ uploadCover(activity, videoFilePath, s);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onError(@io.reactivex.rxjava3.annotations.NonNull Throwable e) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onComplete() {
|
|
|
+
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ private void getVideoCover(Context context, String targetVideoPath, ObservableEmitter<String> emitter) {
|
|
|
+ Glide.with(context)
|
|
|
+ .setDefaultRequestOptions(
|
|
|
+ new RequestOptions()
|
|
|
+ .frame(0)
|
|
|
+ .centerCrop()
|
|
|
+ .error(com.cooleshow.base.R.drawable.bg_video_placeholder)
|
|
|
+ .placeholder(com.cooleshow.base.R.drawable.bg_video_placeholder)
|
|
|
+ ).asBitmap()
|
|
|
+ .load(new File(targetVideoPath))
|
|
|
+ .into(new SimpleTarget<Bitmap>() {
|
|
|
+ @Override
|
|
|
+ public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
|
|
|
+ if (resource != null) {
|
|
|
+ long currentTime = System.currentTimeMillis();
|
|
|
+ String path = FileUtils.getCacheDir(Utils.getApp(), FileUtils.filesDirectory) + "/videoCover";
|
|
|
+ File parentFile = new File(path);
|
|
|
+ if (!parentFile.exists()) {
|
|
|
+ parentFile.mkdirs();
|
|
|
+ }
|
|
|
+ File file = new File(parentFile, String.valueOf(currentTime) + ".png");
|
|
|
+ PictureFileUtils.saveBitmapFile(resource, file);
|
|
|
+ if (emitter != null) {
|
|
|
+ emitter.onNext(file.getAbsolutePath());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
}
|