Selaa lähdekoodia

feat 优化远程更新10%

RobinTan1024 4 vuotta sitten
vanhempi
commit
7d880e9eb6

+ 2 - 0
app/build.gradle

@@ -80,4 +80,6 @@ dependencies {
     implementation  "com.scwang.smart:refresh-header-classics:$refresh_version"
 
     implementation 'com.hjq:toast:8.8'
+
+    implementation 'com.moos:Material-ProgressView:1.0.6'
 }

+ 0 - 16
app/src/main/java/com/doverfuelingsolutions/issp/utils/NetworkUtil.kt

@@ -1,16 +0,0 @@
-package com.doverfuelingsolutions.issp.utils
-
-import android.content.Context
-import android.net.ConnectivityManager
-
-class NetworkUtil {
-
-    companion object {
-
-        // confirm TEST
-        fun isAvailable(context: Context): Boolean {
-            val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
-            return connectivityManager.isDefaultNetworkActive
-        }
-    }
-}

+ 8 - 7
app/src/main/java/com/doverfuelingsolutions/issp/utils/download/DownloadAction.kt

@@ -42,23 +42,24 @@ class DownloadAction(
             var cursor: Cursor? = downloadManager.query(query)
             while (cursor != null && cursor.moveToFirst()) {
                 cursor.use {
+                    // 下载状态
+                    val status = it.getInt(it.getColumnIndex(DownloadManager.COLUMN_STATUS))
                     // 已经下载文件大小
                     val downloaded = it.getInt(it.getColumnIndexOrThrow(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR))
                     // 下载文件的总大小
                     val downloadTotal = it.getInt(it.getColumnIndexOrThrow(DownloadManager.COLUMN_TOTAL_SIZE_BYTES))
-                    // 下载状态
-                    val status = it.getInt(it.getColumnIndex(DownloadManager.COLUMN_STATUS))
-                    DFSLog.d("apk download: status=$status, size: $downloaded, total: $downloadTotal")
+                    DFSLog.v("apk download: status=$status, size: $downloaded, total: $downloadTotal")
 
                     progressListener.invoke(status, downloaded, downloadTotal)
+
                     cursor = when (status) {
-                        DownloadManager.STATUS_SUCCESSFUL, DownloadManager.STATUS_FAILED -> {
-                            null
-                        }
-                        else -> {
+                        DownloadManager.STATUS_PENDING, DownloadManager.STATUS_RUNNING, DownloadManager.STATUS_PAUSED -> {
                             Thread.sleep(1000)
                             downloadManager.query(query)
                         }
+                        else -> {
+                            null
+                        }
                     }
                 }
             }

+ 3 - 1
app/src/main/java/com/doverfuelingsolutions/issp/view/MainActivity.kt

@@ -23,7 +23,6 @@ import com.doverfuelingsolutions.issp.fusion.callback.OnFusionStatus
 import com.doverfuelingsolutions.issp.utils.DFSToastUtil
 import com.doverfuelingsolutions.issp.utils.WindowUtil
 import com.doverfuelingsolutions.issp.utils.log.DFSLog
-import com.doverfuelingsolutions.issp.view.fragment.FragmentLoading
 import com.doverfuelingsolutions.issp.view.fragment.FragmentReconnect
 import com.doverfuelingsolutions.issp.view.fragment.FragmentSelect
 import com.doverfuelingsolutions.issp.view.util.LoadingDialogBuilder
@@ -73,6 +72,9 @@ class MainActivity : AppCompatActivity(),
     override fun onResume() {
         super.onResume()
         WindowUtil.setFullscreen(this)
+        dialogFusionLinking?.let {
+            if (it.isShowing) it.hide()
+        }
     }
 
     override fun onDestroy() {

+ 14 - 13
app/src/main/java/com/doverfuelingsolutions/issp/view/PreferenceActivity.kt

@@ -7,7 +7,6 @@ import android.content.Intent
 import android.net.Uri
 import android.os.Bundle
 import android.os.Environment
-import android.view.MenuItem
 import android.view.View
 import android.widget.Button
 import android.widget.TextView
@@ -32,6 +31,7 @@ import com.doverfuelingsolutions.issp.utils.sp.SPKeys
 import com.doverfuelingsolutions.issp.utils.sp.SPUtil
 import com.doverfuelingsolutions.issp.view.fragment.FragmentPreference
 import com.google.android.material.dialog.MaterialAlertDialogBuilder
+import com.moos.library.CircleProgressView
 import kotlinx.coroutines.launch
 import java.io.File
 
@@ -145,9 +145,9 @@ class PreferenceActivity : AppCompatActivity(),
             val currentVersion = AppUtil.getVersionName()
             DFSLog.i("current version is $currentVersion")
 
-            viewModel.isLookingUpdate.value = true
+            viewModel.isSubmitting.value = true
             val result = SystemApi.remoteVersion()
-            viewModel.isLookingUpdate.value = false
+            viewModel.isSubmitting.value = false
 
             if (!result.success || result.data == null) {
                 DFSLog.e("latest version check failed: ${result.message}")
@@ -173,9 +173,10 @@ class PreferenceActivity : AppCompatActivity(),
                 findViewById<TextView>(R.id.versionTitle).text = StringUtil.get(R.string.new_version, remoteVersion.version)
                 findViewById<TextView>(R.id.versionInfo).text = StringUtil.get(R.string.new_version, remoteVersion.info)
             }
-            val loadingTip = dialogView.findViewById<TextView>(R.id.loadingTip).apply {
-                text = StringUtil.get(R.string.in_download)
-            }
+            val progressView = dialogView.findViewById<CircleProgressView>(R.id.progressView)
+//            val loadingTip = dialogView.findViewById<TextView>(R.id.loadingTip).apply {
+//                text = StringUtil.get(R.string.in_download)
+//            }
             val dialog = MaterialAlertDialogBuilder(this@PreferenceActivity)
                 .setTitle(R.string.find_new_version)
                 .setView(dialogView)
@@ -191,19 +192,19 @@ class PreferenceActivity : AppCompatActivity(),
             val downloadAction = DownloadAction(
                 this@PreferenceActivity,
                 Uri.parse("${WayneApiConfig.HOST_ASSETS}/isspt/${remoteVersion.name}"),
-                localName
-            )
+                localName)
             downloadAction.start { status, size, total ->
                 lifecycleScope.launch {
                     when (status) {
                         // 下载中
                         DownloadManager.STATUS_RUNNING -> {
-                            val percentage = (size.toDouble() * 10000 / total).toInt().toDouble() / 100
-                            loadingTip.text = StringUtil.get(R.string.download_progress, percentage)
+//                            val percentage = (size.toDouble() * 10000 / total).toInt().toDouble() / 100
+//                            loadingTip.text = StringUtil.get(R.string.download_progress, percentage)
+                            progressView.progress = size.toFloat() * 100 / total
                         }
                         // 下载结束
                         DownloadManager.STATUS_SUCCESSFUL -> {
-                            loadingTip.text = StringUtil.get(R.string.download_done)
+//                            loadingTip.text = StringUtil.get(R.string.download_done)
                             actionButton.visibility = View.VISIBLE
 
                             // 安装应用
@@ -237,7 +238,7 @@ class PreferenceActivity : AppCompatActivity(),
                         }
                         // 下载失败
                         DownloadManager.STATUS_FAILED -> {
-                            loadingTip.text = StringUtil.get(R.string.download_fail)
+//                            loadingTip.text = StringUtil.get(R.string.download_fail)
                             actionButton.visibility = View.VISIBLE
                         }
                     }
@@ -247,6 +248,6 @@ class PreferenceActivity : AppCompatActivity(),
     }
 
     class PreferenceViewModel : ViewModel() {
-        val isLookingUpdate = MutableLiveData(false)
+        val isSubmitting = MutableLiveData(false)
     }
 }

+ 3 - 2
app/src/main/res/layout/activity_preference.xml

@@ -50,9 +50,9 @@
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_marginHorizontal="20dp"
-                android:enabled="@{!viewModel.isLookingUpdate}"
+                android:enabled="@{!viewModel.isSubmitting}"
                 android:onClick="@{handler}"
-                android:text="@{viewModel.isLookingUpdate ? @string/in_check_update : @string/check_update}" />
+                android:text="@{viewModel.isSubmitting ? @string/in_check_update : @string/check_update}" />
 
             <Button
                 android:id="@+id/buttonClose"
@@ -60,6 +60,7 @@
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_marginHorizontal="20dp"
+                android:enabled="@{!viewModel.isSubmitting}"
                 android:onClick="@{handler}"
                 android:text="@string/click_close" />
         </LinearLayout>

+ 24 - 12
app/src/main/res/layout/layout_version_update.xml

@@ -1,36 +1,48 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     style="@style/wrap"
     android:gravity="center_horizontal"
-    android:orientation="vertical"
     android:minWidth="300dp"
-    android:paddingVertical="80dp"
-    android:paddingHorizontal="40dp">
+    android:orientation="vertical"
+    android:paddingHorizontal="40dp"
+    android:paddingVertical="80dp">
 
-    <include layout="@layout/layout_loading" />
+    <com.moos.library.CircleProgressView
+        android:id="@+id/progressView"
+        android:layout_width="240dp"
+        android:layout_height="240dp"
+        app:circleBroken="true"
+        app:end_color="@color/colorPrimary"
+        app:end_progress="60"
+        app:isTracked="true"
+        app:progressTextVisibility="false"
+        app:start_color="@color/colorSecondary"
+        app:start_progress="0"
+        app:track_width="26dp" />
 
     <TextView
         android:id="@+id/versionTitle"
-        android:layout_marginTop="80dp"
+        style="@style/wrap"
         android:layout_gravity="start"
+        android:layout_marginTop="80dp"
         android:text="@string/new_version"
-        android:textSize="24sp"
-        style="@style/wrap"/>
+        android:textSize="24sp" />
 
     <TextView
         android:id="@+id/versionInfo"
-        android:layout_marginTop="20dp"
+        style="@style/wrap"
         android:layout_gravity="start"
+        android:layout_marginTop="20dp"
         android:text="@string/new_version"
-        android:textSize="18sp"
-        style="@style/wrap"/>
+        android:textSize="18sp" />
 
     <Button
         android:id="@+id/close"
         style="@style/Widget.MaterialComponents.Button"
         android:layout_width="wrap_content"
-        android:visibility="gone"
         android:layout_height="wrap_content"
         android:layout_marginTop="100dp"
-        android:text="@string/click_close" />
+        android:text="@string/click_close"
+        android:visibility="gone" />
 </LinearLayout>