Commit acd80b21 authored by sheteng's avatar sheteng

v2.0 开发 9

parent 2d36b2ee
...@@ -70,8 +70,6 @@ android { ...@@ -70,8 +70,6 @@ android {
setupApp() setupApp()
android.defaultConfig.applicationId = "com.ccwangluo.accelerator"
dependencies { dependencies {
implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar", "*.aar")))) implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar", "*.aar"))))
implementation("androidx.appcompat:appcompat:1.3.1") implementation("androidx.appcompat:appcompat:1.3.1")
......
...@@ -30,9 +30,9 @@ object GameDownLoadManger { ...@@ -30,9 +30,9 @@ object GameDownLoadManger {
fun download( fun download(
activity: XPageFragment, activity: XPageFragment,
gameInfo: GameInfo gameInfo: GameInfo,
url: String
) { ) {
var url = gameInfo.downloadUrl
if (url.isNullOrBlank()) { if (url.isNullOrBlank()) {
return return
} }
...@@ -51,7 +51,8 @@ object GameDownLoadManger { ...@@ -51,7 +51,8 @@ object GameDownLoadManger {
) )
if (file.exists()) { if (file.exists()) {
activity.context?.let { DownloadUtils.install(file.absolutePath, it) } // activity.context?.let { DownloadUtils.install(file.absolutePath, it) }
file.delete()
return return
} }
downloadManager = downloadManager =
......
...@@ -48,7 +48,7 @@ object PhoneUtils { ...@@ -48,7 +48,7 @@ object PhoneUtils {
} }
fun openLoginAuth(context: Context, callback: (Boolean, String) -> Unit) { fun openLoginAuth(context: Context, callback: (Boolean, String) -> Unit) {
context?.let { context.let {
OneKeyLoginManager.getInstance().setAuthThemeConfig(getEConfig(it)) OneKeyLoginManager.getInstance().setAuthThemeConfig(getEConfig(it))
OneKeyLoginManager.getInstance().openLoginAuth(false, OneKeyLoginManager.getInstance().openLoginAuth(false,
......
...@@ -7,7 +7,7 @@ data class Game( ...@@ -7,7 +7,7 @@ data class Game(
data class GameInfo( data class GameInfo(
val announcementList: List<Announcement>, val announcementList: List<Announcement>?,
val anotherName: String, val anotherName: String,
val boosterPackageName: String?, val boosterPackageName: String?,
val boosterServer: String?, val boosterServer: String?,
...@@ -40,5 +40,6 @@ data class Announcement( ...@@ -40,5 +40,6 @@ data class Announcement(
val status: Int, val status: Int,
val title: String, val title: String,
val url: String, val url: String,
val type: Int val type: Int,
val position : Int = 1
) )
\ No newline at end of file
...@@ -8,7 +8,6 @@ import com.bumptech.glide.Glide ...@@ -8,7 +8,6 @@ import com.bumptech.glide.Glide
import com.ccwangluo.accelerator.R import com.ccwangluo.accelerator.R
import com.ccwangluo.accelerator.manager.GameDownLoadManger import com.ccwangluo.accelerator.manager.GameDownLoadManger
import com.ccwangluo.accelerator.model.GameInfo import com.ccwangluo.accelerator.model.GameInfo
import com.ccwangluo.accelerator.utils.ByteUtils
import com.ccwangluo.accelerator.utils.SysUtils import com.ccwangluo.accelerator.utils.SysUtils
import com.umeng.socialize.utils.DeviceConfigInternal.context import com.umeng.socialize.utils.DeviceConfigInternal.context
import com.xuexiang.xpage.base.XPageFragment import com.xuexiang.xpage.base.XPageFragment
...@@ -37,12 +36,18 @@ class GameDownloadDialog( ...@@ -37,12 +36,18 @@ class GameDownloadDialog(
.load(gameInfo.icon) .load(gameInfo.icon)
.into(appImg) .into(appImg)
} }
var version = gameInfo.version
if (SysUtils.compareVersionTo(gameInfo.versionTools, gameInfo.version)) {
gameInfo.versionTools?.let {
version = it
}
}
val appName = findViewById<TextView>(R.id.app_name) val appName = findViewById<TextView>(R.id.app_name)
appName.setText(gameInfo.gameName) appName.setText(gameInfo.gameName)
val appSize = findViewById<TextView>(R.id.app_size) val appSize = findViewById<TextView>(R.id.app_size)
appSize.setText("文件大小:${gameInfo.size}") appSize.setText("文件大小:${gameInfo.size}")
val appVersion = findViewById<TextView>(R.id.app_version) val appVersion = findViewById<TextView>(R.id.app_version)
appVersion.setText("版本号:${gameInfo.version}") appVersion.setText("版本号:${version}")
val btnLeft = findViewById<TextView>(R.id.btn_left) val btnLeft = findViewById<TextView>(R.id.btn_left)
btnLeft.setOnClickListener { btnLeft.setOnClickListener {
dismiss<GameDownloadDialog>() dismiss<GameDownloadDialog>()
...@@ -50,7 +55,7 @@ class GameDownloadDialog( ...@@ -50,7 +55,7 @@ class GameDownloadDialog(
} }
fun download() { fun download(url : String) {
val btnRight = findViewById<TextView>(R.id.btn_right) val btnRight = findViewById<TextView>(R.id.btn_right)
btnRight.setOnClickListener { btnRight.setOnClickListener {
...@@ -64,12 +69,12 @@ class GameDownloadDialog( ...@@ -64,12 +69,12 @@ class GameDownloadDialog(
) )
.setBtnLeft("取消") { .setBtnLeft("取消") {
}.setBtnRight("继续") { }.setBtnRight("继续") {
GameDownLoadManger.download(fragment,gameInfo) GameDownLoadManger.download(fragment,gameInfo,url)
}.show<CommonDialog>() }.show<CommonDialog>()
} }
} else { } else {
dialog.dismiss() dialog.dismiss()
GameDownLoadManger.download(fragment,gameInfo) GameDownLoadManger.download(fragment, gameInfo, url)
} }
} }
} }
......
...@@ -9,6 +9,7 @@ import com.ccwangluo.accelerator.utils.AcceleratorUtils ...@@ -9,6 +9,7 @@ import com.ccwangluo.accelerator.utils.AcceleratorUtils
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.github.shadowsocks.bg.BaseService import com.github.shadowsocks.bg.BaseService
import com.umeng.socialize.utils.DeviceConfigInternal.context
import com.xuexiang.xpage.base.XPageFragment import com.xuexiang.xpage.base.XPageFragment
import com.xuexiang.xutil.app.AppUtils import com.xuexiang.xutil.app.AppUtils
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
...@@ -20,12 +21,30 @@ class GameListModel : ViewModel() { ...@@ -20,12 +21,30 @@ class GameListModel : ViewModel() {
val gameModel = MutableLiveData<Game>() val gameModel = MutableLiveData<Game>()
val clearList = MutableLiveData<Boolean>() val clearList = MutableLiveData<Boolean>()
val gameList = mutableListOf<String>()
fun freshData(xPageFragment: XPageFragment, page: Int) { fun freshData(xPageFragment: XPageFragment, page: Int) {
var packageName = if (AcceleratorUtils.game == null || AcceleratorUtils.state != BaseService.State.Connected) "" else AcceleratorUtils.game!!.packageName var packageName =
if (AcceleratorUtils.game == null || AcceleratorUtils.state != BaseService.State.Connected) "" else AcceleratorUtils.game!!.packageName
xPageFragment.lifecycleScope.launch(Dispatchers.IO) { xPageFragment.lifecycleScope.launch(Dispatchers.IO) {
if (page == 1 || gameList.size == 0) {
getSupportGameList(xPageFragment)
}
var gamelist = ""
xPageFragment.context?.let {
var applist = StringBuffer()
for (s in SysUtils.getAllAppInfo(it)) {
if (gameList.contains(s)){
applist.append(s + ",")
}
}
if (applist.isNotBlank()){
gamelist = applist.substring(0,applist.lastIndex -1)
}
}
val res = val res =
HttpGo.getSync<Game>("/api/new/game/list?page=${page}&size=20&channelId=${SysUtils.getChannel()}&packageName=${packageName}") HttpGo.getSync<Game>("/api/new/game/list?page=${page}&status=1&size=10&channelId=${SysUtils.getChannel()}&packageName=${packageName}&packageNameList=${gamelist}")
res?.let { res?.let {
it.data?.let { it.data?.let {
clearList.postValue(page == 1) clearList.postValue(page == 1)
...@@ -35,4 +54,13 @@ class GameListModel : ViewModel() { ...@@ -35,4 +54,13 @@ class GameListModel : ViewModel() {
} }
} }
} }
suspend fun getSupportGameList(xPageFragment: XPageFragment) {
val res =
HttpGo.getSync<List<String>>("/api/new/game/getPackageNameList")
res?.let {
it.data?.let { it1 -> gameList.addAll(it1) }
}
}
} }
\ No newline at end of file
...@@ -10,6 +10,7 @@ import android.view.animation.Animation ...@@ -10,6 +10,7 @@ import android.view.animation.Animation
import android.view.animation.LinearInterpolator import android.view.animation.LinearInterpolator
import android.view.animation.RotateAnimation import android.view.animation.RotateAnimation
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
import com.bumptech.glide.Glide import com.bumptech.glide.Glide
import com.ccwangluo.accelerator.R import com.ccwangluo.accelerator.R
import com.ccwangluo.accelerator.databinding.FragmentQuickBinding import com.ccwangluo.accelerator.databinding.FragmentQuickBinding
...@@ -19,6 +20,7 @@ import com.ccwangluo.accelerator.ui.dialog.MemberDialog ...@@ -19,6 +20,7 @@ import com.ccwangluo.accelerator.ui.dialog.MemberDialog
import com.ccwangluo.accelerator.ui.web.CommonWebViewFragment import com.ccwangluo.accelerator.ui.web.CommonWebViewFragment
import com.ccwangluo.accelerator.utils.AcceleratorUtils import com.ccwangluo.accelerator.utils.AcceleratorUtils
import com.ccwangluo.accelerator.manager.LoginUtils import com.ccwangluo.accelerator.manager.LoginUtils
import com.ccwangluo.accelerator.model.GameInfo
import com.ccwangluo.accelerator.utils.AcceleratorUtils.state import com.ccwangluo.accelerator.utils.AcceleratorUtils.state
import com.ccwangluo.accelerator.utils.SysUtils import com.ccwangluo.accelerator.utils.SysUtils
import com.ccwangluo.accelerator.utils.datareport.DataRePortUtils import com.ccwangluo.accelerator.utils.datareport.DataRePortUtils
...@@ -40,6 +42,7 @@ class AcceleratorFragment : XPageFragment() { ...@@ -40,6 +42,7 @@ class AcceleratorFragment : XPageFragment() {
private lateinit var binding: FragmentQuickBinding private lateinit var binding: FragmentQuickBinding
private lateinit var acceleratorViewModel: AccelertorViewModel private lateinit var acceleratorViewModel: AccelertorViewModel
private var accTimer = 0L private var accTimer = 0L
private var gameInfo: GameInfo? = null
override fun initTitleBar(): TitleBar? { override fun initTitleBar(): TitleBar? {
//不使用@Page标注的一定要注意覆盖这个方法 //不使用@Page标注的一定要注意覆盖这个方法
...@@ -66,6 +69,7 @@ class AcceleratorFragment : XPageFragment() { ...@@ -66,6 +69,7 @@ class AcceleratorFragment : XPageFragment() {
override fun initViews() { override fun initViews() {
gameInfo = AcceleratorUtils.game
acceleratorViewModel.netState.observe(this) { acceleratorViewModel.netState.observe(this) {
if (it.preNetDelay != -1 && state == BaseService.State.Connected) { //有网络 if (it.preNetDelay != -1 && state == BaseService.State.Connected) { //有网络
...@@ -128,14 +132,6 @@ class AcceleratorFragment : XPageFragment() { ...@@ -128,14 +132,6 @@ class AcceleratorFragment : XPageFragment() {
} }
} }
acceleratorViewModel.userProfile.observe(this) {
// if (it.hasUnreadNotice) {
// binding.iconNoticeBadge.visibility = View.VISIBLE
// } else {
// binding.iconNoticeBadge.visibility = View.GONE
// }
}
binding.progressViewCircleSmall.setProgressViewUpdateListener(object : binding.progressViewCircleSmall.setProgressViewUpdateListener(object :
CircleProgressView.CircleProgressUpdateListener { CircleProgressView.CircleProgressUpdateListener {
override fun onCircleProgressStart(view: View?) { override fun onCircleProgressStart(view: View?) {
...@@ -159,8 +155,8 @@ class AcceleratorFragment : XPageFragment() { ...@@ -159,8 +155,8 @@ class AcceleratorFragment : XPageFragment() {
binding.gamePicOut.startAnimation(getDefaultAnim()) binding.gamePicOut.startAnimation(getDefaultAnim())
} }
binding.radiusTv.visibility = if (SysUtils.getChannel() == 3) View.GONE else View.VISIBLE binding.radiusTv.visibility = if (SysUtils.getChannel() == 3) View.GONE else View.VISIBLE
binding.accGameName.setText(AcceleratorUtils.game!!.gameName) binding.accGameName.setText(gameInfo!!.gameName)
AcceleratorUtils.game?.icon?.let { gameInfo?.icon?.let {
Glide.with(this) Glide.with(this)
.load(it) .load(it)
.into(binding.gameBg) .into(binding.gameBg)
...@@ -217,74 +213,7 @@ class AcceleratorFragment : XPageFragment() { ...@@ -217,74 +213,7 @@ class AcceleratorFragment : XPageFragment() {
} }
} }
binding.btnQuick.setOnClickListener { binding.btnQuick.setOnClickListener {
acceleratorViewModel.accState.value?.let { startBtnClick()
if (it.canStop) {
context?.let {
CommonDialog(it).setTitle("加速停止确认")
.setContent("停止加速可能会导致游戏断线,是否确认停止?")
.setBtnLeft("取消", {
DataRePortUtils.report("st_speed_stop_pop_cancel_clk")
}).setBtnRight("停止加速", {
DataRePortUtils.report("st_speed_stop_pop_ok_clk")
AcceleratorUtils.stopAccelerator()
}).show<CommonDialog>()
DataRePortUtils.report("st_speed_stop_pop_show")
}
DataRePortUtils.report("st_speed_stop_clk")
return@setOnClickListener
} else {
DataRePortUtils.report("st_speed_start_clk")
}
}
context?.let { it1 -> AcceleratorUtils.openLocation(it1) }
if (!LoginUtils.hasToken()) {
context?.let { it1 ->
LoginUtils.login(it1, {
})
}
DataRePortUtils.report("st_speed_result", mapOf("result" to 0, "cause" to "3"))
return@setOnClickListener
}
if (!SysUtils.getConnectivityStatus()) {
binding.quickTopToast.visibility = View.VISIBLE
binding.quickTopToastTx.setText("网络异常,请检查网络后重试")
binding.quickTopToastTx.postDelayed({
binding.quickTopToast.visibility = View.GONE
}, 2000)
DataRePortUtils.report("st_speed_result", mapOf("result" to 0, "cause" to "3"))
return@setOnClickListener
}
//
AcceleratorUtils.game?.let {
if (!SysUtils.isPackageInstall(requireContext(), it.packageName)) {
binding.quickTopToast.visibility = View.VISIBLE
binding.quickTopToastTx.setText("请先安装游戏后加速")
binding.quickTopToastTx.postDelayed({
binding.quickTopToast.visibility = View.GONE
}, 2000)
DataRePortUtils.report(
"st_speed_result",
mapOf("result" to 0, "cause" to "1")
)
return@setOnClickListener
}
}
//用户是否有使用时长
LoginUtils.getUserHasTimer(this@AcceleratorFragment) {
if (it) {
binding.btnQuick.isEnabled = false
startAnim()
} else {
DataRePortUtils.report(
"st_speed_result",
mapOf("result" to 0, "cause" to 3)
)
MemberDialog(this@AcceleratorFragment).show<MemberDialog>()
}
}
} }
binding.gameStart.setOnClickListener { binding.gameStart.setOnClickListener {
...@@ -315,6 +244,82 @@ class AcceleratorFragment : XPageFragment() { ...@@ -315,6 +244,82 @@ class AcceleratorFragment : XPageFragment() {
accTimer = l accTimer = l
acceleratorViewModel.accState.postValue(state) acceleratorViewModel.accState.postValue(state)
} }
if (AcceleratorUtils.state != BaseService.State.Connected && AcceleratorUtils.state != BaseService.State.Stopping) {
binding.btnQuick.performClick()
}
}
fun startBtnClick() {
AcceleratorUtils.state.let {
if (it.canStop) {
context?.let {
CommonDialog(it).setTitle("加速停止确认")
.setContent("停止加速可能会导致游戏断线,是否确认停止?")
.setBtnLeft("取消", {
DataRePortUtils.report("st_speed_stop_pop_cancel_clk")
}).setBtnRight("停止加速", {
DataRePortUtils.report("st_speed_stop_pop_ok_clk")
AcceleratorUtils.stopAccelerator({})
}).show<CommonDialog>()
DataRePortUtils.report("st_speed_stop_pop_show")
}
DataRePortUtils.report("st_speed_stop_clk")
return
} else {
DataRePortUtils.report("st_speed_start_clk")
}
}
gameInfo?.let { AcceleratorUtils.setGameInfo(it) }
context?.let { it1 -> AcceleratorUtils.openLocation(it1) }
if (!LoginUtils.hasToken()) {
context?.let { it1 ->
LoginUtils.login(it1, {
})
}
DataRePortUtils.report("st_speed_result", mapOf("result" to 0, "cause" to "3"))
return
}
if (!SysUtils.getConnectivityStatus()) {
binding.quickTopToast.visibility = View.VISIBLE
binding.quickTopToastTx.setText("网络异常,请检查网络后重试")
binding.quickTopToastTx.postDelayed({
binding.quickTopToast.visibility = View.GONE
}, 2000)
DataRePortUtils.report("st_speed_result", mapOf("result" to 0, "cause" to "3"))
return
}
//
gameInfo?.let {
if (!SysUtils.isPackageInstall(requireContext(), it.packageName)) {
binding.quickTopToast.visibility = View.VISIBLE
binding.quickTopToastTx.setText("请先安装游戏后加速")
binding.quickTopToastTx.postDelayed({
binding.quickTopToast.visibility = View.GONE
}, 2000)
DataRePortUtils.report(
"st_speed_result",
mapOf("result" to 0, "cause" to "1")
)
return
}
}
//用户是否有使用时长
LoginUtils.getUserHasTimer(this@AcceleratorFragment) {
if (it) {
binding.btnQuick.isEnabled = false
startAnim()
} else {
DataRePortUtils.report(
"st_speed_result",
mapOf("result" to 0, "cause" to 3)
)
MemberDialog(this@AcceleratorFragment).show<MemberDialog>()
}
}
} }
fun openToWebview(url: String) { fun openToWebview(url: String) {
......
...@@ -57,7 +57,8 @@ class NewsFragment : XPageFragment() { ...@@ -57,7 +57,8 @@ 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)!! gameId = arguments?.getInt(GAME_ID)!!
val gameName = arguments?.getString(GAME_NAME)!!
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)
...@@ -67,7 +68,7 @@ class NewsFragment : XPageFragment() { ...@@ -67,7 +68,7 @@ class NewsFragment : XPageFragment() {
openToWebviewNative("/notice?noticeId=${it1.id}") openToWebviewNative("/notice?noticeId=${it1.id}")
} }
} }
binding.newsTitle.setText(if (SysUtils.getChannel() == 3) "地下城与勇士" else "地下城与勇士 韩服") binding.newsTitle.setText(gameName)
newsViewModel.isRefresh.observe(this, Observer { newsViewModel.isRefresh.observe(this, Observer {
binding.refreshNews.isRefreshing = false binding.refreshNews.isRefreshing = false
}) })
...@@ -157,7 +158,7 @@ class NewsFragment : XPageFragment() { ...@@ -157,7 +158,7 @@ class NewsFragment : XPageFragment() {
dataList.addAll(it) dataList.addAll(it)
binding.gameNewsList.adapter?.notifyDataSetChanged() binding.gameNewsList.adapter?.notifyDataSetChanged()
}) })
adapter = NewsCollectionAdapter(this, titles,gameId) adapter = NewsCollectionAdapter(this, titles, gameId)
binding.viewPager.adapter = adapter binding.viewPager.adapter = adapter
TabLayoutMediator(binding.tabLayout, binding.viewPager) { tab, position -> TabLayoutMediator(binding.tabLayout, binding.viewPager) { tab, position ->
tab.setCustomView(R.layout.item_tab) tab.setCustomView(R.layout.item_tab)
...@@ -221,6 +222,9 @@ class NewsFragment : XPageFragment() { ...@@ -221,6 +222,9 @@ class NewsFragment : XPageFragment() {
val fragment = NewsFragment() val fragment = NewsFragment()
return fragment return fragment
} }
val GAME_NAME = "GAME_NAME"
val GAME_ID = "GAME_ID"
} }
} }
\ No newline at end of file
...@@ -21,7 +21,7 @@ class NewsViewModel : ViewModel() { ...@@ -21,7 +21,7 @@ class NewsViewModel : ViewModel() {
fun getNotice(gameId: Int) { fun getNotice(gameId: Int) {
viewModelScope.launch(Dispatchers.IO) { viewModelScope.launch(Dispatchers.IO) {
val res = val res =
HttpGo.getSync<NoticeList>("/api/announcement/list?gameId=$gameId&page=1&size=1&channelId=${SysUtils.getChannel()}") HttpGo.getSync<NoticeList>("/api/announcement/list?gameId=$gameId&page=1&size=1&channelId=${SysUtils.getChannel()}&addrType=1")
res?.let { res?.let {
if (it.code == 200) { if (it.code == 200) {
it.data?.list?.let { it.data?.list?.let {
...@@ -37,7 +37,7 @@ class NewsViewModel : ViewModel() { ...@@ -37,7 +37,7 @@ class NewsViewModel : ViewModel() {
fun getPlugin(gameId: Int) { fun getPlugin(gameId: Int) {
viewModelScope.launch(Dispatchers.IO) { viewModelScope.launch(Dispatchers.IO) {
val res = val res =
HttpGo.getSync<PluginModel>("/api/plugin/list?gameId=$gameId&page=1&size=10&channelId=${SysUtils.getChannel()}") HttpGo.getSync<PluginModel>("/api/plugin/list?gameId=${gameId}&page=1&size=10&channelId=${SysUtils.getChannel()}")
res?.let { res?.let {
if (it.code == 200) { if (it.code == 200) {
it.data?.list?.let { it.data?.list?.let {
......
...@@ -34,7 +34,8 @@ class NoticeFragment : XPageFragment() { ...@@ -34,7 +34,8 @@ class NoticeFragment : XPageFragment() {
} }
override fun initViews() { override fun initViews() {
var weburl = HttpConfig.UI_MAIN_URL +HttpConfig.UI_MESSAGE_URL + "?channel=${SysUtils.getChannel()}" var weburl =
HttpConfig.UI_MAIN_URL + HttpConfig.UI_MESSAGE_URL + "?channel=${SysUtils.getChannel()}"
LoginUtils.token?.let { LoginUtils.token?.let {
weburl = weburl + "&token=${it}" weburl = weburl + "&token=${it}"
} }
...@@ -85,13 +86,7 @@ class NoticeFragment : XPageFragment() { ...@@ -85,13 +86,7 @@ class NoticeFragment : XPageFragment() {
} }
private fun refreshLogin() { private fun refreshLogin() {
LoginUtils.token?.let { agentWeb?.webCreator?.webView?.reload()
agentWeb?.getJsAccessEntrace()
?.quickCallJs("userToken", it)
} ?: let {
agentWeb?.getJsAccessEntrace()
?.quickCallJs("clearToken")
}
} }
override fun onPause() { override fun onPause() {
......
...@@ -24,7 +24,11 @@ import com.tencent.bugly.beta.Beta ...@@ -24,7 +24,11 @@ import com.tencent.bugly.beta.Beta
/** /**
* js注入的方法 * js注入的方法
*/ */
class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb) { class AndroidInterface(
val xPageFragment: XPageFragment,
val agentWeb: AgentWeb,
var gameId: Int = -1
) {
@JavascriptInterface @JavascriptInterface
fun callAndroid(msg: String) { fun callAndroid(msg: String) {
...@@ -164,7 +168,7 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb) ...@@ -164,7 +168,7 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb)
*/ */
@JavascriptInterface @JavascriptInterface
fun getAccelerateState(callback: String) { fun getAccelerateState(callback: String) {
if (BaseService.State.Connected == AcceleratorUtils.state) { if (BaseService.State.Connected == AcceleratorUtils.state && AcceleratorUtils.game?.id == gameId) {
agentWeb.jsAccessEntrace agentWeb.jsAccessEntrace
.quickCallJs(callback, "1") .quickCallJs(callback, "1")
} else { } else {
...@@ -180,10 +184,9 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb) ...@@ -180,10 +184,9 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb)
*/ */
@JavascriptInterface @JavascriptInterface
fun clickAccelerateBtn() { fun clickAccelerateBtn() {
handler.post { xPageFragment.popToBack()
xPageFragment.setFragmentResult(500, Intent()) xPageFragment.setFragmentResult(500, Intent())
xPageFragment.popToBack()
}
} }
/** /**
......
...@@ -71,7 +71,7 @@ class CommonWebViewFragment : XPageFragment() { ...@@ -71,7 +71,7 @@ class CommonWebViewFragment : XPageFragment() {
createAgentWeb(this, binding.commonWebview, weburl) createAgentWeb(this, binding.commonWebview, weburl)
} }
agentWeb?.getJsInterfaceHolder() agentWeb?.getJsInterfaceHolder()
?.addJavaObject("android", AndroidInterface(this, agentWeb!!)) ?.addJavaObject("android", gameId?.let { AndroidInterface(this, agentWeb!!, it) })
agentWeb?.webCreator?.webView?.requestFocus(View.FOCUS_DOWN); agentWeb?.webCreator?.webView?.requestFocus(View.FOCUS_DOWN);
} }
......
...@@ -96,7 +96,7 @@ object AcceleratorUtils : TencentLocationListener { ...@@ -96,7 +96,7 @@ object AcceleratorUtils : TencentLocationListener {
.toInt() .toInt()
LoginUtils.getUserHasTimer { haveTime -> LoginUtils.getUserHasTimer { haveTime ->
if (!haveTime) { //没有加速时长关闭服务 if (!haveTime) { //没有加速时长关闭服务
stopAccelerator() stopAccelerator({})
} }
} }
netState.accNetDelay = netState.accNetDelay =
...@@ -201,7 +201,7 @@ object AcceleratorUtils : TencentLocationListener { ...@@ -201,7 +201,7 @@ object AcceleratorUtils : TencentLocationListener {
DataStore.dnsServer = game.dnsServer DataStore.dnsServer = game.dnsServer
game.boosterServer?.let { game.boosterServer?.let {
val serverPort = it.split(":") val serverPort = it.split(":")
DataStore.pingAccHost = serverPort[0] DataStore.pingAccHost = serverPort[0]
DataStore.pingAccPort = serverPort[1].toInt() DataStore.pingAccPort = serverPort[1].toInt()
} }
...@@ -238,17 +238,22 @@ object AcceleratorUtils : TencentLocationListener { ...@@ -238,17 +238,22 @@ object AcceleratorUtils : TencentLocationListener {
} }
} }
var stopListener: () -> Unit? = {}
fun stopAccelerator() { fun stopAccelerator(listener: () -> Unit) {
Core.stopService() Core.stopService()
game = null stopListener = listener
} }
private val shadowsocksConnection = object : ShadowsocksConnection.Callback { private val shadowsocksConnection = object : ShadowsocksConnection.Callback {
override fun stateChanged(state: BaseService.State, profileName: String?, msg: String?) { override fun stateChanged(state: BaseService.State, profileName: String?, msg: String?) {
AcceleratorUtils.state = state AcceleratorUtils.state = state
stateListener(state) stateListener(state)
if (state == BaseService.State.Stopped) {
stopListener()
stopListener = {}
}
if (state == BaseService.State.Stopped && !msg.isNullOrBlank()) { if (state == BaseService.State.Stopped && !msg.isNullOrBlank()) {
game = null
DataRePortUtils.report( DataRePortUtils.report(
"st_speed_result", "st_speed_result",
mapOf("result" to 0, "cause" to 3.toString()) mapOf("result" to 0, "cause" to 3.toString())
...@@ -256,7 +261,7 @@ object AcceleratorUtils : TencentLocationListener { ...@@ -256,7 +261,7 @@ object AcceleratorUtils : TencentLocationListener {
if ("vip到期".equals(msg) || (msg != null && msg.startsWith("vip已到期"))) { if ("vip到期".equals(msg) || (msg != null && msg.startsWith("vip已到期"))) {
vipExpireListener() vipExpireListener()
} else { } else {
stopAccelerator() stopAccelerator({})
ToastUtils.show(msg) ToastUtils.show(msg)
} }
} }
......
...@@ -9,6 +9,7 @@ import android.net.Uri ...@@ -9,6 +9,7 @@ import android.net.Uri
import android.os.Build import android.os.Build
import android.text.TextUtils import android.text.TextUtils
import android.util.DisplayMetrics import android.util.DisplayMetrics
import com.ccwangluo.accelerator.utils.SysUtils.channelString
import com.ccwangluo.cc_quickly.utils.SettingSPUtils import com.ccwangluo.cc_quickly.utils.SettingSPUtils
import com.hjq.toast.ToastUtils import com.hjq.toast.ToastUtils
import com.mcxiaoke.packer.helper.PackerNg import com.mcxiaoke.packer.helper.PackerNg
...@@ -27,6 +28,8 @@ object SysUtils { ...@@ -27,6 +28,8 @@ object SysUtils {
return NetworkUtils.isHaveInternet() return NetworkUtils.isHaveInternet()
} }
var channelString: String? = ""
fun getActiveNet(): String { fun getActiveNet(): String {
when (NetworkUtils.getNetStateType()) { when (NetworkUtils.getNetStateType()) {
NetworkUtils.NetState.NET_WIFI -> return "WIFI" NetworkUtils.NetState.NET_WIFI -> return "WIFI"
...@@ -114,20 +117,37 @@ object SysUtils { ...@@ -114,20 +117,37 @@ object SysUtils {
// return 4 // return 4
} }
fun getReportChannel(): Int {
return when (channelString) {
"v2_guanwang" -> 51
"v2_huawei" -> 52
"v2_xiaomi" -> 53
"v2_vivo" -> 54
"v2_yingyongbao" -> 55
"v2_OPPO" -> 56
"v2_baiduzhushou" -> 57
"v2_wufan" -> 58
"v2_share" -> 59
"v2_update" -> 60
else -> 51
}
}
fun initChannel(context: Context) { fun initChannel(context: Context) {
if (SettingSPUtils.channel == 0) { if (SettingSPUtils.channel == 0) {
val channel = PackerNg.getChannel(context) channelString = PackerNg.getChannel(context)
SettingSPUtils.channel = when (channel) { SettingSPUtils.channel = when (channelString) {
"guanwang" -> 1 "v2_guanwang" -> 1
"huawei" -> 2 "v2_huawei" -> 2
"xiaomi" -> 3 "v2_xiaomi" -> 3
"vivo" -> 4 "v2_vivo" -> 4
"yingyongbao" -> 5 "v2_yingyongbao" -> 5
"OPPO" -> 6 "v2_OPPO" -> 6
"baiduzhushou" -> 7 "v2_baiduzhushou" -> 7
"wufan" -> 8 "v2_wufan" -> 8
"share" -> 9 "v2_share" -> 9
"update" -> 10 "v2_update" -> 10
else -> 1 else -> 1
} }
} }
...@@ -213,6 +233,7 @@ object SysUtils { ...@@ -213,6 +233,7 @@ object SysUtils {
} catch (e: java.lang.Exception) { } catch (e: java.lang.Exception) {
e.printStackTrace() e.printStackTrace()
println("localVersion = $localVersion remoteVersion=${remoteVersion}")
} }
return true return true
} }
...@@ -223,17 +244,21 @@ object SysUtils { ...@@ -223,17 +244,21 @@ object SysUtils {
* @return * @return
*/ */
fun getAllAppInfo(ctx: Context): List<String> { fun getAllAppInfo(ctx: Context): List<String> {
val appBeanList = mutableListOf<String>() val gameList = mutableListOf<String>()
val packageManager = ctx.packageManager val packageManager = ctx.packageManager
val list = packageManager.getInstalledPackages(0) val list = packageManager.getInstalledPackages(0)
for (p in list) { for (p in list) {
val flags = p.applicationInfo.flags val flags = p.applicationInfo.flags
// 判断是否是属于系统的apk // 判断是否是属于系统的apk
if (flags != ApplicationInfo.FLAG_SYSTEM) { if (flags != ApplicationInfo.FLAG_SYSTEM) {
appBeanList.add(p.applicationInfo.packageName) val packageName = p.applicationInfo.packageName
if (packageName.contains("samsung")) {
continue
}
gameList.add(p.applicationInfo.packageName)
} }
} }
return appBeanList return gameList
} }
} }
\ No newline at end of file
...@@ -6,7 +6,7 @@ import com.google.gson.JsonObject ...@@ -6,7 +6,7 @@ import com.google.gson.JsonObject
import java.time.LocalDateTime import java.time.LocalDateTime
data class BaseData( data class BaseData(
var channel: Int = SysUtils.getChannel(), var channel: Int = SysUtils.getReportChannel(),
var client_ip: String = "127.0.0.1", var client_ip: String = "127.0.0.1",
var did: String? = SysUtils.getDeviceUUID(), var did: String? = SysUtils.getDeviceUUID(),
var ds: String = LocalDateTime.now().toString(), var ds: String = LocalDateTime.now().toString(),
......
...@@ -60,6 +60,7 @@ object HttpGo { ...@@ -60,6 +60,7 @@ object HttpGo {
logger.info(url) logger.info(url)
val call = okHttpClient.newCall(request.build()) val call = okHttpClient.newCall(request.build())
val response: Response = call.execute() val response: Response = call.execute()
logger.info(response.toString())
if (response.isSuccessful) { if (response.isSuccessful) {
val type = object : TypeToken<BaseModel<T>>() {}.type val type = object : TypeToken<BaseModel<T>>() {}.type
val string = response.body?.string() val string = response.body?.string()
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@color/divide_gray" android:background="@color/white"
android:orientation="vertical"> android:orientation="vertical">
<LinearLayout <LinearLayout
......
...@@ -217,8 +217,6 @@ ...@@ -217,8 +217,6 @@
android:id="@+id/game_notice_area_1" 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_marginBottom="7.75dp"
android:orientation="horizontal"> android:orientation="horizontal">
<TextView <TextView
...@@ -226,6 +224,8 @@ ...@@ -226,6 +224,8 @@
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:paddingTop="7.5dp"
android:paddingBottom="7.5dp"
android:layout_weight="1" android:layout_weight="1"
android:gravity="center" android:gravity="center"
android:maxLength="6" android:maxLength="6"
...@@ -245,6 +245,8 @@ ...@@ -245,6 +245,8 @@
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:paddingTop="7.5dp"
android:paddingBottom="7.5dp"
android:gravity="center" android:gravity="center"
android:maxLength="6" android:maxLength="6"
android:text="资讯社区" android:text="资讯社区"
...@@ -263,6 +265,8 @@ ...@@ -263,6 +265,8 @@
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:paddingTop="7.5dp"
android:paddingBottom="7.5dp"
android:maxLength="6" android:maxLength="6"
android:gravity="center" android:gravity="center"
android:text="资讯社区" android:text="资讯社区"
......
...@@ -56,8 +56,8 @@ fun Project.setupCore() { ...@@ -56,8 +56,8 @@ fun Project.setupCore() {
setupCommon() setupCommon()
android.apply { android.apply {
defaultConfig { defaultConfig {
versionCode = 3 versionCode = 1
versionName = "1.0.3" versionName = "1.0.0"
} }
compileOptions.isCoreLibraryDesugaringEnabled = true compileOptions.isCoreLibraryDesugaringEnabled = true
lintOptions { lintOptions {
......
guanwang v2_guanwang
huawei v2_huawei
xiaomi v2_xiaomi
vivo v2_vivo
yingyongbao v2_yingyongbao
OPPO v2_OPPO
baiduzhushou v2_baiduzhushou
wufan v2_wufan
share v2_share
update v2_update
\ No newline at end of file \ No newline at end of file
...@@ -26,7 +26,7 @@ object HttpConfig { ...@@ -26,7 +26,7 @@ object HttpConfig {
//隐私政策 //隐私政策
val url_privacy_policy_no_title="https://sdk-static.srccwl.com/tt_html_n/private.html" val url_privacy_policy_no_title="https://sdk-static.srccwl.com/tt_html_n/private.html"
val UI_MESSAGE_URL = "/message" val UI_MESSAGE_URL = "/systemMessage"
val UI_GAME_URL = "/game" val UI_GAME_URL = "/game"
......
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