optimize time

pull/842/head v1.9.8
Li ZongYing 2 years ago
parent 0286d118ed
commit c16a4bcb9c
  1. 9
      HISTORY.md
  2. 82
      app/src/main/java/com/lizongying/mytv/SettingFragment.kt
  3. 36
      app/src/main/java/com/lizongying/mytv/UpdateManager.kt
  4. 11
      app/src/main/java/com/lizongying/mytv/Utils.kt
  5. 2
      version.json

@ -1,5 +1,10 @@
## 更新日志
### v1.9.8(通用)
* 优化在线升级
* 优化可能状态错误的问题
### v1.9.6(通用)
* 优化在线升级
@ -41,6 +46,8 @@
* 修复无法播放问题
### 以下已不可用
### v1.8.0(通用)
* 修复返回键无法退出问题
@ -176,8 +183,6 @@
* 修复播放失败的问题
### 以下已不可用
### v1.5.3(安卓5及以上专用)
* 修复部分情况下APP切换后无法继续播放的问题

@ -1,11 +1,16 @@
package com.lizongying.mytv
import android.Manifest
import android.content.pm.PackageManager
import android.os.Build
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.view.WindowManager
import android.widget.Toast
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import androidx.core.view.marginEnd
import androidx.core.view.marginTop
import androidx.fragment.app.DialogFragment
@ -87,13 +92,10 @@ class SettingFragment : DialogFragment() {
}
}
updateManager = UpdateManager(context, context.appVersionCode)
binding.checkVersion.setOnClickListener(
OnClickListenerCheckVersion(
activity as MainActivity,
updateManager
)
)
binding.checkVersion.setOnClickListener {
(activity as MainActivity).settingDelayHide()
requestInstallPermissions()
}
val application = requireActivity().applicationContext as MyTvApplication
@ -162,20 +164,63 @@ class SettingFragment : DialogFragment() {
return binding.root
}
fun setVersionName(versionName: String) {
if (_binding != null) {
binding.versionName.text = versionName
private fun requestInstallPermissions() {
val context = requireContext()
val permissionsList: MutableList<String> = ArrayList()
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && !context.packageManager.canRequestPackageInstalls()) {
permissionsList.add(Manifest.permission.REQUEST_INSTALL_PACKAGES)
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M &&
ContextCompat.checkSelfPermission(
context,
Manifest.permission.READ_EXTERNAL_STORAGE
) != PackageManager.PERMISSION_GRANTED
) {
permissionsList.add(Manifest.permission.READ_EXTERNAL_STORAGE)
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M &&
ContextCompat.checkSelfPermission(
context,
Manifest.permission.WRITE_EXTERNAL_STORAGE
) != PackageManager.PERMISSION_GRANTED
) {
permissionsList.add(Manifest.permission.WRITE_EXTERNAL_STORAGE)
}
if (permissionsList.isNotEmpty()) {
ActivityCompat.requestPermissions(
requireActivity(),
permissionsList.toTypedArray<String>(),
PERMISSIONS_REQUEST_CODE
)
} else {
UpdateManager(context, context.appVersionCode).checkAndUpdate()
}
}
internal class OnClickListenerCheckVersion(
private val mainActivity: MainActivity,
private val updateManager: UpdateManager
) :
View.OnClickListener {
override fun onClick(view: View?) {
mainActivity.settingDelayHide()
updateManager.checkAndUpdate()
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
if (requestCode == PERMISSIONS_REQUEST_CODE) {
var allPermissionsGranted = true
for (result in grantResults) {
if (result != PackageManager.PERMISSION_GRANTED) {
allPermissionsGranted = false
break
}
}
if (allPermissionsGranted) {
val context = requireContext()
UpdateManager(context, context.appVersionCode).checkAndUpdate()
} else {
Toast.makeText(context, "权限授权失败", Toast.LENGTH_LONG).show()
}
}
}
@ -186,6 +231,7 @@ class SettingFragment : DialogFragment() {
companion object {
const val TAG = "SettingFragment"
const val PERMISSIONS_REQUEST_CODE = 1
}
}

@ -1,6 +1,5 @@
package com.lizongying.mytv
import android.app.Activity
import android.app.DownloadManager
import android.app.DownloadManager.Request
import android.content.BroadcastReceiver
@ -14,9 +13,6 @@ import android.os.Environment
import android.os.Handler
import android.os.Looper
import android.util.Log
import androidx.core.app.ActivityCompat
import androidx.core.content.PermissionChecker
import androidx.core.content.PermissionChecker.checkSelfPermission
import androidx.fragment.app.FragmentActivity
import com.lizongying.mytv.api.ApiClient
import com.lizongying.mytv.requests.ReleaseRequest
@ -39,9 +35,6 @@ class UpdateManager(
private var downloadReceiver: DownloadReceiver? = null
fun checkAndUpdate() {
if (!haveStoragePermission()) {
return
}
CoroutineScope(Dispatchers.Main).launch {
var text = "版本获取失败"
var update = false
@ -68,36 +61,7 @@ class UpdateManager(
dialog.show((context as FragmentActivity).supportFragmentManager, TAG)
}
private fun haveStoragePermission(): Boolean {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (checkSelfPermission(context, android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
=== PermissionChecker.PERMISSION_GRANTED
) {
Log.e("Permission error", "You have permission")
return true
} else {
Log.e("Permission error", "You have asked for permission")
ActivityCompat.requestPermissions(
context as Activity, arrayOf(
android.Manifest.permission.WRITE_EXTERNAL_STORAGE
), 1
)
return false
}
} else { //you don't need to worry about these stuff below api level 23
Log.e("Permission error", "You already have the permission")
return true
}
}
private fun startDownload(release: ReleaseResponse) {
val packageInstaller = context.packageManager
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
if (!packageInstaller.canRequestPackageInstalls()) {
}
}
val apkName = "my-tv"
val apkFileName = "$apkName-${release.version_name}.apk"
Log.i(TAG, "apkFileName $apkFileName")

@ -2,7 +2,6 @@ package com.lizongying.mytv
import android.content.res.Resources
import android.os.Build
import android.util.Log
import android.util.TypedValue
import com.google.gson.Gson
import com.lizongying.mytv.api.TimeResponse
@ -37,13 +36,14 @@ object Utils {
}
suspend fun init() {
var currentTimeMillis: Long = 0
try {
currentTimeMillis = getTimestampFromServer()
val currentTimeMillis = getTimestampFromServer()
if (currentTimeMillis > 0) {
between = System.currentTimeMillis() - currentTimeMillis
}
} catch (e: Exception) {
println("Failed to retrieve timestamp from server: ${e.message}")
}
between = System.currentTimeMillis() - currentTimeMillis
withContext(Dispatchers.Main) {
listener?.onRequestFinished(null)
@ -71,8 +71,6 @@ object Utils {
private suspend fun getTimestampFromServer(): Long {
return withContext(Dispatchers.IO) {
val client = okhttp3.OkHttpClient.Builder()
.connectTimeout(500, java.util.concurrent.TimeUnit.MILLISECONDS)
.readTimeout(1, java.util.concurrent.TimeUnit.SECONDS)
.addInterceptor(RetryInterceptor(3))
.build()
val request = okhttp3.Request.Builder()
@ -85,7 +83,6 @@ object Utils {
Gson().fromJson(string, TimeResponse::class.java).data.t.toLong()
}
} catch (e: IOException) {
// Handle network errors
throw IOException("Error during network request", e)
}
}

@ -1 +1 @@
{"version_code": 17368576, "version_name": "v1.9.6"}
{"version_code": 17369088, "version_name": "v1.9.8"}

Loading…
Cancel
Save