Skip to content

Commit c16a4bc

Browse files
committed
optimize time
1 parent 0286d11 commit c16a4bc

File tree

5 files changed

+76
-64
lines changed

5 files changed

+76
-64
lines changed

HISTORY.md

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
## 更新日志
22

3+
### v1.9.8(通用)
4+
5+
* 优化在线升级
6+
* 优化可能状态错误的问题
7+
38
### v1.9.6(通用)
49

510
* 优化在线升级
@@ -41,6 +46,8 @@
4146

4247
* 修复无法播放问题
4348

49+
### 以下已不可用
50+
4451
### v1.8.0(通用)
4552

4653
* 修复返回键无法退出问题
@@ -176,8 +183,6 @@
176183

177184
* 修复播放失败的问题
178185

179-
### 以下已不可用
180-
181186
### v1.5.3(安卓5及以上专用)
182187

183188
* 修复部分情况下APP切换后无法继续播放的问题

app/src/main/java/com/lizongying/mytv/SettingFragment.kt

Lines changed: 64 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
package com.lizongying.mytv
22

3+
import android.Manifest
4+
import android.content.pm.PackageManager
35
import android.os.Build
46
import android.os.Bundle
57
import android.view.LayoutInflater
68
import android.view.View
79
import android.view.ViewGroup
810
import android.view.WindowManager
11+
import android.widget.Toast
12+
import androidx.core.app.ActivityCompat
13+
import androidx.core.content.ContextCompat
914
import androidx.core.view.marginEnd
1015
import androidx.core.view.marginTop
1116
import androidx.fragment.app.DialogFragment
@@ -87,13 +92,10 @@ class SettingFragment : DialogFragment() {
8792
}
8893
}
8994

90-
updateManager = UpdateManager(context, context.appVersionCode)
91-
binding.checkVersion.setOnClickListener(
92-
OnClickListenerCheckVersion(
93-
activity as MainActivity,
94-
updateManager
95-
)
96-
)
95+
binding.checkVersion.setOnClickListener {
96+
(activity as MainActivity).settingDelayHide()
97+
requestInstallPermissions()
98+
}
9799

98100
val application = requireActivity().applicationContext as MyTvApplication
99101

@@ -162,20 +164,63 @@ class SettingFragment : DialogFragment() {
162164
return binding.root
163165
}
164166

165-
fun setVersionName(versionName: String) {
166-
if (_binding != null) {
167-
binding.versionName.text = versionName
167+
private fun requestInstallPermissions() {
168+
val context = requireContext()
169+
val permissionsList: MutableList<String> = ArrayList()
170+
171+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && !context.packageManager.canRequestPackageInstalls()) {
172+
permissionsList.add(Manifest.permission.REQUEST_INSTALL_PACKAGES)
173+
}
174+
175+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M &&
176+
ContextCompat.checkSelfPermission(
177+
context,
178+
Manifest.permission.READ_EXTERNAL_STORAGE
179+
) != PackageManager.PERMISSION_GRANTED
180+
) {
181+
permissionsList.add(Manifest.permission.READ_EXTERNAL_STORAGE)
182+
}
183+
184+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M &&
185+
ContextCompat.checkSelfPermission(
186+
context,
187+
Manifest.permission.WRITE_EXTERNAL_STORAGE
188+
) != PackageManager.PERMISSION_GRANTED
189+
) {
190+
permissionsList.add(Manifest.permission.WRITE_EXTERNAL_STORAGE)
191+
}
192+
193+
if (permissionsList.isNotEmpty()) {
194+
ActivityCompat.requestPermissions(
195+
requireActivity(),
196+
permissionsList.toTypedArray<String>(),
197+
PERMISSIONS_REQUEST_CODE
198+
)
199+
} else {
200+
UpdateManager(context, context.appVersionCode).checkAndUpdate()
168201
}
169202
}
170203

171-
internal class OnClickListenerCheckVersion(
172-
private val mainActivity: MainActivity,
173-
private val updateManager: UpdateManager
174-
) :
175-
View.OnClickListener {
176-
override fun onClick(view: View?) {
177-
mainActivity.settingDelayHide()
178-
updateManager.checkAndUpdate()
204+
override fun onRequestPermissionsResult(
205+
requestCode: Int,
206+
permissions: Array<out String>,
207+
grantResults: IntArray
208+
) {
209+
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
210+
if (requestCode == PERMISSIONS_REQUEST_CODE) {
211+
var allPermissionsGranted = true
212+
for (result in grantResults) {
213+
if (result != PackageManager.PERMISSION_GRANTED) {
214+
allPermissionsGranted = false
215+
break
216+
}
217+
}
218+
if (allPermissionsGranted) {
219+
val context = requireContext()
220+
UpdateManager(context, context.appVersionCode).checkAndUpdate()
221+
} else {
222+
Toast.makeText(context, "权限授权失败", Toast.LENGTH_LONG).show()
223+
}
179224
}
180225
}
181226

@@ -186,6 +231,7 @@ class SettingFragment : DialogFragment() {
186231

187232
companion object {
188233
const val TAG = "SettingFragment"
234+
const val PERMISSIONS_REQUEST_CODE = 1
189235
}
190236
}
191237

app/src/main/java/com/lizongying/mytv/UpdateManager.kt

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.lizongying.mytv
22

3-
import android.app.Activity
43
import android.app.DownloadManager
54
import android.app.DownloadManager.Request
65
import android.content.BroadcastReceiver
@@ -14,9 +13,6 @@ import android.os.Environment
1413
import android.os.Handler
1514
import android.os.Looper
1615
import android.util.Log
17-
import androidx.core.app.ActivityCompat
18-
import androidx.core.content.PermissionChecker
19-
import androidx.core.content.PermissionChecker.checkSelfPermission
2016
import androidx.fragment.app.FragmentActivity
2117
import com.lizongying.mytv.api.ApiClient
2218
import com.lizongying.mytv.requests.ReleaseRequest
@@ -39,9 +35,6 @@ class UpdateManager(
3935
private var downloadReceiver: DownloadReceiver? = null
4036

4137
fun checkAndUpdate() {
42-
if (!haveStoragePermission()) {
43-
return
44-
}
4538
CoroutineScope(Dispatchers.Main).launch {
4639
var text = "版本获取失败"
4740
var update = false
@@ -68,36 +61,7 @@ class UpdateManager(
6861
dialog.show((context as FragmentActivity).supportFragmentManager, TAG)
6962
}
7063

71-
private fun haveStoragePermission(): Boolean {
72-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
73-
if (checkSelfPermission(context, android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
74-
=== PermissionChecker.PERMISSION_GRANTED
75-
) {
76-
Log.e("Permission error", "You have permission")
77-
return true
78-
} else {
79-
Log.e("Permission error", "You have asked for permission")
80-
ActivityCompat.requestPermissions(
81-
context as Activity, arrayOf(
82-
android.Manifest.permission.WRITE_EXTERNAL_STORAGE
83-
), 1
84-
)
85-
return false
86-
}
87-
} else { //you don't need to worry about these stuff below api level 23
88-
Log.e("Permission error", "You already have the permission")
89-
return true
90-
}
91-
}
92-
93-
9464
private fun startDownload(release: ReleaseResponse) {
95-
val packageInstaller = context.packageManager
96-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
97-
if (!packageInstaller.canRequestPackageInstalls()) {
98-
}
99-
}
100-
10165
val apkName = "my-tv"
10266
val apkFileName = "$apkName-${release.version_name}.apk"
10367
Log.i(TAG, "apkFileName $apkFileName")

app/src/main/java/com/lizongying/mytv/Utils.kt

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package com.lizongying.mytv
22

33
import android.content.res.Resources
44
import android.os.Build
5-
import android.util.Log
65
import android.util.TypedValue
76
import com.google.gson.Gson
87
import com.lizongying.mytv.api.TimeResponse
@@ -37,13 +36,14 @@ object Utils {
3736
}
3837

3938
suspend fun init() {
40-
var currentTimeMillis: Long = 0
4139
try {
42-
currentTimeMillis = getTimestampFromServer()
40+
val currentTimeMillis = getTimestampFromServer()
41+
if (currentTimeMillis > 0) {
42+
between = System.currentTimeMillis() - currentTimeMillis
43+
}
4344
} catch (e: Exception) {
4445
println("Failed to retrieve timestamp from server: ${e.message}")
4546
}
46-
between = System.currentTimeMillis() - currentTimeMillis
4747

4848
withContext(Dispatchers.Main) {
4949
listener?.onRequestFinished(null)
@@ -71,8 +71,6 @@ object Utils {
7171
private suspend fun getTimestampFromServer(): Long {
7272
return withContext(Dispatchers.IO) {
7373
val client = okhttp3.OkHttpClient.Builder()
74-
.connectTimeout(500, java.util.concurrent.TimeUnit.MILLISECONDS)
75-
.readTimeout(1, java.util.concurrent.TimeUnit.SECONDS)
7674
.addInterceptor(RetryInterceptor(3))
7775
.build()
7876
val request = okhttp3.Request.Builder()
@@ -85,7 +83,6 @@ object Utils {
8583
Gson().fromJson(string, TimeResponse::class.java).data.t.toLong()
8684
}
8785
} catch (e: IOException) {
88-
// Handle network errors
8986
throw IOException("Error during network request", e)
9087
}
9188
}

version.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"version_code": 17368576, "version_name": "v1.9.6"}
1+
{"version_code": 17369088, "version_name": "v1.9.8"}

0 commit comments

Comments
 (0)