From 65a8297fe0a12bf2ba0bb9b0daec3754dbe25fb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E7=8E=89=E4=B9=85?= <1484288157@qq.com> Date: Wed, 27 May 2020 15:45:35 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=9D=E5=AD=98=E9=A1=B6=E9=83=A8=E8=A7=86?= =?UTF-8?q?=E9=A2=91=E8=BF=9B=E5=BA=A6=E9=87=8D=E5=90=AF=E6=81=A2=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/gh/common/constant/Constants.java | 2 ++ .../java/com/gh/gamecenter/MainActivity.java | 23 ++++--------------- .../gamedetail/GameDetailFragment.kt | 13 ++++++++++- .../gamedetail/video/TopVideoView.kt | 12 +++++++++- 4 files changed, 29 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/com/gh/common/constant/Constants.java b/app/src/main/java/com/gh/common/constant/Constants.java index bb3d5b3ac3..e67204b880 100644 --- a/app/src/main/java/com/gh/common/constant/Constants.java +++ b/app/src/main/java/com/gh/common/constant/Constants.java @@ -76,6 +76,8 @@ public class Constants { public static final String SP_FILTER_TAGS = "filter_tags"; //实名认证弹窗分类数据 public static final String SP_AUTH_DIALOG = "auth_dialog"; + //顶部视频进度保存,重启恢复 + public static final String SP_TOP_VIDEO_SCHEDULE = "top_video_schedule"; //手机号码匹配规则 public static final String REGEX_MOBILE = "^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$"; diff --git a/app/src/main/java/com/gh/gamecenter/MainActivity.java b/app/src/main/java/com/gh/gamecenter/MainActivity.java index 3f79be3d97..b20f487ae8 100644 --- a/app/src/main/java/com/gh/gamecenter/MainActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MainActivity.java @@ -23,9 +23,6 @@ import android.view.View; import android.view.Window; import android.widget.TextView; -import androidx.annotation.NonNull; -import androidx.lifecycle.ViewModelProviders; - import com.gh.base.AppUncaughtHandler; import com.gh.base.BaseActivity; import com.gh.base.fragment.BaseFragment_ViewPager; @@ -119,6 +116,8 @@ import java.util.TimerTask; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; +import androidx.annotation.NonNull; +import androidx.lifecycle.ViewModelProviders; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.schedulers.Schedulers; import okhttp3.MediaType; @@ -265,22 +264,6 @@ public class MainActivity extends BaseActivity { //启动app删除视频缓存文件 AppExecutor.getIoExecutor().execute(() -> { try { - /*File cacheFileDirectory = StorageUtils.getIndividualCacheDirectory(this); - if (cacheFileDirectory.exists() && cacheFileDirectory.isDirectory()) { - for (File file : cacheFileDirectory.listFiles()) { - FileUtils.deleteFile(file.getPath()); - } - } - //创建nomedia文件 - File noMediaFile = new File(cacheFileDirectory.getParent(), ".nomedia"); - - if (!cacheFileDirectory.exists()) { - cacheFileDirectory.mkdirs(); - } - - if (!noMediaFile.exists()) { - noMediaFile.createNewFile(); - }*/ String dirPath = getCacheDir().getAbsolutePath() + File.separator + "exo"; FileUtils.deleteFolder(new File(dirPath)); } catch (Exception e) { @@ -292,6 +275,8 @@ public class MainActivity extends BaseActivity { SPUtils.setBoolean(Constants.SP_TOP_VIDEO_VOICE, true); //恢复视频流非Wifi提醒 SPUtils.setBoolean(Constants.SP_NON_WIFI_TIPS, true); + //重置顶部视频播放进度 + SPUtils.setString(Constants.SP_TOP_VIDEO_SCHEDULE, ""); } @Override diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt index c51e85b236..a024cda905 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt @@ -20,6 +20,7 @@ import com.facebook.drawee.view.SimpleDraweeView import com.gh.base.BaseActivity import com.gh.base.adapter.FragmentAdapter import com.gh.base.fragment.BaseFragment_TabLayout +import com.gh.common.constant.Constants import com.gh.common.exposure.ExposureEvent import com.gh.common.util.* import com.gh.common.view.FlexLinearLayout @@ -49,6 +50,7 @@ import com.gh.gamecenter.suggest.SuggestType import com.gh.gamecenter.tag.TagsActivity import com.google.android.material.appbar.AppBarLayout import com.google.android.material.tabs.TabLayout +import com.google.gson.reflect.TypeToken import com.halo.assistant.HaloApp import com.halo.assistant.fragment.WebFragment import com.lightgame.download.DataWatcher @@ -911,11 +913,20 @@ class GameDetailFragment : NormalFragment() { private fun releaseVideo() { if (mViewModel.displayTopVideo) { - SPUtils.setLong(mTopVideoView.video?.url ?: "", mTopVideoView.getCurrentPosition()) + recordVideoSchedule() mTopVideoView.release() mTopVideoView.disposableTimer() } } + //保存视频进度 + private fun recordVideoSchedule(){ + val datas = SPUtils.getString(Constants.SP_TOP_VIDEO_SCHEDULE) + val type = object : TypeToken>() {}.type + val schedules = GsonUtils.gson.fromJson>(datas, type) + ?: hashMapOf() + schedules[mTopVideoView.video?.url ?: ""] = mTopVideoView.getCurrentPosition() + SPUtils.setString(Constants.SP_TOP_VIDEO_SCHEDULE, GsonUtils.toJson(schedules)) + } private fun tabPerformClick(position: Int) { if (!mIsPreferredTabSelected) { diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/video/TopVideoView.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/video/TopVideoView.kt index 6c8a6b9873..4b4b7f15e4 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/video/TopVideoView.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/video/TopVideoView.kt @@ -19,6 +19,7 @@ import com.gh.download.DownloadManager import com.gh.gamecenter.R import com.gh.gamecenter.entity.GameDetailEntity import com.gh.gamecenter.gamedetail.GameDetailViewModel +import com.google.gson.reflect.TypeToken import com.lightgame.utils.Utils import com.shuyu.gsyvideoplayer.GSYVideoManager import com.shuyu.gsyvideoplayer.utils.CommonUtil @@ -128,7 +129,16 @@ class TopVideoView @JvmOverloads constructor(context: Context, attrs: AttributeS MtaHelper.onEvent("游戏详情_顶部视频", "视频播放方式", "手动播放") } if (isAutoPlay) { - val seekTime = SPUtils.getLong(video?.url ?: "", 0) + var seekTime = 0L + val datas = SPUtils.getString(Constants.SP_TOP_VIDEO_SCHEDULE) + val type = object : TypeToken>() {}.type + val schedules = GsonUtils.gson.fromJson>(datas, type)?: mapOf() + schedules.forEach { + if (it.key == video?.url) { + seekTime = it.value + return@forEach + } + } seekOnStart = seekTime } startPlayLogic()