diff --git a/README.md b/README.md index 2086a0f..ad62894 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,11 @@ ## 更新日志 +### v1.3.2 + +* 增加重试,减少因网络问题导致的播放失败 +* 优化横幅banner + ### v1.2.6 * 支持安卓4.2 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e7731fb..f76b90f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -12,12 +12,11 @@ android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" - android:usesCleartextTraffic="true" android:theme="@style/Theme.MyTV"> ) { - yspTokenService.getInfo() - .enqueue(object : Callback { - override fun onResponse(call: Call, response: Response) { - if (response.isSuccessful) { - val info = response.body() - token = info?.data?.token - Log.i(TAG, "info success $token") - } else { - Log.e(TAG, "info status error") - } - fragmentReady() - } - - override fun onFailure(call: Call, t: Throwable) { - Log.e(TAG, "info request error $t") - fragmentReady() - } - }) - } - fun fetchVideo(tvModel: TVViewModel, cookie: String) { if (::myRunnable.isInitialized) { handler.removeCallbacks(myRunnable) @@ -150,26 +128,38 @@ class Request { Log.i(TAG, "$title url $url") tvModel.addVideoUrl(url) tvModel.allReady() - + tvModel.retryTimes = 0 myRunnable = MyRunnable(tvModel) handler.post(myRunnable) } else { Log.e(TAG, "$title key error") - tvModel.firstSource() + if (tvModel.retryTimes < tvModel.retryMaxTimes) { + tvModel.retryTimes++ + fetchData(tvModel) + } } } else { Log.e(TAG, "$title url error $request") - tvModel.firstSource() + if (tvModel.retryTimes < tvModel.retryMaxTimes) { + tvModel.retryTimes++ + fetchData(tvModel) + } } } else { Log.e(TAG, "$title status error") - tvModel.firstSource() + if (tvModel.retryTimes < tvModel.retryMaxTimes) { + tvModel.retryTimes++ + fetchData(tvModel) + } } } override fun onFailure(call: Call, t: Throwable) { Log.e(TAG, "$title request error") - tvModel.firstSource() + if (tvModel.retryTimes < tvModel.retryMaxTimes) { + tvModel.retryTimes++ + fetchData(tvModel) + } } }) } @@ -207,11 +197,19 @@ class Request { fetchVideo(tvModel, cookie) } else { Log.e(TAG, "info status error") + if (tvModel.retryTimes < tvModel.retryMaxTimes) { + tvModel.retryTimes++ + fetchData(tvModel) + } } } override fun onFailure(call: Call, t: Throwable) { Log.e(TAG, "info request error $t") + if (tvModel.retryTimes < tvModel.retryMaxTimes) { + tvModel.retryTimes++ + fetchData(tvModel) + } } }) } else { @@ -251,7 +249,6 @@ class Request { // Log.d(TAG, "$title kvcollect success") } else { Log.e(TAG, "$title kvcollect status error") - tvModel.firstSource() } } diff --git a/app/src/main/java/com/lizongying/mytv/models/TVViewModel.kt b/app/src/main/java/com/lizongying/mytv/models/TVViewModel.kt index f58890b..e4ee541 100644 --- a/app/src/main/java/com/lizongying/mytv/models/TVViewModel.kt +++ b/app/src/main/java/com/lizongying/mytv/models/TVViewModel.kt @@ -19,6 +19,8 @@ class TVViewModel(private var tv: TV) : ViewModel() { private var rowPosition: Int = 0 private var itemPosition: Int = 0 + var retryTimes: Int = 0 + var retryMaxTimes: Int = 3 var programUpdateTime: Long = 0 private val _programId = MutableLiveData() diff --git a/app/src/main/res/drawable/banner.png b/app/src/main/res/drawable/banner.png new file mode 100644 index 0000000..09b5324 Binary files /dev/null and b/app/src/main/res/drawable/banner.png differ