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()