Compare commits
39 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5bd882b489 | |||
| 1c1d1ff9b9 | |||
| a4e806d536 | |||
| 122a0b929f | |||
| 2a069fb5e7 | |||
| 115b6638a8 | |||
| ecbdcdced7 | |||
| 01db3b07d4 | |||
| 081658873f | |||
| 8d7157095d | |||
| 1eb84ca71a | |||
| 9f4149358a | |||
| 5451f244bc | |||
| aca80aceea | |||
| 964b391eec | |||
| 7584da3734 | |||
| 62060a5bf0 | |||
| f49caa11c8 | |||
| 61c2f48a50 | |||
| b9e0585dc9 | |||
| 9f191832fd | |||
| d8ee461a0a | |||
| 99094896b1 | |||
| 23203b0c5d | |||
| 4e054aa834 | |||
| e36cc54083 | |||
| bc5935d4b4 | |||
| 8fc3bb720d | |||
| e8b68f889d | |||
| 649af64e62 | |||
| 46516fb9c0 | |||
| eecfdced32 | |||
| 74d9aaf664 | |||
| 28bbb128dd | |||
| 7640812518 | |||
| 0a30e82e17 | |||
| 559951ad82 | |||
| 4a4cba5445 | |||
| b6d6568ac9 |
@ -18,6 +18,7 @@ import com.therouter.TheRouter
|
|||||||
import com.facebook.drawee.controller.BaseControllerListener
|
import com.facebook.drawee.controller.BaseControllerListener
|
||||||
import com.facebook.drawee.view.SimpleDraweeView
|
import com.facebook.drawee.view.SimpleDraweeView
|
||||||
import com.facebook.imagepipeline.image.ImageInfo
|
import com.facebook.imagepipeline.image.ImageInfo
|
||||||
|
import com.g00fy2.versioncompare.Version
|
||||||
import com.gh.common.exposure.ExposureManager
|
import com.gh.common.exposure.ExposureManager
|
||||||
import com.gh.common.util.DirectUtils.directToLinkPage
|
import com.gh.common.util.DirectUtils.directToLinkPage
|
||||||
import com.gh.common.util.LogUtils
|
import com.gh.common.util.LogUtils
|
||||||
@ -186,11 +187,11 @@ object AdDelegateHelper {
|
|||||||
"halo_launch" -> {
|
"halo_launch" -> {
|
||||||
config.ownerAd?.startAd?.let { it.id = config.ownerAd.id }
|
config.ownerAd?.startAd?.let { it.id = config.ownerAd.id }
|
||||||
|
|
||||||
// HarmonyOS 2.2.0 版本不展示第三方开屏广告 (因为会引起奇怪的闪退)
|
// HarmonyOS 4.2.0 版本不展示第三方开屏广告 (因为会引起奇怪的闪退)
|
||||||
if (MetaUtil.getRom().name == "HarmonyOS"
|
if (MetaUtil.getRom().romName == "HarmonyOS"
|
||||||
&& MetaUtil.getRom().versionName == "2.2.0"
|
&& Version(MetaUtil.getRom().romVersion).isLowerThan(Version("4.2.0"))
|
||||||
&& config.displayRule.adSource == AD_TYPE_SDK) {
|
&& config.displayRule.adSource == AD_TYPE_SDK
|
||||||
|
) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -390,7 +390,7 @@ public class Config {
|
|||||||
"manufacturer", Build.MANUFACTURER,
|
"manufacturer", Build.MANUFACTURER,
|
||||||
"model", Build.MODEL,
|
"model", Build.MODEL,
|
||||||
"android_sdk_version", String.valueOf(Build.VERSION.SDK_INT),
|
"android_sdk_version", String.valueOf(Build.VERSION.SDK_INT),
|
||||||
"rom", MetaUtil.INSTANCE.getRom().name() + " " + MetaUtil.INSTANCE.getRom().getVersionName()
|
"rom", MetaUtil.INSTANCE.getRom().getRomName() + " " + MetaUtil.INSTANCE.getRom().getRomVersion()
|
||||||
);
|
);
|
||||||
|
|
||||||
RetrofitManager.getInstance()
|
RetrofitManager.getInstance()
|
||||||
|
|||||||
@ -16,6 +16,7 @@ class DefaultExposureStateChangeListener : IExposureStateChangeListener {
|
|||||||
val exposureStatus = if (inExposure) "曝光中" else "结束曝光"
|
val exposureStatus = if (inExposure) "曝光中" else "结束曝光"
|
||||||
|
|
||||||
val isCPMExposureEvent = exposureEvent.payload.miniGameType == Constants.WECHAT_MINI_GAME_CPM
|
val isCPMExposureEvent = exposureEvent.payload.miniGameType == Constants.WECHAT_MINI_GAME_CPM
|
||||||
|
val isDSPExposureEvent = exposureEvent.payload.miniGameType == Constants.DSP_GAME
|
||||||
|
|
||||||
Utils.log(
|
Utils.log(
|
||||||
RecyclerViewExposureHelper.TAG,
|
RecyclerViewExposureHelper.TAG,
|
||||||
@ -29,6 +30,12 @@ class DefaultExposureStateChangeListener : IExposureStateChangeListener {
|
|||||||
"上报 CPM 曝光 ${exposureEvent.payload.gameName} ${exposureEvent.id}"
|
"上报 CPM 曝光 ${exposureEvent.payload.gameName} ${exposureEvent.id}"
|
||||||
)
|
)
|
||||||
ExposureManager.logCPM(exposureEvent)
|
ExposureManager.logCPM(exposureEvent)
|
||||||
|
} else if (isDSPExposureEvent && inExposure) {
|
||||||
|
Utils.log(
|
||||||
|
RecyclerViewExposureHelper.TAG,
|
||||||
|
"上报 DSP 曝光 ${exposureEvent.payload.gameName} ${exposureEvent.id}"
|
||||||
|
)
|
||||||
|
ExposureManager.logDSP(exposureEvent)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!inExposure
|
if (!inExposure
|
||||||
|
|||||||
@ -111,6 +111,12 @@ object ExposureManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun logDSP(event: ExposureEvent) {
|
||||||
|
AppExecutor.logExecutor.execute {
|
||||||
|
DspReportHelper.report(event.payload.showUrl)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param forcedUpload Ignore all restrictions.
|
* @param forcedUpload Ignore all restrictions.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -73,7 +73,7 @@ object RegionSettingHelper {
|
|||||||
if (list is ArrayList) return list
|
if (list is ArrayList) return list
|
||||||
}
|
}
|
||||||
|
|
||||||
val listCopy: ArrayList<GameEntity> = if (list is ArrayList) list else ArrayList(list)
|
val listCopy: ArrayList<GameEntity> = ArrayList(list)
|
||||||
listCopy.removeAll { mFilterGameIdSet?.contains(it.id) ?: false }
|
listCopy.removeAll { mFilterGameIdSet?.contains(it.id) ?: false }
|
||||||
return listCopy
|
return listCopy
|
||||||
}
|
}
|
||||||
|
|||||||
@ -108,21 +108,32 @@ object GameSubstituteRepositoryHelper {
|
|||||||
var thisPositionNeedToBeReplaced = false
|
var thisPositionNeedToBeReplaced = false
|
||||||
|
|
||||||
// 检查是否已安装该游戏里同包名的 APK
|
// 检查是否已安装该游戏里同包名的 APK
|
||||||
for (apk in game.getApk()) {
|
if (game.getApk().size == 1) {
|
||||||
if (PackageHelper.validLocalPackageNameSet.contains(apk.packageName)) {
|
val apk = game.getApk().firstOrNull()
|
||||||
|
// 若该游戏只有一个 APK,且该 APK 的包名在本地已安装的包名列表中
|
||||||
|
if (PackageHelper.localPackageNameSet.contains(apk?.packageName)) {
|
||||||
// 将该位置的游戏标记为需要替换
|
// 将该位置的游戏标记为需要替换
|
||||||
positionOfGameToBeReplacedList.add(index)
|
positionOfGameToBeReplacedList.add(index)
|
||||||
thisPositionNeedToBeReplaced = true
|
thisPositionNeedToBeReplaced = true
|
||||||
break
|
}
|
||||||
|
} else {
|
||||||
|
// 检查是否已安装该游戏里同包名的 APK
|
||||||
|
for (apk in game.getApk()) {
|
||||||
|
if (PackageHelper.validLocalPackageNameSet.contains(apk.packageName)) {
|
||||||
|
// 将该位置的游戏标记为需要替换
|
||||||
|
positionOfGameToBeReplacedList.add(index)
|
||||||
|
thisPositionNeedToBeReplaced = true
|
||||||
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 检查是否已安装该游戏 id
|
// 检查是否已安装该游戏 id
|
||||||
if (PackagesManager.getInstalledDataByGameId(game.id) != null) {
|
if (!thisPositionNeedToBeReplaced && PackagesManager.getInstalledDataByGameId(game.id) != null) {
|
||||||
// 将该位置的游戏标记为需要替换
|
// 将该位置的游戏标记为需要替换
|
||||||
positionOfGameToBeReplacedList.add(index)
|
positionOfGameToBeReplacedList.add(index)
|
||||||
thisPositionNeedToBeReplaced = true
|
thisPositionNeedToBeReplaced = true
|
||||||
break
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
// 若此游戏所包含的 apk 没有已安装,那么再检查是否已安装有预设相关包名
|
// 若此游戏所包含的 apk 没有已安装,那么再检查是否已安装有预设相关包名
|
||||||
@ -152,11 +163,19 @@ object GameSubstituteRepositoryHelper {
|
|||||||
|
|
||||||
if (mGameCollectionList.isNullOrEmpty()) return
|
if (mGameCollectionList.isNullOrEmpty()) return
|
||||||
|
|
||||||
|
// 临时的游戏 ID 列表(包含 gameList 的游戏),避免重复替换
|
||||||
|
val tempDisplayingGameIdSet = HashSet(displayingGameIdSet)
|
||||||
|
|
||||||
|
gameList.forEach {
|
||||||
|
tempDisplayingGameIdSet.add(it.id)
|
||||||
|
}
|
||||||
|
|
||||||
for (position in positionOfGameToBeReplacedList) {
|
for (position in positionOfGameToBeReplacedList) {
|
||||||
val validGame = getValidGame(relatedCollectionId, displayingGameIdSet)
|
val validGame = getValidGame(relatedCollectionId, tempDisplayingGameIdSet)
|
||||||
validGame?.let {
|
validGame?.let {
|
||||||
gameList[position] = it
|
gameList[position] = it
|
||||||
displayingGameIdSet.add(it.id)
|
displayingGameIdSet.add(it.id)
|
||||||
|
tempDisplayingGameIdSet.add(it.id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -245,6 +245,7 @@ public class LogUtils {
|
|||||||
object.put("jnfj", MetaUtil.getBase64EncodedIMEI());
|
object.put("jnfj", MetaUtil.getBase64EncodedIMEI());
|
||||||
object.put("G_ID", UserManager.getInstance().getDeviceId());
|
object.put("G_ID", UserManager.getInstance().getDeviceId());
|
||||||
object.put("oaid", HaloApp.getInstance().getOAID());
|
object.put("oaid", HaloApp.getInstance().getOAID());
|
||||||
|
object.put("rom", MetaUtil.getMeta().getRom());
|
||||||
} catch (JSONException e) {
|
} catch (JSONException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
@ -264,6 +265,7 @@ public class LogUtils {
|
|||||||
object.put("channel", HaloApp.getInstance().getChannel());
|
object.put("channel", HaloApp.getInstance().getChannel());
|
||||||
object.put("dia", MetaUtil.getBase64EncodedAndroidId());
|
object.put("dia", MetaUtil.getBase64EncodedAndroidId());
|
||||||
object.put("oaid", MetaUtil.INSTANCE.getMeta().getOaid());
|
object.put("oaid", MetaUtil.INSTANCE.getMeta().getOaid());
|
||||||
|
object.put("rom", MetaUtil.getMeta().getRom());
|
||||||
object.put("time", Utils.getTime(context));
|
object.put("time", Utils.getTime(context));
|
||||||
object.put("network", DeviceUtils.getNetwork(context));
|
object.put("network", DeviceUtils.getNetwork(context));
|
||||||
object.put("user_id", UserManager.getInstance().getUserId());
|
object.put("user_id", UserManager.getInstance().getUserId());
|
||||||
@ -289,6 +291,7 @@ public class LogUtils {
|
|||||||
metaObject.put("channel", meta.getChannel());
|
metaObject.put("channel", meta.getChannel());
|
||||||
metaObject.put("gid", meta.getGid());
|
metaObject.put("gid", meta.getGid());
|
||||||
metaObject.put("oaid", meta.getOaid());
|
metaObject.put("oaid", meta.getOaid());
|
||||||
|
metaObject.put("rom", MetaUtil.getMeta().getRom());
|
||||||
metaObject.put("jnfj", MetaUtil.getBase64EncodedIMEI());
|
metaObject.put("jnfj", MetaUtil.getBase64EncodedIMEI());
|
||||||
metaObject.put("mac", meta.getMac());
|
metaObject.put("mac", meta.getMac());
|
||||||
metaObject.put("manufacturer", meta.getManufacturer());
|
metaObject.put("manufacturer", meta.getManufacturer());
|
||||||
@ -495,6 +498,7 @@ public class LogUtils {
|
|||||||
metaObject.put("os", meta.getOs());
|
metaObject.put("os", meta.getOs());
|
||||||
metaObject.put("userId", meta.getUserId());
|
metaObject.put("userId", meta.getUserId());
|
||||||
metaObject.put("oaid", HaloApp.getInstance().getOAID());
|
metaObject.put("oaid", HaloApp.getInstance().getOAID());
|
||||||
|
metaObject.put("rom", MetaUtil.getMeta().getRom());
|
||||||
|
|
||||||
} catch (JSONException e) {
|
} catch (JSONException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
|||||||
@ -33,6 +33,7 @@ import com.lightgame.utils.Utils
|
|||||||
import io.reactivex.schedulers.Schedulers
|
import io.reactivex.schedulers.Schedulers
|
||||||
import kotlinx.coroutines.*
|
import kotlinx.coroutines.*
|
||||||
import java.util.HashMap
|
import java.util.HashMap
|
||||||
|
import java.util.Locale
|
||||||
import java.util.concurrent.Executors
|
import java.util.concurrent.Executors
|
||||||
import kotlin.collections.ArrayList
|
import kotlin.collections.ArrayList
|
||||||
import kotlin.collections.HashSet
|
import kotlin.collections.HashSet
|
||||||
@ -288,12 +289,22 @@ object PackageHelper {
|
|||||||
* 用户是否已经使用另类方式获取已安装应用列表
|
* 用户是否已经使用另类方式获取已安装应用列表
|
||||||
*/
|
*/
|
||||||
private fun isUseAlternativeWayToGetInstalledPackages(): Boolean {
|
private fun isUseAlternativeWayToGetInstalledPackages(): Boolean {
|
||||||
|
if (isBuggyHuaweiDevice()) {
|
||||||
|
useAlternativeWayToGetInstalledPackages = false
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
return useAlternativeWayToGetInstalledPackages
|
return useAlternativeWayToGetInstalledPackages
|
||||||
|| (SPUtils.getBoolean(SP_GET_INSTALLED_PACKAGES_BY_ALTERNATIVE_API)
|
|| (SPUtils.getBoolean(SP_GET_INSTALLED_PACKAGES_BY_ALTERNATIVE_API)
|
||||||
.also { useAlternativeWayToGetInstalledPackages = it })
|
.also { useAlternativeWayToGetInstalledPackages = it })
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun updateUseAlternativeWayToGetInstalledPackages() {
|
private fun updateUseAlternativeWayToGetInstalledPackages() {
|
||||||
|
if (isBuggyHuaweiDevice()) {
|
||||||
|
useAlternativeWayToGetInstalledPackages = false
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// 启用另类获取已安装应用列表的 API
|
// 启用另类获取已安装应用列表的 API
|
||||||
useAlternativeWayToGetInstalledPackages = true
|
useAlternativeWayToGetInstalledPackages = true
|
||||||
SPUtils.setBoolean(SP_GET_INSTALLED_PACKAGES_BY_ALTERNATIVE_API, true)
|
SPUtils.setBoolean(SP_GET_INSTALLED_PACKAGES_BY_ALTERNATIVE_API, true)
|
||||||
@ -478,7 +489,12 @@ object PackageHelper {
|
|||||||
/**
|
/**
|
||||||
* 是否支持动态获取已安装应用列表权限
|
* 是否支持动态获取已安装应用列表权限
|
||||||
*/
|
*/
|
||||||
fun isSupportGetInstalledAppsPermission(context: Context): Boolean {
|
private fun isSupportGetInstalledAppsPermission(context: Context): Boolean {
|
||||||
|
if (isBuggyHuaweiDevice()) {
|
||||||
|
// 华为系 Android 10 设备存在 bug,调用过多可能会触发 DeadSystemException
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
if (isUseAlternativeWayToGetInstalledPackages()) {
|
if (isUseAlternativeWayToGetInstalledPackages()) {
|
||||||
// 已经使用另类获取已安装应用列表形式,强制判定为不支持动态获取已安装应用列表权限
|
// 已经使用另类获取已安装应用列表形式,强制判定为不支持动态获取已安装应用列表权限
|
||||||
return false
|
return false
|
||||||
@ -789,4 +805,13 @@ object PackageHelper {
|
|||||||
return packageList
|
return packageList
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun isBuggyHuaweiDevice(): Boolean {
|
||||||
|
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.Q) {
|
||||||
|
val manufacturer = Build.MANUFACTURER.lowercase(Locale.CHINA) ?: ""
|
||||||
|
return manufacturer == "huawei" || manufacturer == "honor"
|
||||||
|
} else {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -37,7 +37,7 @@ public class PostCommentUtils {
|
|||||||
device.put("model", Build.MODEL);
|
device.put("model", Build.MODEL);
|
||||||
device.put("manufacturer", Build.MANUFACTURER);
|
device.put("manufacturer", Build.MANUFACTURER);
|
||||||
device.put("android_version", android.os.Build.VERSION.RELEASE);
|
device.put("android_version", android.os.Build.VERSION.RELEASE);
|
||||||
device.put("rom", MetaUtil.INSTANCE.getRom().name() + " " + MetaUtil.INSTANCE.getRom().getVersionName());
|
device.put("rom", MetaUtil.INSTANCE.getRom().getRomName() + " " + MetaUtil.INSTANCE.getRom().getRomVersion());
|
||||||
content.put("device", device);
|
content.put("device", device);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
|||||||
@ -9,15 +9,14 @@ import androidx.appcompat.app.AppCompatActivity
|
|||||||
import androidx.lifecycle.DefaultLifecycleObserver
|
import androidx.lifecycle.DefaultLifecycleObserver
|
||||||
import androidx.lifecycle.LifecycleOwner
|
import androidx.lifecycle.LifecycleOwner
|
||||||
import com.gh.common.constant.Config
|
import com.gh.common.constant.Config
|
||||||
import com.gh.gamecenter.common.utils.DialogHelper
|
|
||||||
import com.gh.gamecenter.entity.NewApiSettingsEntity
|
|
||||||
import com.lightgame.utils.Utils
|
|
||||||
|
|
||||||
import com.gh.gamecenter.R
|
import com.gh.gamecenter.R
|
||||||
|
import com.gh.gamecenter.common.utils.DialogHelper
|
||||||
import com.gh.gamecenter.common.utils.SensorsBridge
|
import com.gh.gamecenter.common.utils.SensorsBridge
|
||||||
import com.gh.gamecenter.common.utils.enlargeTouchArea
|
import com.gh.gamecenter.common.utils.enlargeTouchArea
|
||||||
import com.gh.gamecenter.common.utils.setDrawableEnd
|
|
||||||
import com.gh.gamecenter.core.utils.SPUtils
|
import com.gh.gamecenter.core.utils.SPUtils
|
||||||
|
import com.gh.gamecenter.entity.NewApiSettingsEntity
|
||||||
|
import com.halo.assistant.HaloApp
|
||||||
|
import com.lightgame.utils.Utils
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 处理厂商纯净/安全模式的辅助类
|
* 处理厂商纯净/安全模式的辅助类
|
||||||
@ -313,9 +312,11 @@ object PureModeHelper {
|
|||||||
intent.setPackage("com.huawei.security.privacycenter")
|
intent.setPackage("com.huawei.security.privacycenter")
|
||||||
intent.setAction("com.huawei.securitycenter.PURE_MODE_ACTIVITY")
|
intent.setAction("com.huawei.securitycenter.PURE_MODE_ACTIVITY")
|
||||||
intent.putExtra("intent_from_settings", true)
|
intent.putExtra("intent_from_settings", true)
|
||||||
context.startActivity(intent)
|
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
|
||||||
|
HaloApp.getInstance().startActivity(intent)
|
||||||
} catch (_: Exception) {
|
} catch (_: Exception) {
|
||||||
toSystemSettings(context)
|
toSystemSettings(context)
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -9,7 +9,11 @@ import com.gh.gamecenter.common.constant.Constants
|
|||||||
import com.gh.gamecenter.common.exposure.meta.MetaUtil
|
import com.gh.gamecenter.common.exposure.meta.MetaUtil
|
||||||
import com.gh.gamecenter.common.exposure.meta.MetaUtil.getMeta
|
import com.gh.gamecenter.common.exposure.meta.MetaUtil.getMeta
|
||||||
import com.gh.gamecenter.common.loghub.LoghubUtils
|
import com.gh.gamecenter.common.loghub.LoghubUtils
|
||||||
import com.gh.gamecenter.common.utils.*
|
import com.gh.gamecenter.common.utils.DeviceUtils
|
||||||
|
import com.gh.gamecenter.common.utils.asVGame
|
||||||
|
import com.gh.gamecenter.common.utils.getExtension
|
||||||
|
import com.gh.gamecenter.common.utils.getMetaExtra
|
||||||
|
import com.gh.gamecenter.common.utils.isSimulatorGame
|
||||||
import com.gh.ndownload.NDataChanger
|
import com.gh.ndownload.NDataChanger
|
||||||
import com.gh.ndownload.NDownloadBridge
|
import com.gh.ndownload.NDownloadBridge
|
||||||
import com.halo.assistant.HaloApp
|
import com.halo.assistant.HaloApp
|
||||||
@ -427,6 +431,7 @@ object DownloadDataHelper {
|
|||||||
metaObject.put("channel", meta.channel)
|
metaObject.put("channel", meta.channel)
|
||||||
metaObject.put("gid", meta.gid)
|
metaObject.put("gid", meta.gid)
|
||||||
metaObject.put("oaid", meta.oaid)
|
metaObject.put("oaid", meta.oaid)
|
||||||
|
metaObject.put("rom", meta.rom)
|
||||||
metaObject.put("manufacturer", meta.manufacturer)
|
metaObject.put("manufacturer", meta.manufacturer)
|
||||||
metaObject.put("model", meta.model)
|
metaObject.put("model", meta.model)
|
||||||
metaObject.put("network", DeviceUtils.getNetwork(context))
|
metaObject.put("network", DeviceUtils.getNetwork(context))
|
||||||
|
|||||||
@ -3,9 +3,6 @@ package com.gh.download
|
|||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.text.TextUtils
|
import android.text.TextUtils
|
||||||
import com.gh.common.util.*
|
import com.gh.common.util.*
|
||||||
import com.gh.common.util.DataCollectionUtils
|
|
||||||
import com.gh.common.util.PackageInstaller
|
|
||||||
import com.gh.common.util.PackageUtils
|
|
||||||
import com.gh.common.xapk.XapkInstaller
|
import com.gh.common.xapk.XapkInstaller
|
||||||
import com.gh.download.server.BrowserInstallHelper
|
import com.gh.download.server.BrowserInstallHelper
|
||||||
import com.gh.gamecenter.common.constant.Constants
|
import com.gh.gamecenter.common.constant.Constants
|
||||||
@ -33,9 +30,7 @@ import com.lightgame.download.DownloadEntity
|
|||||||
import com.lightgame.utils.Utils
|
import com.lightgame.utils.Utils
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||||
import io.reactivex.schedulers.Schedulers
|
import io.reactivex.schedulers.Schedulers
|
||||||
import okhttp3.MediaType
|
|
||||||
import okhttp3.MediaType.Companion.toMediaTypeOrNull
|
import okhttp3.MediaType.Companion.toMediaTypeOrNull
|
||||||
import okhttp3.RequestBody
|
|
||||||
import okhttp3.RequestBody.Companion.toRequestBody
|
import okhttp3.RequestBody.Companion.toRequestBody
|
||||||
import org.json.JSONException
|
import org.json.JSONException
|
||||||
import org.json.JSONObject
|
import org.json.JSONObject
|
||||||
|
|||||||
@ -7,6 +7,7 @@ import androidx.recyclerview.widget.RecyclerView
|
|||||||
import com.gh.gamecenter.common.base.BaseRecyclerViewHolder
|
import com.gh.gamecenter.common.base.BaseRecyclerViewHolder
|
||||||
import com.gh.common.DefaultUrlHandler
|
import com.gh.common.DefaultUrlHandler
|
||||||
import com.gh.gamecenter.common.utils.dip2px
|
import com.gh.gamecenter.common.utils.dip2px
|
||||||
|
import com.gh.gamecenter.common.utils.loadDataCompat
|
||||||
import com.gh.gamecenter.databinding.DownloadDialogInstructionItemBinding
|
import com.gh.gamecenter.databinding.DownloadDialogInstructionItemBinding
|
||||||
|
|
||||||
class DownloadDialogInstructionItemViewHolder(val binding: DownloadDialogInstructionItemBinding) :
|
class DownloadDialogInstructionItemViewHolder(val binding: DownloadDialogInstructionItemBinding) :
|
||||||
@ -14,11 +15,8 @@ class DownloadDialogInstructionItemViewHolder(val binding: DownloadDialogInstruc
|
|||||||
|
|
||||||
fun bindItem(listData: List<DownloadDialogItemData>, position: Int, entrance: String) {
|
fun bindItem(listData: List<DownloadDialogItemData>, position: Int, entrance: String) {
|
||||||
val instruction = listData[position].instruction
|
val instruction = listData[position].instruction
|
||||||
binding.webView.loadDataWithBaseURL(
|
binding.webView.loadDataCompat(
|
||||||
null,
|
|
||||||
"<body style='margin:0;padding:0;color:#666666;font-size:12px;line-height:18px;'>$instruction</body>",
|
"<body style='margin:0;padding:0;color:#666666;font-size:12px;line-height:18px;'>$instruction</body>",
|
||||||
"text/html",
|
|
||||||
"utf-8", null
|
|
||||||
)
|
)
|
||||||
binding.webView.settings
|
binding.webView.settings
|
||||||
binding.webView.setBackgroundColor(Color.TRANSPARENT)
|
binding.webView.setBackgroundColor(Color.TRANSPARENT)
|
||||||
|
|||||||
@ -9,6 +9,7 @@ import androidx.fragment.app.FragmentActivity
|
|||||||
import com.gh.gamecenter.common.base.fragment.BaseDialogFragment
|
import com.gh.gamecenter.common.base.fragment.BaseDialogFragment
|
||||||
import com.gh.gamecenter.common.utils.dip2px
|
import com.gh.gamecenter.common.utils.dip2px
|
||||||
import com.gh.gamecenter.BuildConfig
|
import com.gh.gamecenter.BuildConfig
|
||||||
|
import com.gh.gamecenter.common.utils.loadDataCompat
|
||||||
import com.gh.gamecenter.databinding.DialogDownloadLinkBinding
|
import com.gh.gamecenter.databinding.DialogDownloadLinkBinding
|
||||||
import com.gh.gamecenter.feature.entity.GameEntity
|
import com.gh.gamecenter.feature.entity.GameEntity
|
||||||
import com.halo.assistant.HaloApp
|
import com.halo.assistant.HaloApp
|
||||||
@ -27,10 +28,7 @@ class DownloadLinkDialog : BaseDialogFragment() {
|
|||||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
|
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
|
||||||
val binding: DialogDownloadLinkBinding = DialogDownloadLinkBinding.inflate(layoutInflater, container, false)
|
val binding: DialogDownloadLinkBinding = DialogDownloadLinkBinding.inflate(layoutInflater, container, false)
|
||||||
binding.title.text = mLinkEntity?.title
|
binding.title.text = mLinkEntity?.title
|
||||||
binding.webView.loadDataWithBaseURL(
|
binding.webView.loadDataCompat(mLinkEntity?.content ?: "")
|
||||||
null,
|
|
||||||
mLinkEntity?.content ?: "", "text/html", "utf-8", null
|
|
||||||
)
|
|
||||||
|
|
||||||
binding.confirm.setOnClickListener {
|
binding.confirm.setOnClickListener {
|
||||||
dismissAllowingStateLoss()
|
dismissAllowingStateLoss()
|
||||||
|
|||||||
@ -886,7 +886,7 @@ class GameDetailViewModel(
|
|||||||
params["source"] = HaloApp.getInstance().application.getString(R.string.app_name)
|
params["source"] = HaloApp.getInstance().application.getString(R.string.app_name)
|
||||||
params["jnfj"] = MetaUtil.getBase64EncodedIMEI()
|
params["jnfj"] = MetaUtil.getBase64EncodedIMEI()
|
||||||
params["manufacturer"] = Build.MANUFACTURER
|
params["manufacturer"] = Build.MANUFACTURER
|
||||||
params["rom"] = MetaUtil.getRom().name + " " + MetaUtil.getRom().versionName
|
params["rom"] = MetaUtil.getRom().romName + " " + MetaUtil.getRom().romVersion
|
||||||
|
|
||||||
params["suggestion_type"] = "游戏求更新"
|
params["suggestion_type"] = "游戏求更新"
|
||||||
params["game_id"] = game?.id ?: ""
|
params["game_id"] = game?.id ?: ""
|
||||||
|
|||||||
@ -14,6 +14,7 @@ import android.widget.ImageView
|
|||||||
import android.widget.LinearLayout
|
import android.widget.LinearLayout
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
|
import androidx.appcompat.view.menu.ActionMenuItemView
|
||||||
import androidx.constraintlayout.widget.ConstraintLayout
|
import androidx.constraintlayout.widget.ConstraintLayout
|
||||||
import androidx.core.view.doOnNextLayout
|
import androidx.core.view.doOnNextLayout
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
@ -96,6 +97,7 @@ import io.reactivex.disposables.Disposable
|
|||||||
import org.greenrobot.eventbus.Subscribe
|
import org.greenrobot.eventbus.Subscribe
|
||||||
import org.greenrobot.eventbus.ThreadMode
|
import org.greenrobot.eventbus.ThreadMode
|
||||||
import retrofit2.HttpException
|
import retrofit2.HttpException
|
||||||
|
import splitties.views.horizontalPadding
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class GameDetailWrapperFragment : BaseLazyFragment(), IScrollable {
|
class GameDetailWrapperFragment : BaseLazyFragment(), IScrollable {
|
||||||
@ -286,7 +288,7 @@ class GameDetailWrapperFragment : BaseLazyFragment(), IScrollable {
|
|||||||
initSkeleton()
|
initSkeleton()
|
||||||
|
|
||||||
binding.reuseNoneData.reuseNoneDataTv.text = "页面不见了"
|
binding.reuseNoneData.reuseNoneDataTv.text = "页面不见了"
|
||||||
bodyBinding.tabIndicator.setIndicatorWidth(12)
|
bodyBinding.tabIndicator.setIndicatorWidth(16)
|
||||||
bodyBinding.viewPager.offscreenPageLimit = 4
|
bodyBinding.viewPager.offscreenPageLimit = 4
|
||||||
binding.expandSpecialDownloadIv.enlargeTouchArea()
|
binding.expandSpecialDownloadIv.enlargeTouchArea()
|
||||||
|
|
||||||
@ -357,8 +359,14 @@ class GameDetailWrapperFragment : BaseLazyFragment(), IScrollable {
|
|||||||
}
|
}
|
||||||
backBtn.setOnClickListener { requireActivity().finish() }
|
backBtn.setOnClickListener { requireActivity().finish() }
|
||||||
moreMenuItem = actionMenuView.menu.findItem(R.id.menu_more)
|
moreMenuItem = actionMenuView.menu.findItem(R.id.menu_more)
|
||||||
downloadMenuItem = actionMenuView.menu.findItem(R.id.menu_download)
|
downloadMenuItem = actionMenuView.menu.findItem(R.id.menu_download)?.apply {
|
||||||
|
actionView?.updateLayoutParams<LayoutParams> { width = 40F.dip2px() }
|
||||||
|
}
|
||||||
downloadMenuItem?.isVisible = Config.isShow()
|
downloadMenuItem?.isVisible = Config.isShow()
|
||||||
|
actionMenuView.findViewById<ActionMenuItemView>(R.id.menu_more)?.run {
|
||||||
|
updateLayoutParams<LayoutParams> { width = 40F.dip2px() }
|
||||||
|
horizontalPadding = 8F.dip2px()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
downloadMenuIcon = downloadMenuItem?.actionView?.findViewById(R.id.menu_download_iv)
|
downloadMenuIcon = downloadMenuItem?.actionView?.findViewById(R.id.menu_download_iv)
|
||||||
@ -807,7 +815,10 @@ class GameDetailWrapperFragment : BaseLazyFragment(), IScrollable {
|
|||||||
downloadStatus = gameEntity?.downloadStatusChinese ?: "",
|
downloadStatus = gameEntity?.downloadStatusChinese ?: "",
|
||||||
gameType = gameEntity?.categoryChinese ?: "",
|
gameType = gameEntity?.categoryChinese ?: "",
|
||||||
position = position,
|
position = position,
|
||||||
tabContent = tabEntity.name
|
tabContent = tabEntity.name,
|
||||||
|
linkType = tabEntity.link?.type ?: "",
|
||||||
|
linkId = tabEntity.link?.link ?: "",
|
||||||
|
linkText = tabEntity.link?.text ?: ""
|
||||||
)
|
)
|
||||||
|
|
||||||
val entrance = if (mEntrance.contains("论坛详情")) "论坛" else "游戏"
|
val entrance = if (mEntrance.contains("论坛详情")) "论坛" else "游戏"
|
||||||
@ -910,7 +921,7 @@ class GameDetailWrapperFragment : BaseLazyFragment(), IScrollable {
|
|||||||
tab.customView = tabItemBinding.root
|
tab.customView = tabItemBinding.root
|
||||||
updateTabStyle(tab, i == bodyBinding.viewPager.currentItem)
|
updateTabStyle(tab, i == bodyBinding.viewPager.currentItem)
|
||||||
tab.view.clipChildren = false
|
tab.view.clipChildren = false
|
||||||
tab.view.setPadding(0, 0, 0, 0)
|
tab.view.setPadding(0, 0, if (i == tabEntityList.size - 1) 8F.dip2px() else 0, 0)
|
||||||
tab.view.setOnTouchListener { _, event ->
|
tab.view.setOnTouchListener { _, event ->
|
||||||
if (event.action == MotionEvent.ACTION_DOWN) {
|
if (event.action == MotionEvent.ACTION_DOWN) {
|
||||||
handleTabTouchEvent(tabEntity?.name ?: "")
|
handleTabTouchEvent(tabEntity?.name ?: "")
|
||||||
@ -937,7 +948,7 @@ class GameDetailWrapperFragment : BaseLazyFragment(), IScrollable {
|
|||||||
tab.customView?.findViewById<TextView>(R.id.tab_title)
|
tab.customView?.findViewById<TextView>(R.id.tab_title)
|
||||||
?.setTypeface(if (isChecked) Typeface.DEFAULT_BOLD else Typeface.DEFAULT)
|
?.setTypeface(if (isChecked) Typeface.DEFAULT_BOLD else Typeface.DEFAULT)
|
||||||
tab.customView?.findViewById<TextView>(R.id.tab_title)?.setTextColor(
|
tab.customView?.findViewById<TextView>(R.id.tab_title)?.setTextColor(
|
||||||
if (isChecked) com.gh.gamecenter.common.R.color.text_primary.toColor(requireContext()) else com.gh.gamecenter.common.R.color.text_tertiary.toColor(
|
if (isChecked) com.gh.gamecenter.common.R.color.text_primary.toColor(requireContext()) else com.gh.gamecenter.common.R.color.text_secondary.toColor(
|
||||||
requireContext()
|
requireContext()
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
@ -7,7 +7,7 @@ import android.view.View
|
|||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.view.ViewGroup.MarginLayoutParams
|
import android.view.ViewGroup.MarginLayoutParams
|
||||||
import android.widget.LinearLayout
|
import android.widget.LinearLayout
|
||||||
import androidx.core.view.children
|
import androidx.core.view.forEach
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import androidx.core.view.updateLayoutParams
|
import androidx.core.view.updateLayoutParams
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
@ -117,7 +117,7 @@ class GameLibaoAdapter(
|
|||||||
|
|
||||||
binding.horizontalScrollView.goneIf(libaoEntity.materials.isEmpty()) {
|
binding.horizontalScrollView.goneIf(libaoEntity.materials.isEmpty()) {
|
||||||
if (binding.imagesContainer.tag == libaoEntity.id) {
|
if (binding.imagesContainer.tag == libaoEntity.id) {
|
||||||
binding.imagesContainer.children.forEach { view ->
|
binding.imagesContainer.forEach { view ->
|
||||||
if (view is SimpleDraweeView) {
|
if (view is SimpleDraweeView) {
|
||||||
view.hierarchy.roundingParams = RoundingParams().apply {
|
view.hierarchy.roundingParams = RoundingParams().apply {
|
||||||
setCornersRadius(4F.dip2px().toFloat())
|
setCornersRadius(4F.dip2px().toFloat())
|
||||||
|
|||||||
@ -541,7 +541,7 @@ class RatingEditActivity : ToolBarActivity(), KeyboardHeightObserver {
|
|||||||
jsonObject.put("game_version", gameVersion)
|
jsonObject.put("game_version", gameVersion)
|
||||||
jsonObject.put("source", if (mFromAmway) "anliwall" else "game_detail")
|
jsonObject.put("source", if (mFromAmway) "anliwall" else "game_detail")
|
||||||
jsonObject.put("plugin_version", PackageUtils.getMetaData(this, mInstallPackageName, "gh_version"))
|
jsonObject.put("plugin_version", PackageUtils.getMetaData(this, mInstallPackageName, "gh_version"))
|
||||||
jsonObject.put("rom", MetaUtil.getRom().name + " " + MetaUtil.getRom().versionName)
|
jsonObject.put("rom", MetaUtil.getRom().romName + " " + MetaUtil.getRom().romVersion)
|
||||||
jsonObject.put("again", again)
|
jsonObject.put("again", again)
|
||||||
|
|
||||||
val body = jsonObject.toString().toRequestBody("application/json".toMediaTypeOrNull())
|
val body = jsonObject.toString().toRequestBody("application/json".toMediaTypeOrNull())
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import androidx.recyclerview.widget.DiffUtil.ItemCallback
|
|||||||
import androidx.recyclerview.widget.ListAdapter
|
import androidx.recyclerview.widget.ListAdapter
|
||||||
import androidx.recyclerview.widget.RecyclerView.ViewHolder
|
import androidx.recyclerview.widget.RecyclerView.ViewHolder
|
||||||
import com.gh.gamecenter.R
|
import com.gh.gamecenter.R
|
||||||
|
import com.gh.gamecenter.common.utils.debounceActionWithInterval
|
||||||
import com.gh.gamecenter.common.utils.toBinding
|
import com.gh.gamecenter.common.utils.toBinding
|
||||||
import com.gh.gamecenter.common.view.Chips
|
import com.gh.gamecenter.common.view.Chips
|
||||||
import com.gh.gamecenter.databinding.ItemColumnCollectionCustomTabBinding
|
import com.gh.gamecenter.databinding.ItemColumnCollectionCustomTabBinding
|
||||||
@ -30,8 +31,10 @@ class CustomTabFollowAdapter(private val viewModel: ColumnCollectionTabViewModel
|
|||||||
endIcon.setImageResource(R.drawable.ic_basic_x_8_secondary)
|
endIcon.setImageResource(R.drawable.ic_basic_x_8_secondary)
|
||||||
endIcon.imageTintList = null
|
endIcon.imageTintList = null
|
||||||
setOnClickListener {
|
setOnClickListener {
|
||||||
if (!isForbidden) {
|
debounceActionWithInterval(500) {
|
||||||
viewModel?.addMore(subjectData)
|
if (!isForbidden) {
|
||||||
|
viewModel?.addMore(subjectData)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import androidx.recyclerview.widget.DiffUtil.ItemCallback
|
|||||||
import androidx.recyclerview.widget.ListAdapter
|
import androidx.recyclerview.widget.ListAdapter
|
||||||
import androidx.recyclerview.widget.RecyclerView.ViewHolder
|
import androidx.recyclerview.widget.RecyclerView.ViewHolder
|
||||||
import com.gh.gamecenter.R
|
import com.gh.gamecenter.R
|
||||||
|
import com.gh.gamecenter.common.utils.debounceActionWithInterval
|
||||||
import com.gh.gamecenter.common.utils.toBinding
|
import com.gh.gamecenter.common.utils.toBinding
|
||||||
import com.gh.gamecenter.common.view.Chips
|
import com.gh.gamecenter.common.view.Chips
|
||||||
import com.gh.gamecenter.databinding.ItemColumnCollectionCustomTabBinding
|
import com.gh.gamecenter.databinding.ItemColumnCollectionCustomTabBinding
|
||||||
@ -26,7 +27,9 @@ class CustomTabMoreAdapter(private val viewModel: ColumnCollectionTabViewModel?)
|
|||||||
startIcon.setImageResource(R.drawable.ic_auxiliary_plus_secondary_8)
|
startIcon.setImageResource(R.drawable.ic_auxiliary_plus_secondary_8)
|
||||||
startIcon.imageTintList = null
|
startIcon.imageTintList = null
|
||||||
setOnClickListener {
|
setOnClickListener {
|
||||||
viewModel?.addFollow(subjectData)
|
debounceActionWithInterval(500) {
|
||||||
|
viewModel?.addFollow(subjectData)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -812,6 +812,8 @@ class SubjectTabFragment : ToolbarFragment() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onBackPressed(): Boolean {
|
override fun onBackPressed(): Boolean {
|
||||||
|
if (!isAdded) return super.onBackPressed()
|
||||||
|
|
||||||
if (binding.settingGuideContainer.isVisible) {
|
if (binding.settingGuideContainer.isVisible) {
|
||||||
binding.settingGuideContainer.performClick()
|
binding.settingGuideContainer.performClick()
|
||||||
return true
|
return true
|
||||||
|
|||||||
@ -118,6 +118,8 @@ class TabWrapperFragment: BaseTabWrapperFragment(), ISmartRefresh, ISmartRefresh
|
|||||||
|
|
||||||
if (shouldShow && guide != null && guidePosition != -1) {
|
if (shouldShow && guide != null && guidePosition != -1) {
|
||||||
tabLayout?.post {
|
tabLayout?.post {
|
||||||
|
if (activity == null) return@post
|
||||||
|
|
||||||
val tabView = tabLayout?.getTabAt(guidePosition)?.view
|
val tabView = tabLayout?.getTabAt(guidePosition)?.view
|
||||||
if (tabView != null) {
|
if (tabView != null) {
|
||||||
if (!isDefaultCustomPageFragment() && priorityChain.isHandlerQueueEmpty()) {
|
if (!isDefaultCustomPageFragment() && priorityChain.isHandlerQueueEmpty()) {
|
||||||
@ -133,7 +135,7 @@ class TabWrapperFragment: BaseTabWrapperFragment(), ISmartRefresh, ISmartRefresh
|
|||||||
} else {
|
} else {
|
||||||
multiTabGuideHandler.doPreProcess(
|
multiTabGuideHandler.doPreProcess(
|
||||||
true,
|
true,
|
||||||
requireActivity(),
|
activity,
|
||||||
mBaseHandler,
|
mBaseHandler,
|
||||||
guide,
|
guide,
|
||||||
tabLayout,
|
tabLayout,
|
||||||
|
|||||||
@ -243,7 +243,7 @@ class VFeedbackDialogFragment : BaseDialogFragment() {
|
|||||||
"source" to HaloApp.getInstance().application.getString(R.string.app_name)
|
"source" to HaloApp.getInstance().application.getString(R.string.app_name)
|
||||||
"jnfj" to MetaUtil.getBase64EncodedIMEI()
|
"jnfj" to MetaUtil.getBase64EncodedIMEI()
|
||||||
"manufacturer" to Build.MANUFACTURER
|
"manufacturer" to Build.MANUFACTURER
|
||||||
"rom" to MetaUtil.getRom().name + " " + MetaUtil.getRom().versionName
|
"rom" to MetaUtil.getRom().romName + " " + MetaUtil.getRom().romVersion
|
||||||
|
|
||||||
"suggestion_type" to "游戏问题"
|
"suggestion_type" to "游戏问题"
|
||||||
"game_id" to game.id
|
"game_id" to game.id
|
||||||
|
|||||||
@ -152,7 +152,7 @@ class AccelerationUseCase {
|
|||||||
"from" to "",
|
"from" to "",
|
||||||
"game_id" to game.id,
|
"game_id" to game.id,
|
||||||
"manufacturer" to Build.MANUFACTURER,
|
"manufacturer" to Build.MANUFACTURER,
|
||||||
"rom" to MetaUtil.getRom().name + " " + MetaUtil.getRom().versionName,
|
"rom" to MetaUtil.getRom().romName + " " + MetaUtil.getRom().romVersion,
|
||||||
"suggestion_type" to "加速器失败",
|
"suggestion_type" to "加速器失败",
|
||||||
"message" to "加速失败, 游戏ID: ${game.id}, 游戏名: ${game.name ?: ""}",
|
"message" to "加速失败, 游戏ID: ${game.id}, 游戏名: ${game.name ?: ""}",
|
||||||
"log" to it
|
"log" to it
|
||||||
|
|||||||
@ -693,7 +693,7 @@ class WebFragment : LazyFragment(), IScrollable {
|
|||||||
webview.loadUrl(mWebUrl)
|
webview.loadUrl(mWebUrl)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
webview.loadDataWithBaseURL(null, mWebUrl, "text/html", "utf-8", null)
|
webview.loadDataCompat(mWebUrl)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (mIsHorizontalDispatcherEnabled) {
|
if (mIsHorizontalDispatcherEnabled) {
|
||||||
|
|||||||
@ -14,7 +14,7 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="48dp"
|
android:layout_height="48dp"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:textColor="@color/text_tertiary"
|
android:textColor="@color/text_secondary"
|
||||||
android:textSize="@dimen/secondary_title_text_size"
|
android:textSize="@dimen/secondary_title_text_size"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
|||||||
@ -33,14 +33,15 @@
|
|||||||
|
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:id="@+id/backContainer"
|
android:id="@+id/backContainer"
|
||||||
android:layout_width="48dp"
|
android:layout_width="40dp"
|
||||||
android:layout_height="48dp">
|
android:layout_height="48dp">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/backBtn"
|
android:id="@+id/backBtn"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center_vertical"
|
||||||
|
android:layout_marginStart="12dp"
|
||||||
android:background="?attr/selectableItemBackgroundBorderless"
|
android:background="?attr/selectableItemBackgroundBorderless"
|
||||||
android:clickable="true"
|
android:clickable="true"
|
||||||
android:focusable="true"
|
android:focusable="true"
|
||||||
@ -73,8 +74,8 @@
|
|||||||
<com.gh.gamecenter.common.view.TabIndicatorView
|
<com.gh.gamecenter.common.view.TabIndicatorView
|
||||||
android:id="@+id/tabIndicator"
|
android:id="@+id/tabIndicator"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="@dimen/default_tab_indicator_height"
|
android:layout_height="4dp"
|
||||||
android:layout_marginBottom="10dp"
|
android:layout_marginBottom="8dp"
|
||||||
app:indicatorColor="@color/primary_theme"
|
app:indicatorColor="@color/primary_theme"
|
||||||
app:disableIndicatorScaling="true"
|
app:disableIndicatorScaling="true"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
@ -97,6 +98,7 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_gravity="end"
|
android:layout_gravity="end"
|
||||||
|
android:layout_marginHorizontal="8dp"
|
||||||
android:minWidth="44dp" />
|
android:minWidth="44dp" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|||||||
@ -14,10 +14,4 @@
|
|||||||
android:title="@string/menu_more"
|
android:title="@string/menu_more"
|
||||||
app:showAsAction="always" />
|
app:showAsAction="always" />
|
||||||
|
|
||||||
<item
|
|
||||||
android:orderInCategory="-1"
|
|
||||||
android:title=""
|
|
||||||
app:actionLayout="@layout/layout_menu_inset"
|
|
||||||
app:showAsAction="always" />
|
|
||||||
|
|
||||||
</menu>
|
</menu>
|
||||||
@ -15,9 +15,14 @@ import com.tencent.vasdolly.helper.ChannelReaderUtil
|
|||||||
|
|
||||||
class FlavorProviderImp : IFlavorProvider {
|
class FlavorProviderImp : IFlavorProvider {
|
||||||
|
|
||||||
|
private var isInit = false
|
||||||
|
|
||||||
|
private val pendingEvent = arrayListOf<String>()
|
||||||
|
|
||||||
override fun init(application: Application, activity: Activity, activateRatio: Int) {
|
override fun init(application: Application, activity: Activity, activateRatio: Int) {
|
||||||
SMHelper.init(application, getChannelStr(application))
|
SMHelper.init(application, getChannelStr(application))
|
||||||
|
|
||||||
|
isInit = true
|
||||||
if (HaloApp.getInstance().isBrandNewInstall) {
|
if (HaloApp.getInstance().isBrandNewInstall) {
|
||||||
logEvent("EVENT_ACTIVE")
|
logEvent("EVENT_ACTIVE")
|
||||||
SPUtils.setLong("TIME_OF_BRAND_NEW_INSTALL", System.currentTimeMillis() / 1000)
|
SPUtils.setLong("TIME_OF_BRAND_NEW_INSTALL", System.currentTimeMillis() / 1000)
|
||||||
@ -31,6 +36,8 @@ class FlavorProviderImp : IFlavorProvider {
|
|||||||
SPUtils.setBoolean("SHOULD_SEND_RETENTION_EVENT", false)
|
SPUtils.setBoolean("SHOULD_SEND_RETENTION_EVENT", false)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
pendingEvent.forEach(SMHelper::onEvent)
|
||||||
|
pendingEvent.clear()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getChannelStr(application: Application): String {
|
override fun getChannelStr(application: Application): String {
|
||||||
@ -43,7 +50,11 @@ class FlavorProviderImp : IFlavorProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun logEvent(content: String) {
|
override fun logEvent(content: String) {
|
||||||
SMHelper.onEvent(content)
|
if (isInit) {
|
||||||
|
SMHelper.onEvent(content)
|
||||||
|
} else {
|
||||||
|
pendingEvent.add(content)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun logCoreEvent() {
|
override fun logCoreEvent() {
|
||||||
|
|||||||
@ -7,8 +7,8 @@ ext {
|
|||||||
targetSdkVersion = 30 // 升级targetSdkVersion到 34 时需要根据官方文档补全前台服务的权限类型。比如 NDownloadService,KeepAliveService
|
targetSdkVersion = 30 // 升级targetSdkVersion到 34 时需要根据官方文档补全前台服务的权限类型。比如 NDownloadService,KeepAliveService
|
||||||
|
|
||||||
// application info (每个大版本之间的 versionCode 增加 20)
|
// application info (每个大版本之间的 versionCode 增加 20)
|
||||||
versionCode = 1190
|
versionCode = 1195
|
||||||
versionName = "5.42.0"
|
versionName = "5.42.5"
|
||||||
applicationId = "com.gh.gamecenter"
|
applicationId = "com.gh.gamecenter"
|
||||||
applicationIdGat = "com.gh.gamecenter.intl"
|
applicationIdGat = "com.gh.gamecenter.intl"
|
||||||
|
|
||||||
@ -99,7 +99,7 @@ ext {
|
|||||||
verifier = "1.0.6"
|
verifier = "1.0.6"
|
||||||
skeleton = "1.1.5"
|
skeleton = "1.1.5"
|
||||||
mta = "6.8.0"
|
mta = "6.8.0"
|
||||||
romChecker = "1.0.3"
|
romChecker = "2.0.0"
|
||||||
oss = "2.8.8"
|
oss = "2.8.8"
|
||||||
desugarJdkLibs = "1.1.5"
|
desugarJdkLibs = "1.1.5"
|
||||||
toolargetool = "0.3.0"
|
toolargetool = "0.3.0"
|
||||||
|
|||||||
@ -39,7 +39,7 @@ class QaFeedbackViewModel(application: Application, private val contentId: Strin
|
|||||||
map["source"] = HaloApp.getInstance().getString(R.string.app_name)
|
map["source"] = HaloApp.getInstance().getString(R.string.app_name)
|
||||||
map["jnfj"] = getBase64EncodedIMEI()
|
map["jnfj"] = getBase64EncodedIMEI()
|
||||||
map["manufacturer"] = Build.MANUFACTURER
|
map["manufacturer"] = Build.MANUFACTURER
|
||||||
map["rom"] = MetaUtil.getRom().name + " " + MetaUtil.getRom().versionName
|
map["rom"] = MetaUtil.getRom().romName + " " + MetaUtil.getRom().romVersion
|
||||||
|
|
||||||
val requestBody = map.toRequestBody()
|
val requestBody = map.toRequestBody()
|
||||||
RetrofitManager.getInstance().api
|
RetrofitManager.getInstance().api
|
||||||
|
|||||||
@ -209,7 +209,7 @@ class SuggestViewModel(
|
|||||||
"source" to getApplication<Application>().getString(R.string.app_name)
|
"source" to getApplication<Application>().getString(R.string.app_name)
|
||||||
"jnfj" to getBase64EncodedIMEI()
|
"jnfj" to getBase64EncodedIMEI()
|
||||||
"manufacturer" to Build.MANUFACTURER
|
"manufacturer" to Build.MANUFACTURER
|
||||||
"rom" to MetaUtil.getRom().name + " " + MetaUtil.getRom().versionName
|
"rom" to MetaUtil.getRom().romName + " " + MetaUtil.getRom().romVersion
|
||||||
"suggestion_type" to suggestType
|
"suggestion_type" to suggestType
|
||||||
"from" to contact
|
"from" to contact
|
||||||
"contact_func" to contactType.value
|
"contact_func" to contactType.value
|
||||||
@ -318,7 +318,7 @@ class SuggestViewModel(
|
|||||||
"source" to getApplication<Application>().getString(R.string.app_name)
|
"source" to getApplication<Application>().getString(R.string.app_name)
|
||||||
"jnfj" to getBase64EncodedIMEI()
|
"jnfj" to getBase64EncodedIMEI()
|
||||||
"manufacturer" to Build.MANUFACTURER
|
"manufacturer" to Build.MANUFACTURER
|
||||||
"rom" to MetaUtil.getRom().name + " " + MetaUtil.getRom().versionName
|
"rom" to MetaUtil.getRom().romName + " " + MetaUtil.getRom().romVersion
|
||||||
"suggestion_type" to mSuggestType
|
"suggestion_type" to mSuggestType
|
||||||
"app_name" to appName
|
"app_name" to appName
|
||||||
"owner_type" to copyrightIdentity
|
"owner_type" to copyrightIdentity
|
||||||
|
|||||||
@ -63,7 +63,7 @@ dependencies {
|
|||||||
kapt "com.google.auto.service:auto-service:${autoServiceVersion}"
|
kapt "com.google.auto.service:auto-service:${autoServiceVersion}"
|
||||||
api "com.louiscad.splitties:splitties-views-dsl:${splitties}"
|
api "com.louiscad.splitties:splitties-views-dsl:${splitties}"
|
||||||
api "com.louiscad.splitties:splitties-views-dsl-constraintlayout:${splitties}"
|
api "com.louiscad.splitties:splitties-views-dsl-constraintlayout:${splitties}"
|
||||||
api "com.github.nichbar:AndroidRomChecker:${romChecker}"
|
api "com.lg:romchecker:${romChecker}"
|
||||||
api "androidx.cardview:cardview:${cardView}"
|
api "androidx.cardview:cardview:${cardView}"
|
||||||
api "com.google.android.material:material:${material}"
|
api "com.google.android.material:material:${material}"
|
||||||
api "com.scwang.smartrefresh:SmartRefreshLayout:${smartRefreshLayout}"
|
api "com.scwang.smartrefresh:SmartRefreshLayout:${smartRefreshLayout}"
|
||||||
|
|||||||
@ -33,7 +33,6 @@ object MetaUtil {
|
|||||||
private var rom: Rom? = null
|
private var rom: Rom? = null
|
||||||
|
|
||||||
fun refreshMeta() {
|
fun refreshMeta() {
|
||||||
|
|
||||||
val appProvider = TheRouter.get(IAppProvider::class.java)
|
val appProvider = TheRouter.get(IAppProvider::class.java)
|
||||||
val buildConfigProvider = TheRouter.get(IBuildConfigProvider::class.java)
|
val buildConfigProvider = TheRouter.get(IBuildConfigProvider::class.java)
|
||||||
val userManagerProvider = TheRouter.get(IUserManagerProvider::class.java)
|
val userManagerProvider = TheRouter.get(IUserManagerProvider::class.java)
|
||||||
@ -55,7 +54,7 @@ object MetaUtil {
|
|||||||
exposureVersion = buildConfigProvider?.getExposureVersion(),
|
exposureVersion = buildConfigProvider?.getExposureVersion(),
|
||||||
session_id = Tracker.sessionId,
|
session_id = Tracker.sessionId,
|
||||||
launch_id = Tracker.launchId,
|
launch_id = Tracker.launchId,
|
||||||
rom = ""
|
rom = getRom().romName + " " + getRom().romVersion
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -68,7 +67,13 @@ object MetaUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun getRom(): Rom {
|
fun getRom(): Rom {
|
||||||
if (rom == null) {
|
val appProvider = TheRouter.get(IAppProvider::class.java)
|
||||||
|
if (appProvider?.isUserAcceptPrivacyPolicy(HaloApp.getInstance()) == false) {
|
||||||
|
// 如果用户没有同意隐私政策,则返回一个默认的 Rom 对象
|
||||||
|
return Rom.create("unknown", "unknown", "unknown")
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rom == null || rom?.romName == "unknown") {
|
||||||
rom = RomIdentifier.getRom()
|
rom = RomIdentifier.getRom()
|
||||||
}
|
}
|
||||||
return rom!!
|
return rom!!
|
||||||
|
|||||||
@ -167,20 +167,22 @@ object TrackerLogger {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun getMeta(): JSONObject {
|
private fun getMeta(): JSONObject {
|
||||||
val (_, _, model, manufacturer, _, _, android_version, network, _, gid, oaid, channel, appVersion, userId) = MetaUtil.getMeta()
|
val meta = MetaUtil.getMeta()
|
||||||
|
|
||||||
val metaObject = JSONObject()
|
val metaObject = JSONObject()
|
||||||
try {
|
try {
|
||||||
metaObject.put("dia", getBase64EncodedAndroidId())
|
metaObject.put("dia", getBase64EncodedAndroidId())
|
||||||
metaObject.put("android_version", android_version)
|
metaObject.put("android_version", meta.android_version)
|
||||||
metaObject.put("app_version", appVersion)
|
metaObject.put("app_version", meta.appVersion)
|
||||||
metaObject.put("channel", channel)
|
metaObject.put("channel", meta.channel)
|
||||||
metaObject.put("gid", gid)
|
metaObject.put("gid", meta.gid)
|
||||||
metaObject.put("oaid", oaid)
|
metaObject.put("oaid", meta.oaid)
|
||||||
|
metaObject.put("rom", meta.rom)
|
||||||
metaObject.put("jnfj", getBase64EncodedIMEI())
|
metaObject.put("jnfj", getBase64EncodedIMEI())
|
||||||
metaObject.put("manufacturer", manufacturer)
|
metaObject.put("manufacturer", meta.manufacturer)
|
||||||
metaObject.put("model", model)
|
metaObject.put("model", meta.model)
|
||||||
metaObject.put("network", network)
|
metaObject.put("network", meta.network)
|
||||||
metaObject.put("user_id", userId)
|
metaObject.put("user_id", meta.userId)
|
||||||
} catch (e: JSONException) {
|
} catch (e: JSONException) {
|
||||||
e.printStackTrace()
|
e.printStackTrace()
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1494,6 +1494,26 @@ fun WebView.enableForceDark(isDarkModeOn: Boolean) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun WebView.loadDataCompat(data: String, mimeType: String = "text/html", encoding: String = "utf-8") {
|
||||||
|
try {
|
||||||
|
this.loadDataWithBaseURL(
|
||||||
|
null,
|
||||||
|
data,
|
||||||
|
mimeType,
|
||||||
|
encoding,
|
||||||
|
null
|
||||||
|
)
|
||||||
|
} catch (e: NullPointerException) {
|
||||||
|
this.loadDataWithBaseURL(
|
||||||
|
"localhost",
|
||||||
|
data,
|
||||||
|
"text/html",
|
||||||
|
"utf-8",
|
||||||
|
null
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* WebView是否启用强制深色模式
|
* WebView是否启用强制深色模式
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -52,7 +52,7 @@ public class LogUtils {
|
|||||||
metaObject.put("os", meta.getOs());
|
metaObject.put("os", meta.getOs());
|
||||||
metaObject.put("userId", meta.getUserId());
|
metaObject.put("userId", meta.getUserId());
|
||||||
metaObject.put("oaid", appProvider.getOaid());
|
metaObject.put("oaid", appProvider.getOaid());
|
||||||
|
metaObject.put("rom", meta.getRom());
|
||||||
} catch (JSONException e) {
|
} catch (JSONException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
@ -71,6 +71,7 @@ public class LogUtils {
|
|||||||
metaObject.put("channel", meta.getChannel());
|
metaObject.put("channel", meta.getChannel());
|
||||||
metaObject.put("gid", meta.getGid());
|
metaObject.put("gid", meta.getGid());
|
||||||
metaObject.put("oaid", meta.getOaid());
|
metaObject.put("oaid", meta.getOaid());
|
||||||
|
metaObject.put("rom", meta.getRom());
|
||||||
metaObject.put("jnfj", MetaUtil.getBase64EncodedIMEI());
|
metaObject.put("jnfj", MetaUtil.getBase64EncodedIMEI());
|
||||||
metaObject.put("mac", meta.getMac());
|
metaObject.put("mac", meta.getMac());
|
||||||
metaObject.put("manufacturer", meta.getManufacturer());
|
metaObject.put("manufacturer", meta.getManufacturer());
|
||||||
@ -79,7 +80,7 @@ public class LogUtils {
|
|||||||
metaObject.put("os", meta.getOs());
|
metaObject.put("os", meta.getOs());
|
||||||
metaObject.put("user_id", meta.getUserId());
|
metaObject.put("user_id", meta.getUserId());
|
||||||
metaObject.put("oaid", appProvider.getOaid());
|
metaObject.put("oaid", appProvider.getOaid());
|
||||||
|
metaObject.put("rom", meta.getRom());
|
||||||
} catch (JSONException e) {
|
} catch (JSONException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
@ -132,7 +133,7 @@ public class LogUtils {
|
|||||||
metaObject.put("os", meta.getOs());
|
metaObject.put("os", meta.getOs());
|
||||||
metaObject.put("userId", meta.getUserId());
|
metaObject.put("userId", meta.getUserId());
|
||||||
metaObject.put("oaid", meta.getOaid());
|
metaObject.put("oaid", meta.getOaid());
|
||||||
|
metaObject.put("rom", meta.getRom());
|
||||||
object.put("event", "SHARE");
|
object.put("event", "SHARE");
|
||||||
object.put("meta", metaObject);
|
object.put("meta", metaObject);
|
||||||
object.put("timestamp", System.currentTimeMillis() / 1000);
|
object.put("timestamp", System.currentTimeMillis() / 1000);
|
||||||
|
|||||||
@ -517,7 +517,10 @@ object SensorsBridge {
|
|||||||
downloadStatus: String,
|
downloadStatus: String,
|
||||||
gameType: String,
|
gameType: String,
|
||||||
position: Int,
|
position: Int,
|
||||||
tabContent: String
|
tabContent: String,
|
||||||
|
linkType: String,
|
||||||
|
linkId: String,
|
||||||
|
linkText: String,
|
||||||
) {
|
) {
|
||||||
val json = json {
|
val json = json {
|
||||||
KEY_GAME_ID to gameId
|
KEY_GAME_ID to gameId
|
||||||
@ -532,6 +535,9 @@ object SensorsBridge {
|
|||||||
KEY_GAME_TYPE to gameType
|
KEY_GAME_TYPE to gameType
|
||||||
KEY_POSITION to position
|
KEY_POSITION to position
|
||||||
KEY_TAB_CONTENT to tabContent
|
KEY_TAB_CONTENT to tabContent
|
||||||
|
KEY_LINK_TYPE to linkType
|
||||||
|
KEY_LINK_ID to linkId
|
||||||
|
KEY_LINK_TEXT to linkText
|
||||||
}
|
}
|
||||||
|
|
||||||
trackEvent(EVENT_GAME_DETAIL_PAGE_TAB_SELECT, json)
|
trackEvent(EVENT_GAME_DETAIL_PAGE_TAB_SELECT, json)
|
||||||
|
|||||||
@ -65,6 +65,7 @@ object AppExecutor {
|
|||||||
|
|
||||||
val cachedScheduler by lazy { Schedulers.from(ioExecutor) }
|
val cachedScheduler by lazy { Schedulers.from(ioExecutor) }
|
||||||
val computationScheduler by lazy { Schedulers.from(heavyWeightIoExecutor) }
|
val computationScheduler by lazy { Schedulers.from(heavyWeightIoExecutor) }
|
||||||
|
val logScheduler by lazy { Schedulers.from(logExecutor) }
|
||||||
|
|
||||||
class MainThreadExecutor : Executor {
|
class MainThreadExecutor : Executor {
|
||||||
private val mainThreadHandler = Handler(Looper.getMainLooper())
|
private val mainThreadHandler = Handler(Looper.getMainLooper())
|
||||||
|
|||||||
@ -49,7 +49,12 @@ data class ExposureEvent(
|
|||||||
eTrace: List<ExposureEvent>? = null,
|
eTrace: List<ExposureEvent>? = null,
|
||||||
event: ExposureType = ExposureType.EXPOSURE
|
event: ExposureType = ExposureType.EXPOSURE
|
||||||
) {
|
) {
|
||||||
val currentActivity = CurrentActivityHolder.getCurrentActivity()
|
val currentActivity = try {
|
||||||
|
CurrentActivityHolder.getCurrentActivity()
|
||||||
|
} catch (e: Exception) {
|
||||||
|
// 捕获异常,避免在获取当前 Activity 时出现问题
|
||||||
|
null
|
||||||
|
}
|
||||||
val currentActivitySimpleName = if (currentActivity != null) currentActivity::class.simpleName else "unknown"
|
val currentActivitySimpleName = if (currentActivity != null) currentActivity::class.simpleName else "unknown"
|
||||||
val businessId = if (currentActivity is IBusiness) currentActivity.getBusinessId() else null
|
val businessId = if (currentActivity is IBusiness) currentActivity.getBusinessId() else null
|
||||||
|
|
||||||
|
|||||||
@ -72,7 +72,7 @@ class RecyclerViewExposureHelper(
|
|||||||
init {
|
init {
|
||||||
val disposable = collectExposureSubject
|
val disposable = collectExposureSubject
|
||||||
.throttleLatest(SAMPLE_RATE, TimeUnit.MILLISECONDS)
|
.throttleLatest(SAMPLE_RATE, TimeUnit.MILLISECONDS)
|
||||||
.subscribeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.subscribe({
|
.subscribe({
|
||||||
collectExposureData()
|
collectExposureData()
|
||||||
}, {
|
}, {
|
||||||
|
|||||||
@ -169,7 +169,7 @@ class Va : IVa {
|
|||||||
LogConstants.KEY_MANUFACTURER to Build.MANUFACTURER,
|
LogConstants.KEY_MANUFACTURER to Build.MANUFACTURER,
|
||||||
LogConstants.KEY_MODEL to Build.MODEL,
|
LogConstants.KEY_MODEL to Build.MODEL,
|
||||||
LogConstants.KEY_NETWORK to (MetaUtil.getMeta().network ?: ""),
|
LogConstants.KEY_NETWORK to (MetaUtil.getMeta().network ?: ""),
|
||||||
LogConstants.KEY_ROM to RomIdentifier.getRom().name + " " + RomIdentifier.getRom().versionName,
|
LogConstants.KEY_ROM to RomIdentifier.getRom().romName + " " + RomIdentifier.getRom().romVersion,
|
||||||
LogConstants.KEY_HOST_VERSION to hostVersion,
|
LogConstants.KEY_HOST_VERSION to hostVersion,
|
||||||
LogConstants.KEY_HOST_CHANNEL to hostChannel,
|
LogConstants.KEY_HOST_CHANNEL to hostChannel,
|
||||||
LogConstants.KEY_OAID to oaid,
|
LogConstants.KEY_OAID to oaid,
|
||||||
|
|||||||
2
vasdk
2
vasdk
Submodule vasdk updated: 02d9241f8d...16201868dd
Reference in New Issue
Block a user