Commit 00243d6d authored by sheteng's avatar sheteng

2.0版本

parent cd104a8c
...@@ -13,6 +13,7 @@ data class GameInfo( ...@@ -13,6 +13,7 @@ data class GameInfo(
val boosterServer: String, val boosterServer: String,
val createdDate: String, val createdDate: String,
val dnsServer: String, val dnsServer: String,
val downloadType : Int,
val downloadUrl: String, val downloadUrl: String,
val gameName: String, val gameName: String,
val icon: String, val icon: String,
...@@ -36,5 +37,6 @@ data class Announcement( ...@@ -36,5 +37,6 @@ data class Announcement(
val id: Int, val id: Int,
val status: Int, val status: Int,
val title: String, val title: String,
val url: String val url: String,
val type: Int
) )
\ No newline at end of file
...@@ -8,6 +8,7 @@ import com.ccwangluo.accelerator.model.GameInfo ...@@ -8,6 +8,7 @@ import com.ccwangluo.accelerator.model.GameInfo
import com.ccwangluo.accelerator.utils.SysUtils import com.ccwangluo.accelerator.utils.SysUtils
import com.ccwangluo.accelerator.utils.http.HttpGo import com.ccwangluo.accelerator.utils.http.HttpGo
import com.xuexiang.xpage.base.XPageFragment import com.xuexiang.xpage.base.XPageFragment
import com.xuexiang.xutil.app.AppUtils
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
...@@ -16,14 +17,16 @@ class GameListModel : ViewModel() { ...@@ -16,14 +17,16 @@ class GameListModel : ViewModel() {
val gameModel = MutableLiveData<Game>() val gameModel = MutableLiveData<Game>()
val clearList = MutableLiveData<Boolean>() val clearList = MutableLiveData<Boolean>()
fun freshData(xPageFragment: XPageFragment,page: Int) { fun freshData(xPageFragment: XPageFragment, page: Int) {
xPageFragment.lifecycleScope.launch(Dispatchers.IO) { xPageFragment.lifecycleScope.launch(Dispatchers.IO) {
val res = HttpGo.getSync<Game>("/api/new/game/list?page=${page}&size=10&channelId=${SysUtils.getChannel()}") val res =
HttpGo.getSync<Game>("/api/new/game/list?page=${page}&size=20&channelId=${SysUtils.getChannel()}")
res?.let { res?.let {
it.data?.let { it.data?.let {
clearList.postValue(page == 1) clearList.postValue(page == 1)
gameModel.postValue(it) gameModel.postValue(it)
} }
} }
} }
......
...@@ -65,7 +65,7 @@ class AcceleratorFragment : XPageFragment() { ...@@ -65,7 +65,7 @@ class AcceleratorFragment : XPageFragment() {
override fun initViews() { override fun initViews() {
acceleratorViewModel.netState.observe(this, { acceleratorViewModel.netState.observe(this) {
if (it.preNetDelay != -1 && state == BaseService.State.Connected) { //有网络 if (it.preNetDelay != -1 && state == BaseService.State.Connected) { //有网络
binding.preDelay1.setText(it.preNetDelay.toString()) binding.preDelay1.setText(it.preNetDelay.toString())
...@@ -110,7 +110,7 @@ class AcceleratorFragment : XPageFragment() { ...@@ -110,7 +110,7 @@ class AcceleratorFragment : XPageFragment() {
binding.netQuality.setText(SysUtils.getnetQuality(it.preNetDelay)) binding.netQuality.setText(SysUtils.getnetQuality(it.preNetDelay))
} }
binding.activeNetwork.setText(SysUtils.getActiveNet()) binding.activeNetwork.setText(SysUtils.getActiveNet())
}) }
acceleratorViewModel.accState.observe(this) { acceleratorViewModel.accState.observe(this) {
binding.accStateTx.setText("加速中 ${SysUtils.getAccTimeString(accTimer)}") binding.accStateTx.setText("加速中 ${SysUtils.getAccTimeString(accTimer)}")
...@@ -313,6 +313,7 @@ class AcceleratorFragment : XPageFragment() { ...@@ -313,6 +313,7 @@ class AcceleratorFragment : XPageFragment() {
fun openToWebview(url: String) { fun openToWebview(url: String) {
val params = Bundle() val params = Bundle()
params.putString(CommonWebViewFragment.WEBVIEW_URL_KEY, HttpConfig.UI_MAIN_URL + url) params.putString(CommonWebViewFragment.WEBVIEW_URL_KEY, HttpConfig.UI_MAIN_URL + url)
params.putInt(CommonWebViewFragment.GAME_ID, AcceleratorUtils.game!!.id)
LoginUtils.token?.let { LoginUtils.token?.let {
openPage(CommonWebViewFragment::class.java, params) openPage(CommonWebViewFragment::class.java, params)
} ?: let { } ?: let {
...@@ -338,6 +339,7 @@ class AcceleratorFragment : XPageFragment() { ...@@ -338,6 +339,7 @@ class AcceleratorFragment : XPageFragment() {
LoginUtils.token?.let { LoginUtils.token?.let {
PageOption.to(CommonWebViewFragment::class.java) PageOption.to(CommonWebViewFragment::class.java)
.putString(CommonWebViewFragment.WEBVIEW_URL_KEY, HttpConfig.UI_MAIN_URL + url) .putString(CommonWebViewFragment.WEBVIEW_URL_KEY, HttpConfig.UI_MAIN_URL + url)
.putInt(CommonWebViewFragment.GAME_ID, AcceleratorUtils.game!!.id)
.setRequestCode(CLICK_START_ACC_REQUEST_CODE) .setRequestCode(CLICK_START_ACC_REQUEST_CODE)
.open(this) .open(this)
} ?: let { } ?: let {
......
...@@ -29,10 +29,12 @@ import com.google.android.material.appbar.AppBarLayout ...@@ -29,10 +29,12 @@ import com.google.android.material.appbar.AppBarLayout
import com.google.android.material.tabs.TabLayout import com.google.android.material.tabs.TabLayout
import com.google.android.material.tabs.TabLayoutMediator import com.google.android.material.tabs.TabLayoutMediator
import com.hjq.toast.ToastUtils import com.hjq.toast.ToastUtils
import com.xuexiang.xpage.annotation.Page
import com.xuexiang.xpage.base.XPageFragment import com.xuexiang.xpage.base.XPageFragment
import com.xuexiang.xpage.utils.TitleBar import com.xuexiang.xpage.utils.TitleBar
import com.xuexiang.xutil.app.AppUtils import com.xuexiang.xutil.app.AppUtils
@Page(name = "news")
class NewsFragment : XPageFragment() { class NewsFragment : XPageFragment() {
private var _binding: FragmentNewsBinding? = null private var _binding: FragmentNewsBinding? = null
private val binding get() = _binding!! private val binding get() = _binding!!
...@@ -42,6 +44,8 @@ class NewsFragment : XPageFragment() { ...@@ -42,6 +44,8 @@ class NewsFragment : XPageFragment() {
return null return null
} }
private var gameId: Int = 0
var dataList = arrayListOf<Plugin>() var dataList = arrayListOf<Plugin>()
override fun inflateView(inflater: LayoutInflater?, container: ViewGroup?): View { override fun inflateView(inflater: LayoutInflater?, container: ViewGroup?): View {
...@@ -53,6 +57,7 @@ class NewsFragment : XPageFragment() { ...@@ -53,6 +57,7 @@ class NewsFragment : XPageFragment() {
val titles = arrayOf("全部", "攻略", "视频", "评价", "问答") val titles = arrayOf("全部", "攻略", "视频", "评价", "问答")
var adapter: NewsCollectionAdapter? = null var adapter: NewsCollectionAdapter? = null
override fun initViews() { override fun initViews() {
gameId = arguments?.getInt(CommonWebViewFragment.GAME_ID)!!
newsViewModel.notice.observe(this) { it1 -> newsViewModel.notice.observe(this) { it1 ->
binding.newsNotice.visibility = View.VISIBLE binding.newsNotice.visibility = View.VISIBLE
binding.tvMarquee.addDisplayString(it1.title) binding.tvMarquee.addDisplayString(it1.title)
...@@ -175,10 +180,9 @@ class NewsFragment : XPageFragment() { ...@@ -175,10 +180,9 @@ class NewsFragment : XPageFragment() {
}) })
AcceleratorUtils.game?.let { newsViewModel.getNotice(gameId)
newsViewModel.getNotice(it.id) newsViewModel.getPlugin(gameId)
newsViewModel.getPlugin(it.id)
}
} }
override fun setUserVisibleHint(isVisibleToUser: Boolean) { override fun setUserVisibleHint(isVisibleToUser: Boolean) {
...@@ -191,6 +195,7 @@ class NewsFragment : XPageFragment() { ...@@ -191,6 +195,7 @@ class NewsFragment : XPageFragment() {
fun openToWebviewNative(url: String) { fun openToWebviewNative(url: String) {
val params = Bundle() val params = Bundle()
params.putString(CommonWebViewFragment.WEBVIEW_URL_KEY, HttpConfig.UI_MAIN_URL + url) params.putString(CommonWebViewFragment.WEBVIEW_URL_KEY, HttpConfig.UI_MAIN_URL + url)
params.putInt(CommonWebViewFragment.GAME_ID, gameId)
openPage(CommonWebViewFragment::class.java, params) openPage(CommonWebViewFragment::class.java, params)
} }
...@@ -198,6 +203,7 @@ class NewsFragment : XPageFragment() { ...@@ -198,6 +203,7 @@ class NewsFragment : XPageFragment() {
fun openToWebview(url: String) { fun openToWebview(url: String) {
val params = Bundle() val params = Bundle()
params.putString(CommonWebViewFragment.WEBVIEW_URL_KEY, url) params.putString(CommonWebViewFragment.WEBVIEW_URL_KEY, url)
params.putInt(CommonWebViewFragment.GAME_ID, gameId)
openPage(CommonWebViewFragment::class.java, params) openPage(CommonWebViewFragment::class.java, params)
} }
......
...@@ -42,6 +42,7 @@ class CommonWebViewFragment : XPageFragment() { ...@@ -42,6 +42,7 @@ class CommonWebViewFragment : XPageFragment() {
override fun initViews() { override fun initViews() {
val url = arguments?.getString(WEBVIEW_URL_KEY) val url = arguments?.getString(WEBVIEW_URL_KEY)
val gameId = arguments?.getInt(GAME_ID)
show_title = arguments?.getBoolean(SHOW_TITLE) ?: false show_title = arguments?.getBoolean(SHOW_TITLE) ?: false
if (show_title) { if (show_title) {
binding.webBar.visibility = View.VISIBLE binding.webBar.visibility = View.VISIBLE
...@@ -59,10 +60,10 @@ class CommonWebViewFragment : XPageFragment() { ...@@ -59,10 +60,10 @@ class CommonWebViewFragment : XPageFragment() {
var weburl = it var weburl = it
if (weburl.contains("?")) { if (weburl.contains("?")) {
weburl = weburl =
weburl + "&channel=${SysUtils.getChannel()}&gameId=${AcceleratorUtils.game?.id}" weburl + "&channel=${SysUtils.getChannel()}&gameId=${gameId}"
} else { } else {
weburl = weburl =
weburl + "?channel=${SysUtils.getChannel()}&gameId=${AcceleratorUtils.game?.id}" weburl + "?channel=${SysUtils.getChannel()}&gameId=${gameId}"
} }
LoginUtils.token?.let { LoginUtils.token?.let {
weburl = weburl + "&token=${it}" weburl = weburl + "&token=${it}"
...@@ -192,5 +193,6 @@ class CommonWebViewFragment : XPageFragment() { ...@@ -192,5 +193,6 @@ class CommonWebViewFragment : XPageFragment() {
companion object { companion object {
val WEBVIEW_URL_KEY = "WEBVIEW_URL_KEY" val WEBVIEW_URL_KEY = "WEBVIEW_URL_KEY"
val SHOW_TITLE = "SHOW_TITLE" val SHOW_TITLE = "SHOW_TITLE"
val GAME_ID = "GAME_ID"
} }
} }
\ No newline at end of file
package com.ccwangluo.accelerator.utils
class Constants {
companion object {
val GAME_ID = "GAME_ID"
}
}
\ No newline at end of file
...@@ -2,6 +2,7 @@ package com.ccwangluo.accelerator.utils ...@@ -2,6 +2,7 @@ package com.ccwangluo.accelerator.utils
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.pm.ApplicationInfo
import android.net.ConnectivityManager import android.net.ConnectivityManager
import android.net.NetworkCapabilities import android.net.NetworkCapabilities
import android.net.Uri import android.net.Uri
...@@ -191,4 +192,48 @@ object SysUtils { ...@@ -191,4 +192,48 @@ object SysUtils {
return MMKV.defaultMMKV().decodeString("device_uuid", null) return MMKV.defaultMMKV().decodeString("device_uuid", null)
} }
fun compareVersionTo(localVersion: String?, remoteVersion: String?): Boolean {
try {
if (TextUtils.isEmpty(localVersion) || TextUtils.isEmpty(remoteVersion)) {
return true
}
val local = localVersion!!.split("\\.")
val remote = remoteVersion!!.split("\\.")
if (local.size != remote.size || local.size == 0) {
return true
}
for (i in 0..local.size) {
if (local[i].toInt() < remote[i].toInt()) {
return false
}
}
} catch (e: java.lang.Exception) {
}
return true
}
/**
* 获取手机已安装应用列表
* @param ctx
* @return
*/
fun getAllAppInfo(ctx: Context): ArrayList<String?>? {
val appBeanList: ArrayList<String?> = ArrayList()
val packageManager = ctx.packageManager
val list = packageManager.getInstalledPackages(0)
for (p in list) {
val flags = p.applicationInfo.flags
// 判断是否是属于系统的apk
if (flags != ApplicationInfo.FLAG_SYSTEM) {
appBeanList.add(p.applicationInfo.packageName)
}
}
return appBeanList
}
} }
\ No newline at end of file
...@@ -10,6 +10,7 @@ import com.google.gson.reflect.TypeToken ...@@ -10,6 +10,7 @@ import com.google.gson.reflect.TypeToken
import com.hjq.toast.ToastUtils import com.hjq.toast.ToastUtils
import com.xuexiang.xutil.XUtil import com.xuexiang.xutil.XUtil
import okhttp3.* import okhttp3.*
import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.RequestBody.Companion.toRequestBody import okhttp3.RequestBody.Companion.toRequestBody
import timber.log.Timber import timber.log.Timber
...@@ -79,7 +80,6 @@ object HttpGo { ...@@ -79,7 +80,6 @@ object HttpGo {
return null return null
} }
val jsonType get() = "application/json; charset=utf-8".toMediaTypeOrNull() val jsonType get() = "application/json; charset=utf-8".toMediaTypeOrNull()
......
...@@ -215,6 +215,7 @@ ...@@ -215,6 +215,7 @@
</RelativeLayout> </RelativeLayout>
<LinearLayout <LinearLayout
android:visibility="gone"
android:id="@+id/game_page" android:id="@+id/game_page"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
......
...@@ -214,6 +214,7 @@ ...@@ -214,6 +214,7 @@
android:background="@color/divide_gray" /> android:background="@color/divide_gray" />
<LinearLayout <LinearLayout
android:id="@+id/game_notice_area_1"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="7.75dp" android:layout_marginTop="7.75dp"
...@@ -221,11 +222,13 @@ ...@@ -221,11 +222,13 @@
android:orientation="horizontal"> android:orientation="horizontal">
<TextView <TextView
android:id="@+id/game_notice_1_1"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_gravity="center"
android:layout_weight="1" android:layout_weight="1"
android:gravity="center" android:gravity="center"
android:maxLength="6"
android:text="资讯社区" android:text="资讯社区"
android:textColor="#FF36B8F4" android:textColor="#FF36B8F4"
android:textSize="11.5sp" /> android:textSize="11.5sp" />
...@@ -237,11 +240,13 @@ ...@@ -237,11 +240,13 @@
android:background="@color/divide_gray" /> android:background="@color/divide_gray" />
<TextView <TextView
android:id="@+id/game_notice_1_2"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_gravity="center"
android:layout_weight="1" android:layout_weight="1"
android:gravity="center" android:gravity="center"
android:maxLength="6"
android:text="资讯社区" android:text="资讯社区"
android:textColor="#FF36B8F4" android:textColor="#FF36B8F4"
android:textSize="11.5sp" /> android:textSize="11.5sp" />
...@@ -253,10 +258,12 @@ ...@@ -253,10 +258,12 @@
android:background="@color/divide_gray" /> android:background="@color/divide_gray" />
<TextView <TextView
android:id="@+id/game_notice_1_3"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_gravity="center"
android:layout_weight="1" android:layout_weight="1"
android:maxLength="6"
android:gravity="center" android:gravity="center"
android:text="资讯社区" android:text="资讯社区"
android:textColor="#FF36B8F4" android:textColor="#FF36B8F4"
...@@ -264,6 +271,42 @@ ...@@ -264,6 +271,42 @@
</LinearLayout> </LinearLayout>
<RelativeLayout
android:id="@+id/game_notice_area_2"
android:layout_width="match_parent"
android:layout_height="30dp"
android:layout_marginTop="9dp"
android:layout_marginBottom="9.5dp"
android:layout_marginLeft="22.5dp"
android:layout_marginRight="22.5dp"
android:orientation="horizontal"
android:background="@drawable/acc_text_bg_blue"
>
<TextView
android:id="@+id/game_notice_2_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="【最新消息】常见问题解答,更新了~"
android:textColor="#FF36B8F4"
android:layout_centerVertical="true"
android:layout_marginLeft="5dp"
android:textSize="11sp"
/>
<TextView
android:layout_width="22dp"
android:layout_height="15dp"
android:text="查看 >"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_marginRight="5dp"
android:textColor="#FF36B8F4"
android:textSize="11sp"
/>
</RelativeLayout>
<View <View
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="13dp" android:layout_height="13dp"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment