This commit is contained in:
Li ZongYing
2024-06-07 13:13:05 +08:00
parent e55584c910
commit f4c1db33b3
14 changed files with 122 additions and 3 deletions
+4
View File
@@ -1,5 +1,9 @@
## 更新日誌 ## 更新日誌
### v2.1.2
*
### v2.1.1 ### v2.1.1
* 平衡聲音 * 平衡聲音
Binary file not shown.
Binary file not shown.
@@ -3,13 +3,37 @@ package com.lizongying.mytv
import android.app.AlertDialog import android.app.AlertDialog
import android.app.Dialog import android.app.Dialog
import android.os.Bundle import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.DialogFragment import androidx.fragment.app.DialogFragment
import com.lizongying.mytv.databinding.ConfirmationBinding
class ConfirmationFragment( class ConfirmationFragment(
private val listener: ConfirmationListener, private val listener: ConfirmationListener,
private val message: String, private val message: String,
private val update: Boolean private val update: Boolean
) : DialogFragment() { ) : DialogFragment() {
//
// private var _binding: ConfirmationBinding? = null
// private val binding get() = _binding!!
//
// override fun onCreateView(
// inflater: LayoutInflater, container: ViewGroup?,
// savedInstanceState: Bundle?
// ): View {
// _binding = ConfirmationBinding.inflate(inflater, container, false)
// return binding.root
// }
//
// fun updateProgress(progress: Int) {
// binding.progressBar.progress = progress
// }
//
// override fun onDestroyView() {
// super.onDestroyView()
// _binding = null
// }
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
return activity?.let { return activity?.let {
@@ -5,7 +5,10 @@ import android.content.Context
import android.content.res.Resources import android.content.res.Resources
import android.util.DisplayMetrics import android.util.DisplayMetrics
import android.view.WindowManager import android.view.WindowManager
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.ViewModelStore
import androidx.multidex.MultiDex import androidx.multidex.MultiDex
import com.lizongying.mytv.models.MyViewModel
class MyTVApplication : Application() { class MyTVApplication : Application() {
@@ -23,6 +26,8 @@ class MyTVApplication : Application() {
private var density = 2.0f private var density = 2.0f
private var scale = 1.0f private var scale = 1.0f
lateinit var myViewModel: MyViewModel
override fun onCreate() { override fun onCreate() {
super.onCreate() super.onCreate()
@@ -60,6 +65,11 @@ class MyTVApplication : Application() {
deviation = width - Resources.getSystem().displayMetrics.widthPixels deviation = width - Resources.getSystem().displayMetrics.widthPixels
scale = Resources.getSystem().displayMetrics.scaledDensity scale = Resources.getSystem().displayMetrics.scaledDensity
myViewModel = ViewModelProvider(
ViewModelStore(),
ViewModelProvider.NewInstanceFactory()
)[MyViewModel::class.java]
} }
fun getDisplayMetrics(): DisplayMetrics { fun getDisplayMetrics(): DisplayMetrics {
@@ -6,11 +6,14 @@ import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.View.GONE
import android.view.View.VISIBLE
import android.view.ViewGroup import android.view.ViewGroup
import android.view.WindowManager import android.view.WindowManager
import android.widget.Toast import android.widget.Toast
import androidx.core.app.ActivityCompat import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.core.view.isVisible
import androidx.core.view.marginEnd import androidx.core.view.marginEnd
import androidx.core.view.marginTop import androidx.core.view.marginTop
import androidx.fragment.app.DialogFragment import androidx.fragment.app.DialogFragment
@@ -159,6 +162,21 @@ class SettingFragment : DialogFragment() {
requireActivity().finishAffinity() requireActivity().finishAffinity()
} }
// val myViewModel = application.myViewModel
// application.myViewModel.downloadProgress.observe(viewLifecycleOwner) { _ ->
// val downloadProgress = myViewModel.downloadProgress.value
// if (downloadProgress != null) {
// if (downloadProgress == 100) {
// binding.progressBar.visibility = GONE
// } else {
// if (!binding.progressBar.isVisible) {
// binding.progressBar.visibility = VISIBLE
// }
// binding.progressBar.progress = downloadProgress
// }
// }
// }
updateManager = UpdateManager(context, context.appVersionCode) updateManager = UpdateManager(context, context.appVersionCode)
return binding.root return binding.root
@@ -31,7 +31,7 @@ class UpdateManager(
release = releaseRequest.getRelease() release = releaseRequest.getRelease()
val code = release?.version_code val code = release?.version_code
if (code != null) { if (code != null) {
if (code.toLong() > versionCode) { if (code.toLong() >= versionCode) {
text = "最新版本:${release?.version_name}" text = "最新版本:${release?.version_name}"
update = true update = true
} else { } else {
@@ -13,6 +13,7 @@ import androidx.core.app.NotificationCompat
import androidx.core.content.FileProvider import androidx.core.content.FileProvider
import androidx.work.CoroutineWorker import androidx.work.CoroutineWorker
import androidx.work.WorkerParameters import androidx.work.WorkerParameters
import com.lizongying.mytv.models.MyViewModel
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import java.io.File import java.io.File
@@ -22,6 +23,8 @@ class UpdateWorker(context: Context, params: WorkerParameters) : CoroutineWorker
private lateinit var notificationManager: NotificationManager private lateinit var notificationManager: NotificationManager
private lateinit var notificationBuilder: NotificationCompat.Builder private lateinit var notificationBuilder: NotificationCompat.Builder
private lateinit var myViewModel: MyViewModel
override suspend fun doWork(): Result { override suspend fun doWork(): Result {
val downloadUrl = inputData.getString("DOWNLOAD_URL") ?: return Result.failure() val downloadUrl = inputData.getString("DOWNLOAD_URL") ?: return Result.failure()
val apkFileName = inputData.getString("APK_FILENAME") ?: return Result.failure() val apkFileName = inputData.getString("APK_FILENAME") ?: return Result.failure()
@@ -29,6 +32,9 @@ class UpdateWorker(context: Context, params: WorkerParameters) : CoroutineWorker
showNotification(applicationContext) showNotification(applicationContext)
val app = applicationContext as MyTVApplication
myViewModel = app.myViewModel
return withContext(Dispatchers.IO) { return withContext(Dispatchers.IO) {
try { try {
downloadAndInstall(applicationContext, downloadUrl, apkFileName, versionName) downloadAndInstall(applicationContext, downloadUrl, apkFileName, versionName)
@@ -96,6 +102,8 @@ class UpdateWorker(context: Context, params: WorkerParameters) : CoroutineWorker
if (bytesTotal > 0) { if (bytesTotal > 0) {
val progress = (bytesDownloaded * 100L / bytesTotal).toInt() val progress = (bytesDownloaded * 100L / bytesTotal).toInt()
Log.i(TAG, "progress $progress")
// myViewModel.setDownloadProgress(progress)
notificationBuilder.setProgress(100, progress, false) notificationBuilder.setProgress(100, progress, false)
notificationManager.notify(1, notificationBuilder.build()) notificationManager.notify(1, notificationBuilder.build())
} }
@@ -12,6 +12,8 @@ import okhttp3.TlsVersion
import retrofit2.Retrofit import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory import retrofit2.converter.gson.GsonConverterFactory
import retrofit2.converter.protobuf.ProtoConverterFactory import retrofit2.converter.protobuf.ProtoConverterFactory
import java.net.InetSocketAddress
import java.net.Proxy
import javax.net.ssl.SSLContext import javax.net.ssl.SSLContext
import javax.net.ssl.TrustManager import javax.net.ssl.TrustManager
import javax.net.ssl.X509TrustManager import javax.net.ssl.X509TrustManager
@@ -166,7 +168,7 @@ class ApiClient {
val sslContext = SSLContext.getInstance("SSL") val sslContext = SSLContext.getInstance("SSL")
sslContext.init(null, trustAllCerts, java.security.SecureRandom()) sslContext.init(null, trustAllCerts, java.security.SecureRandom())
// val proxy = Proxy(Proxy.Type.HTTP, InetSocketAddress("10.0.2.2", 8888)) val proxy = Proxy(Proxy.Type.HTTP, InetSocketAddress("10.0.2.2", 8888))
val builder = OkHttpClient.Builder() val builder = OkHttpClient.Builder()
.sslSocketFactory(sslContext.socketFactory, trustAllCerts[0] as X509TrustManager) .sslSocketFactory(sslContext.socketFactory, trustAllCerts[0] as X509TrustManager)
@@ -0,0 +1,19 @@
package com.lizongying.mytv.models
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
class MyViewModel : ViewModel() {
private var _downloadProgress = MutableLiveData<Int>()
val downloadProgress: LiveData<Int>
get() = _downloadProgress
fun setDownloadProgress(progress: Int) {
_downloadProgress.value = progress
}
init {
_downloadProgress.value = 0
}
}
+24
View File
@@ -0,0 +1,24 @@
<!-- res/layout/fragment_progress_dialog.xml -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:padding="20dp">
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/start_update"
tools:text="开始更新">
</Button>
<androidx.core.widget.ContentLoadingProgressBar
android:id="@+id/progressBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:indeterminate="false"
android:max="100"
android:progress="0"
android:progressDrawable="@android:drawable/progress_horizontal" />
</LinearLayout>
+9
View File
@@ -59,6 +59,15 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" /> android:layout_height="wrap_content" />
</LinearLayout> </LinearLayout>
<!-- <androidx.core.widget.ContentLoadingProgressBar-->
<!-- android:id="@+id/progressBar"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:indeterminate="false"-->
<!-- android:max="100"-->
<!-- android:progress="0"-->
<!-- android:visibility="gone"-->
<!-- android:progressDrawable="@android:drawable/progress_horizontal" />-->
<Button <Button
android:id="@+id/clear" android:id="@+id/clear"
android:layout_width="wrap_content" android:layout_width="wrap_content"
+1
View File
@@ -8,4 +8,5 @@
<string name="title_time">显示时间</string> <string name="title_time">显示时间</string>
<string name="clear">恢复默认</string> <string name="clear">恢复默认</string>
<string name="exit">退出应用</string> <string name="exit">退出应用</string>
<string name="start_update">开始更新</string>
</resources> </resources>
+1 -1
View File
@@ -1 +1 @@
{"version_code": 33620224, "version_name": "v2.1.1"} {"version_code": 33620480, "version_name": "v2.1.2"}