Commit 92fa8770 authored by wanglei's avatar wanglei

...

parent 0311dffd
...@@ -170,8 +170,8 @@ object AdsMgr { ...@@ -170,8 +170,8 @@ object AdsMgr {
adOpenMgr.show(activity, isUnLimit, AdmobEvent("openAd", from), showCallBack) adOpenMgr.show(activity, isUnLimit, AdmobEvent("openAd", from), showCallBack)
} else { } else {
admobInitCallBack = { admobInitCallBack = {
adOpenMgr.show(activity, isUnLimit, AdmobEvent("openAd", from), showCallBack)
} }
adOpenMgr.show(activity, isUnLimit, AdmobEvent("openAd", from), showCallBack)
} }
} else { } else {
if (isMaxInit) { if (isMaxInit) {
...@@ -243,13 +243,13 @@ object AdsMgr { ...@@ -243,13 +243,13 @@ object AdsMgr {
* *
* @param parent 展示广告的父布局容器 * @param parent 展示广告的父布局容器
*/ */
fun showBanner(parent: ViewGroup) { fun showBanner(parent: ViewGroup, collapsible: Boolean = true) {
if (configBean.isInBlackList) { if (configBean.isInBlackList) {
EventUtils.event("isInBlackList", configBean.isInBlackList.toString()) EventUtils.event("isInBlackList", configBean.isInBlackList.toString())
return return
} }
if (adsConfigBean.adSwitch) { if (adsConfigBean.adSwitch) {
adBannerMgr.show(parent) adBannerMgr.show(parent,collapsible)
} }
} }
} }
\ No newline at end of file
...@@ -23,7 +23,7 @@ class AdBannerMgr { ...@@ -23,7 +23,7 @@ class AdBannerMgr {
private var adView: AdView? = null private var adView: AdView? = null
private var listener: ViewTreeObserver.OnGlobalLayoutListener? = null private var listener: ViewTreeObserver.OnGlobalLayoutListener? = null
fun show(parent: ViewGroup, adClose: (() -> Unit)? = null) { fun show(parent: ViewGroup, collapsible: Boolean, adClose: (() -> Unit)? = null) {
if (!AdsMgr.adsConfigBean.adSwitch) { if (!AdsMgr.adsConfigBean.adSwitch) {
return return
...@@ -51,19 +51,23 @@ class AdBannerMgr { ...@@ -51,19 +51,23 @@ class AdBannerMgr {
AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(parent.context, adWidth) AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(parent.context, adWidth)
adView?.adUnitId = ConstConfig.ADMOB_BANNER_UNIT_ID adView?.adUnitId = ConstConfig.ADMOB_BANNER_UNIT_ID
adView?.setAdSize(adSize) adView?.setAdSize(adSize)
loadAd(admobEvent, adClose) loadAd(admobEvent, collapsible, adClose)
parent.viewTreeObserver.removeOnGlobalLayoutListener(listener) parent.viewTreeObserver.removeOnGlobalLayoutListener(listener)
} }
parent.viewTreeObserver.addOnGlobalLayoutListener(listener) parent.viewTreeObserver.addOnGlobalLayoutListener(listener)
} }
fun loadAd(admobEvent: AdmobEvent, adClose: (() -> Unit)?) { fun loadAd(admobEvent: AdmobEvent, collapsible: Boolean, adClose: (() -> Unit)?) {
val extras = Bundle() val build = AdRequest.Builder()
extras.putString("collapsible", "bottom")
extras.putString("collapsible_request_id", UUID.randomUUID().toString()) if (collapsible) {
val adRequest = val extras = Bundle()
AdRequest.Builder().addNetworkExtrasBundle(AdMobAdapter::class.java, extras).build() extras.putString("collapsible", "bottom")
extras.putString("collapsible_request_id", UUID.randomUUID().toString())
build.addNetworkExtrasBundle(AdMobAdapter::class.java, extras)
}
val adRequest = build.build()
adView?.adListener = adView?.adListener =
object : AdListener() { object : AdListener() {
override fun onAdFailedToLoad(loadAdError: LoadAdError) { override fun onAdFailedToLoad(loadAdError: LoadAdError) {
......
...@@ -257,7 +257,7 @@ class AdmobEvent : AdEvent { ...@@ -257,7 +257,7 @@ class AdmobEvent : AdEvent {
val mediationGroupName = extras?.getString("mediation_group_name") val mediationGroupName = extras?.getString("mediation_group_name")
val mediationABTestName = extras?.getString("mediation_ab_test_name") val mediationABTestName = extras?.getString("mediation_ab_test_name")
val mediationABTestVariant = extras?.getString("mediation_ab_test_variant") val mediationABTestVariant = extras?.getString("mediation_ab_test_variant")
obj.put("adUnitId", "nativeAd") obj.put("ad_unit", "nativeAd")
obj.put("adSourceName", adSourceName) obj.put("adSourceName", adSourceName)
obj.put("adSourceId", adSourceId) obj.put("adSourceId", adSourceId)
obj.put("adSourceInstanceName", adSourceInstanceName) obj.put("adSourceInstanceName", adSourceInstanceName)
......
...@@ -3,7 +3,7 @@ package com.base.locationsharewhite.bean.config ...@@ -3,7 +3,7 @@ package com.base.locationsharewhite.bean.config
class PopupConfigBean( class PopupConfigBean(
var popupStatus: Boolean = true, var popupStatus: Boolean = true,
var popupCount: Int = 0, var popupCount: Int = 24,
var popupStart: Int = 0, var popupStart: Int = 0,
var popupEnd: Int = 24, var popupEnd: Int = 24,
var popupInterval: Int = 1, var popupInterval: Int = 1,
......
...@@ -16,10 +16,12 @@ import com.base.locationsharewhite.utils.LogEx ...@@ -16,10 +16,12 @@ import com.base.locationsharewhite.utils.LogEx
import com.hjq.language.MultiLanguages import com.hjq.language.MultiLanguages
import java.util.Locale import java.util.Locale
import java.util.concurrent.atomic.AtomicBoolean import java.util.concurrent.atomic.AtomicBoolean
import kotlin.random.Random
abstract class BaseActivity<T : ViewBinding> : AppCompatActivity() { abstract class BaseActivity<T : ViewBinding> : AppCompatActivity() {
private val TAG = javaClass.simpleName
open val TAG = javaClass.simpleName
private val tagNo = Random.nextInt(500)
protected abstract val binding: T protected abstract val binding: T
lateinit var launcher: ActivityLauncher lateinit var launcher: ActivityLauncher
...@@ -29,7 +31,7 @@ abstract class BaseActivity<T : ViewBinding> : AppCompatActivity() { ...@@ -29,7 +31,7 @@ abstract class BaseActivity<T : ViewBinding> : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
onCreateI++ onCreateI++
LogEx.logDebug(TAG, "lifecycle onCreate ${javaClass.simpleName} $onCreateI") LogEx.logDebug(TAG, "lifecycle $tagNo onCreate ${javaClass.simpleName} $onCreateI")
launcher = ActivityLauncher(this) launcher = ActivityLauncher(this)
setContentView(binding.root) setContentView(binding.root)
EventUtils.event("page_${javaClass.simpleName}") EventUtils.event("page_${javaClass.simpleName}")
...@@ -45,12 +47,19 @@ abstract class BaseActivity<T : ViewBinding> : AppCompatActivity() { ...@@ -45,12 +47,19 @@ abstract class BaseActivity<T : ViewBinding> : AppCompatActivity() {
fun finishToMain() { fun finishToMain() {
if (this !is MainActivity && !ActivityManagerUtils.getInstance().isActivityInStack(MainActivity::class.java)) { val flag = this !is MainActivity && !ActivityManagerUtils.getInstance().isActivityInStack(MainActivity::class.java)
if (flag) {
startActivity(Intent(this, MainActivity::class.java)) startActivity(Intent(this, MainActivity::class.java))
} }
finish() finish()
} }
fun finishToMainTop() {
val intent = Intent(this, MainActivity::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)
startActivity(intent)
}
var dialog: Dialog? = null var dialog: Dialog? = null
override fun onDestroy() { override fun onDestroy() {
super.onDestroy() super.onDestroy()
...@@ -66,21 +75,18 @@ abstract class BaseActivity<T : ViewBinding> : AppCompatActivity() { ...@@ -66,21 +75,18 @@ abstract class BaseActivity<T : ViewBinding> : AppCompatActivity() {
} }
fun changeLanguage(currentActivity: Activity) { fun changeLanguage(currentActivity: Activity): Boolean {
val spLanguage = Locale(appLanguageSp, appLanguageCountrySp) val spLanguage = Locale(appLanguageSp, appLanguageCountrySp)
val flag = currentLocale != spLanguage val flag = currentLocale != spLanguage
val restart = MultiLanguages.setAppLanguage(this, spLanguage)
var restart = false
if (flag) {
restart = MultiLanguages.setAppLanguage(this, spLanguage)
if (restart) {
currentLocale = Locale(appLanguageSp, appLanguageCountrySp)
}
}
LogEx.logDebug( LogEx.logDebug(
TAG, "changeLanguage " + TAG, "changeLanguage " +
"flag=$flag restart=$restart currentLocale=$currentLocale spLanguage=$spLanguage" "flag=$flag restart=$restart currentLocale=$currentLocale spLanguage=$spLanguage"
) )
if (restart) {
currentLocale = Locale(appLanguageSp, appLanguageCountrySp)
}
if (flag || restart) { if (flag || restart) {
// 1.使用 recreate 来重启 Activity,效果差,有闪屏的缺陷 // 1.使用 recreate 来重启 Activity,效果差,有闪屏的缺陷
// recreate(); // recreate();
...@@ -102,8 +108,9 @@ abstract class BaseActivity<T : ViewBinding> : AppCompatActivity() { ...@@ -102,8 +108,9 @@ abstract class BaseActivity<T : ViewBinding> : AppCompatActivity() {
overridePendingTransition(R.anim.activity_alpha_in, R.anim.activity_alpha_out) overridePendingTransition(R.anim.activity_alpha_in, R.anim.activity_alpha_out)
finish() finish()
} }
return true
} }
return false
} }
...@@ -115,18 +122,22 @@ abstract class BaseActivity<T : ViewBinding> : AppCompatActivity() { ...@@ -115,18 +122,22 @@ abstract class BaseActivity<T : ViewBinding> : AppCompatActivity() {
} }
/**
* 避免在onResume--onPause周期内,多次调用
* 在onStop中重置标志
*/
private val onResumeCalled = AtomicBoolean(false) private val onResumeCalled = AtomicBoolean(false)
private var onResumeOneShootI = 0 private var onResumeOneShootI = 0
open fun onResumeOneShoot() { open fun onResumeOneShoot() {
onResumeOneShootI++ onResumeOneShootI++
LogEx.logDebug(TAG, "lifecycle onResumeOneShootI ${javaClass.simpleName} $onResumeOneShootI") LogEx.logDebug(TAG, "lifecycle $tagNo onResumeOneShootI ${javaClass.simpleName} $onResumeOneShootI")
} }
private var onResumeI = 0 private var onResumeI = 0
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
onResumeI++ onResumeI++
LogEx.logDebug(TAG, "lifecycle onResume ${javaClass.simpleName} $onResumeI") LogEx.logDebug(TAG, "lifecycle $tagNo onResume ${javaClass.simpleName} $onResumeI")
if (!onResumeCalled.get()) { if (!onResumeCalled.get()) {
onResumeCalled.set(true) onResumeCalled.set(true)
...@@ -138,14 +149,14 @@ abstract class BaseActivity<T : ViewBinding> : AppCompatActivity() { ...@@ -138,14 +149,14 @@ abstract class BaseActivity<T : ViewBinding> : AppCompatActivity() {
override fun onStart() { override fun onStart() {
super.onStart() super.onStart()
onStartI++ onStartI++
LogEx.logDebug(TAG, "lifecycle onStart ${javaClass.simpleName} $onStartI") LogEx.logDebug(TAG, "lifecycle $tagNo onStart ${javaClass.simpleName} $onStartI")
} }
private var onStopI = 0 private var onStopI = 0
override fun onStop() { override fun onStop() {
super.onStop() super.onStop()
onStopI++ onStopI++
LogEx.logDebug(TAG, "lifecycle onStop ${javaClass.simpleName} $onStopI") LogEx.logDebug(TAG, "lifecycle $tagNo onStop ${javaClass.simpleName} $onStopI")
onResumeCalled.set(false) onResumeCalled.set(false)
} }
...@@ -153,7 +164,7 @@ abstract class BaseActivity<T : ViewBinding> : AppCompatActivity() { ...@@ -153,7 +164,7 @@ abstract class BaseActivity<T : ViewBinding> : AppCompatActivity() {
override fun onPause() { override fun onPause() {
super.onPause() super.onPause()
onPauseI++ onPauseI++
LogEx.logDebug(TAG, "lifecycle onPause ${javaClass.simpleName} $onPauseI") LogEx.logDebug(TAG, "lifecycle $tagNo onPause ${javaClass.simpleName} $onPauseI")
} }
} }
\ No newline at end of file
...@@ -87,6 +87,9 @@ class MyApplication : Application() { ...@@ -87,6 +87,9 @@ class MyApplication : Application() {
} }
private fun initApp() { private fun initApp() {
//初始化广告相关业务
AdsMgr.init(appContext)
FacebookSdk.sdkInitialize(applicationContext) FacebookSdk.sdkInitialize(applicationContext)
val token = AppPreferences.getInstance().getString("token", "") val token = AppPreferences.getInstance().getString("token", "")
val topic = AppConfig.packageName + "_push" val topic = AppConfig.packageName + "_push"
...@@ -94,8 +97,6 @@ class MyApplication : Application() { ...@@ -94,8 +97,6 @@ class MyApplication : Application() {
FCMManager.initFirebase(this) FCMManager.initFirebase(this)
FCMManager.subscribeToTopic(topic) FCMManager.subscribeToTopic(topic)
//初始化广告相关业务
AdsMgr.init(appContext)
initConfig() initConfig()
InstallHelps.init { InstallHelps.init {
...@@ -186,11 +187,12 @@ class MyApplication : Application() { ...@@ -186,11 +187,12 @@ class MyApplication : Application() {
NewComUtils.requestCfg { config -> NewComUtils.requestCfg { config ->
if (config != null) {
AppPreferences.getInstance().put("config", config)
}
LogEx.logDebug("requestCfg", "config=$config") LogEx.logDebug("requestCfg", "config=$config")
AppPreferences.getInstance().put("config", config)
initConfig(config) initConfig(config)
} }
......
...@@ -13,7 +13,6 @@ import com.base.locationsharewhite.utils.BarUtils ...@@ -13,7 +13,6 @@ import com.base.locationsharewhite.utils.BarUtils
class HowUseActivity : BaseActivity<ActivityHowUseBinding>() { class HowUseActivity : BaseActivity<ActivityHowUseBinding>() {
private val TAG = "HowUseActivity"
override val binding: ActivityHowUseBinding by lazy { override val binding: ActivityHowUseBinding by lazy {
ActivityHowUseBinding.inflate(layoutInflater) ActivityHowUseBinding.inflate(layoutInflater)
} }
......
package com.base.locationsharewhite.ui.howuse package com.base.locationsharewhite.ui.howuse
import android.content.Intent
import android.graphics.Color import android.graphics.Color
import androidx.activity.addCallback import androidx.activity.addCallback
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import androidx.viewpager2.widget.MarginPageTransformer import androidx.viewpager2.widget.MarginPageTransformer
import com.base.locationsharewhite.R import com.base.locationsharewhite.R
import com.base.locationsharewhite.ads.AdsMgr
import com.base.locationsharewhite.ads.AdsShowCallBack
import com.base.locationsharewhite.bean.BannerBean import com.base.locationsharewhite.bean.BannerBean
import com.base.locationsharewhite.databinding.ActivityHowUseShareBinding import com.base.locationsharewhite.databinding.ActivityHowUseShareBinding
import com.base.locationsharewhite.helper.BaseActivity import com.base.locationsharewhite.helper.BaseActivity
import com.base.locationsharewhite.utils.BarUtils import com.base.locationsharewhite.utils.BarUtils
import com.base.locationsharewhite.utils.LogEx import com.base.locationsharewhite.utils.LogEx
import com.youth.banner.listener.OnBannerListener
import com.youth.banner.listener.OnPageChangeListener import com.youth.banner.listener.OnPageChangeListener
import com.youth.banner.util.BannerUtils import com.youth.banner.util.BannerUtils
...@@ -29,6 +29,7 @@ class HowUseShareActivity : BaseActivity<ActivityHowUseShareBinding>() { ...@@ -29,6 +29,7 @@ class HowUseShareActivity : BaseActivity<ActivityHowUseShareBinding>() {
initBanner() initBanner()
step1ui() step1ui()
AdsMgr.showBanner(binding.flBanner, false)
} }
private fun initBanner() { private fun initBanner() {
...@@ -69,8 +70,24 @@ class HowUseShareActivity : BaseActivity<ActivityHowUseShareBinding>() { ...@@ -69,8 +70,24 @@ class HowUseShareActivity : BaseActivity<ActivityHowUseShareBinding>() {
override fun initListener() { override fun initListener() {
super.initListener() super.initListener()
val activity = this
onBackPressedDispatcher.addCallback { onBackPressedDispatcher.addCallback {
finish() AdsMgr.showInsert(activity, showCallBack = object : AdsShowCallBack() {
override fun close(where: Int) {
LogEx.logDebug(TAG, "where=$where")
finishToMainTop()
}
override fun failed(where: Int) {
LogEx.logDebug(TAG, "where=$where")
finishToMainTop()
}
override fun googleFailed(where: Int) {
LogEx.logDebug(TAG, "where=$where")
finishToMainTop()
}
})
} }
binding.flFanhui.setOnClickListener { binding.flFanhui.setOnClickListener {
onBackPressedDispatcher.onBackPressed() onBackPressedDispatcher.onBackPressed()
...@@ -79,7 +96,7 @@ class HowUseShareActivity : BaseActivity<ActivityHowUseShareBinding>() { ...@@ -79,7 +96,7 @@ class HowUseShareActivity : BaseActivity<ActivityHowUseShareBinding>() {
if (uiType == 1) { if (uiType == 1) {
step2ui() step2ui()
} else { } else {
finishToMain() onBackPressedDispatcher.onBackPressed()
} }
} }
} }
......
...@@ -5,6 +5,8 @@ import androidx.activity.addCallback ...@@ -5,6 +5,8 @@ import androidx.activity.addCallback
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import androidx.viewpager2.widget.MarginPageTransformer import androidx.viewpager2.widget.MarginPageTransformer
import com.base.locationsharewhite.R import com.base.locationsharewhite.R
import com.base.locationsharewhite.ads.AdsMgr
import com.base.locationsharewhite.ads.AdsShowCallBack
import com.base.locationsharewhite.bean.BannerBean import com.base.locationsharewhite.bean.BannerBean
import com.base.locationsharewhite.databinding.ActivityHowViewOtherBinding import com.base.locationsharewhite.databinding.ActivityHowViewOtherBinding
import com.base.locationsharewhite.helper.BaseActivity import com.base.locationsharewhite.helper.BaseActivity
...@@ -28,6 +30,7 @@ class HowViewOtherActivity : BaseActivity<ActivityHowViewOtherBinding>() { ...@@ -28,6 +30,7 @@ class HowViewOtherActivity : BaseActivity<ActivityHowViewOtherBinding>() {
initBanner() initBanner()
step1ui() step1ui()
AdsMgr.showBanner(binding.flBanner, false)
} }
private fun initBanner() { private fun initBanner() {
...@@ -71,7 +74,20 @@ class HowViewOtherActivity : BaseActivity<ActivityHowViewOtherBinding>() { ...@@ -71,7 +74,20 @@ class HowViewOtherActivity : BaseActivity<ActivityHowViewOtherBinding>() {
override fun initListener() { override fun initListener() {
super.initListener() super.initListener()
onBackPressedDispatcher.addCallback { onBackPressedDispatcher.addCallback {
finish() AdsMgr.showInsert(this@HowViewOtherActivity, showCallBack = object : AdsShowCallBack() {
override fun close(where: Int) {
finishToMain()
}
override fun failed(where: Int) {
finishToMain()
}
override fun googleFailed(where: Int) {
finishToMain()
}
})
} }
binding.flFanhui.setOnClickListener { binding.flFanhui.setOnClickListener {
onBackPressedDispatcher.onBackPressed() onBackPressedDispatcher.onBackPressed()
...@@ -80,7 +96,7 @@ class HowViewOtherActivity : BaseActivity<ActivityHowViewOtherBinding>() { ...@@ -80,7 +96,7 @@ class HowViewOtherActivity : BaseActivity<ActivityHowViewOtherBinding>() {
if (uiType == 1) { if (uiType == 1) {
step2ui() step2ui()
} else { } else {
finishToMain() onBackPressedDispatcher.onBackPressed()
} }
} }
} }
......
...@@ -52,7 +52,6 @@ import kotlinx.coroutines.launch ...@@ -52,7 +52,6 @@ import kotlinx.coroutines.launch
class LocationMapActivity : BaseActivity<ActivityLocationMapBinding>(), OnMapReadyCallback { class LocationMapActivity : BaseActivity<ActivityLocationMapBinding>(), OnMapReadyCallback {
private val TAG = "LocationMapActivity"
private var map: GoogleMap? = null private var map: GoogleMap? = null
private lateinit var locationPresenter: LocationPresenter private lateinit var locationPresenter: LocationPresenter
private lateinit var adapter: ViewingAdapter private lateinit var adapter: ViewingAdapter
......
...@@ -37,7 +37,6 @@ import kotlinx.coroutines.launch ...@@ -37,7 +37,6 @@ import kotlinx.coroutines.launch
* 添加谁可以看我 * 添加谁可以看我
*/ */
class LocationShareActivity : BaseActivity<ActivityLocationShareBinding>() { class LocationShareActivity : BaseActivity<ActivityLocationShareBinding>() {
private val TAG = "LocationShareActivity"
override val binding: ActivityLocationShareBinding by lazy { override val binding: ActivityLocationShareBinding by lazy {
ActivityLocationShareBinding.inflate(layoutInflater) ActivityLocationShareBinding.inflate(layoutInflater)
......
...@@ -13,8 +13,6 @@ import com.base.locationsharewhite.BuildConfig ...@@ -13,8 +13,6 @@ import com.base.locationsharewhite.BuildConfig
import com.base.locationsharewhite.R import com.base.locationsharewhite.R
import com.base.locationsharewhite.ads.AdsMgr import com.base.locationsharewhite.ads.AdsMgr
import com.base.locationsharewhite.ads.AdsShowCallBack import com.base.locationsharewhite.ads.AdsShowCallBack
import com.base.locationsharewhite.ads.admob.AdBannerMgr
import com.base.locationsharewhite.ads.admob.AdInsertMgr
import com.base.locationsharewhite.bean.config.ConfigBean import com.base.locationsharewhite.bean.config.ConfigBean
import com.base.locationsharewhite.databinding.ActivityMainBinding import com.base.locationsharewhite.databinding.ActivityMainBinding
import com.base.locationsharewhite.fcm.NotificationUiUtil.sendAllAllowedNotification import com.base.locationsharewhite.fcm.NotificationUiUtil.sendAllAllowedNotification
...@@ -41,15 +39,10 @@ import com.google.android.gms.maps.SupportMapFragment ...@@ -41,15 +39,10 @@ import com.google.android.gms.maps.SupportMapFragment
import com.google.android.gms.maps.model.LatLng import com.google.android.gms.maps.model.LatLng
import com.google.android.gms.maps.model.Marker import com.google.android.gms.maps.model.Marker
import com.google.gson.Gson import com.google.gson.Gson
import org.json.JSONObject
import java.util.concurrent.atomic.AtomicBoolean import java.util.concurrent.atomic.AtomicBoolean
/**
* https://developer.android.com/about/versions/14/changes/data-safety?hl=zh-cn
*/
class MainActivity : BaseActivity<ActivityMainBinding>(), OnMapReadyCallback { class MainActivity : BaseActivity<ActivityMainBinding>(), OnMapReadyCallback {
private val TAG = "MainActivity"
private var allowAllTimeDialog: Dialog? = null private var allowAllTimeDialog: Dialog? = null
override val binding: ActivityMainBinding by lazy { override val binding: ActivityMainBinding by lazy {
...@@ -98,6 +91,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnMapReadyCallback { ...@@ -98,6 +91,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnMapReadyCallback {
private var bannerShowed = AtomicBoolean(false) private var bannerShowed = AtomicBoolean(false)
override fun onResumeOneShoot() { override fun onResumeOneShoot() {
super.onResumeOneShoot() super.onResumeOneShoot()
val recreated = changeLanguage(this)
if (recreated) return
if (checkAllLocationPermission()) { if (checkAllLocationPermission()) {
showNotificationDialog() showNotificationDialog()
...@@ -109,12 +104,6 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnMapReadyCallback { ...@@ -109,12 +104,6 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnMapReadyCallback {
mainPresenter.startLocationJob(lifecycleScope) mainPresenter.startLocationJob(lifecycleScope)
showAllowAllTimeDialog() showAllowAllTimeDialog()
// changeLanguage(this)
val c = ConfigBean()
val json = Gson().toJson(c)
LogEx.logDebug(TAG, "json=$json")
} }
private fun showNotificationDialog() { private fun showNotificationDialog() {
...@@ -209,18 +198,18 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnMapReadyCallback { ...@@ -209,18 +198,18 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnMapReadyCallback {
private fun showAdJump(jumpAction: () -> Unit) { private fun showAdJump(jumpAction: () -> Unit) {
AdsMgr.showInsert(this, false, object : AdsShowCallBack() { AdsMgr.showInsert(this, false, object : AdsShowCallBack() {
override fun close(where:Int) { override fun close(where: Int) {
LogEx.logDebug(TAG,"close where=$where") LogEx.logDebug(TAG, "close where=$where")
jumpAction.invoke() jumpAction.invoke()
} }
override fun failed(where:Int) { override fun failed(where: Int) {
LogEx.logDebug(TAG,"failed where=$where") LogEx.logDebug(TAG, "failed where=$where")
jumpAction.invoke() jumpAction.invoke()
} }
override fun googleFailed(where:Int) { override fun googleFailed(where: Int) {
LogEx.logDebug(TAG,"googleFailed where=$where") LogEx.logDebug(TAG, "googleFailed where=$where")
jumpAction.invoke() jumpAction.invoke()
} }
}) })
......
...@@ -3,6 +3,8 @@ package com.base.locationsharewhite.ui.set ...@@ -3,6 +3,8 @@ package com.base.locationsharewhite.ui.set
import android.content.Intent import android.content.Intent
import android.graphics.Color import android.graphics.Color
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import com.base.locationsharewhite.R
import com.base.locationsharewhite.ads.AdsMgr
import com.base.locationsharewhite.bean.ConstObject.appLanguageCountrySp import com.base.locationsharewhite.bean.ConstObject.appLanguageCountrySp
import com.base.locationsharewhite.bean.ConstObject.appLanguageSp import com.base.locationsharewhite.bean.ConstObject.appLanguageSp
import com.base.locationsharewhite.bean.LanguageBean import com.base.locationsharewhite.bean.LanguageBean
...@@ -10,14 +12,11 @@ import com.base.locationsharewhite.databinding.ActivityLanguageBinding ...@@ -10,14 +12,11 @@ import com.base.locationsharewhite.databinding.ActivityLanguageBinding
import com.base.locationsharewhite.helper.BaseActivity import com.base.locationsharewhite.helper.BaseActivity
import com.base.locationsharewhite.ui.howuse.HowUseActivity import com.base.locationsharewhite.ui.howuse.HowUseActivity
import com.base.locationsharewhite.utils.BarUtils import com.base.locationsharewhite.utils.BarUtils
import com.base.locationsharewhite.utils.ToastUtils.toast import com.base.locationsharewhite.utils.LogEx
import com.hjq.language.MultiLanguages
import java.util.Locale import java.util.Locale
class LanguageActivity : BaseActivity<ActivityLanguageBinding>() { class LanguageActivity : BaseActivity<ActivityLanguageBinding>() {
private val TAG = "LanguageActivity"
private lateinit var adapter: LanguageAdapter private lateinit var adapter: LanguageAdapter
override val binding: ActivityLanguageBinding by lazy { override val binding: ActivityLanguageBinding by lazy {
...@@ -30,40 +29,24 @@ class LanguageActivity : BaseActivity<ActivityLanguageBinding>() { ...@@ -30,40 +29,24 @@ class LanguageActivity : BaseActivity<ActivityLanguageBinding>() {
binding.root.updatePadding(top = BarUtils.getStatusBarHeight()) binding.root.updatePadding(top = BarUtils.getStatusBarHeight())
isGuide = intent.extras?.getBoolean("isGuide") ?: false isGuide = intent.extras?.getBoolean("isGuide") ?: false
AdsMgr.showNative(binding.flAd, R.layout.layout_admob_app_exit)
adapter = LanguageAdapter(click = { item -> adapter = LanguageAdapter(click = { item ->
}) })
binding.rv.adapter = adapter binding.rv.adapter = adapter
initData() initData()
} }
private fun initData() { private fun initData() {
val languageBeanList = listOf( val languageBeanList = listOf(
LanguageBean(LanguageBean.English, Locale.ENGLISH.language, Locale.ENGLISH.country), LanguageBean(LanguageBean.English, Locale.ENGLISH.language, Locale.ENGLISH.country),
LanguageBean(LanguageBean.简体中文, Locale.SIMPLIFIED_CHINESE.language, Locale.SIMPLIFIED_CHINESE.country), LanguageBean(LanguageBean.简体中文, Locale.SIMPLIFIED_CHINESE.language, Locale.SIMPLIFIED_CHINESE.country),
LanguageBean(LanguageBean.português, Locale("pt", "BR").language, Locale("pt", "BR").country),
LanguageBean(LanguageBean.Español, Locale("es").language, Locale("es").country),
LanguageBean(LanguageBean.Français, Locale.FRENCH.language, Locale.FRENCH.country),
LanguageBean(LanguageBean.Deutsch, Locale.GERMAN.language, Locale.GERMAN.country),
LanguageBean(LanguageBean.ไทย, Locale("th", "TH").language, Locale("th", "TH").country),
LanguageBean(LanguageBean.Bahasa_Indonesia, Locale("in", "ID").language, Locale("in", "ID").country),
LanguageBean(LanguageBean.Melayu, Locale("ms", "MY").language, Locale("ms", "MY").country),
LanguageBean(LanguageBean.Tiếng_Việt, Locale("vi", "VN").language, Locale("vi", "VN").country),
LanguageBean(LanguageBean.日本語, Locale.JAPAN.language, Locale.JAPAN.country),
LanguageBean(LanguageBean.Italiano, Locale.ITALY.language, Locale.ITALY.country),
LanguageBean(LanguageBean.한국인, Locale.KOREAN.language, Locale.KOREAN.country),
LanguageBean(LanguageBean.Nederlands, Locale("nl", "NL").language, Locale("nl", "NL").country),
LanguageBean(LanguageBean.繁體中文, Locale.TRADITIONAL_CHINESE.language, Locale.TRADITIONAL_CHINESE.country), LanguageBean(LanguageBean.繁體中文, Locale.TRADITIONAL_CHINESE.language, Locale.TRADITIONAL_CHINESE.country),
LanguageBean(LanguageBean.Türk, Locale("tr", "TR").language, Locale("tr", "TR").country),
) )
val spLC = appLanguageSp.split("_")
if (spLC.size == 2) { languageBeanList.findLast { it.language == appLanguageSp && it.country == appLanguageCountrySp }?.isSelect = true
//匹配语言和国家
languageBeanList.findLast { it.language == spLC[0] && it.country == spLC[1] }?.isSelect = true
} else {
//匹配语言
languageBeanList.findLast { it.language == spLC[0] }?.isSelect = true
}
adapter.submitList(languageBeanList) adapter.submitList(languageBeanList)
} }
...@@ -74,7 +57,7 @@ class LanguageActivity : BaseActivity<ActivityLanguageBinding>() { ...@@ -74,7 +57,7 @@ class LanguageActivity : BaseActivity<ActivityLanguageBinding>() {
binding.tvNext.setOnClickListener { binding.tvNext.setOnClickListener {
val selectLanguageBean = adapter.items.findLast { it.isSelect } val selectLanguageBean = adapter.items.findLast { it.isSelect }
selectLanguageBean ?: return@setOnClickListener selectLanguageBean ?: return@setOnClickListener
LogEx.logDebug(TAG, "selectLanguageBean=$selectLanguageBean")
appLanguageSp = selectLanguageBean.language appLanguageSp = selectLanguageBean.language
appLanguageCountrySp = selectLanguageBean.country appLanguageCountrySp = selectLanguageBean.country
......
...@@ -4,9 +4,9 @@ import android.content.Intent ...@@ -4,9 +4,9 @@ import android.content.Intent
import android.graphics.Color import android.graphics.Color
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import com.base.locationsharewhite.R import com.base.locationsharewhite.R
import com.base.locationsharewhite.ads.AdsMgr
import com.base.locationsharewhite.databinding.ActivityRenameBinding import com.base.locationsharewhite.databinding.ActivityRenameBinding
import com.base.locationsharewhite.helper.BaseActivity import com.base.locationsharewhite.helper.BaseActivity
import com.base.locationsharewhite.helper.MyApplication
import com.base.locationsharewhite.location.LocationLoginUtils import com.base.locationsharewhite.location.LocationLoginUtils
import com.base.locationsharewhite.location.LocationNameUtils import com.base.locationsharewhite.location.LocationNameUtils
import com.base.locationsharewhite.utils.BarUtils import com.base.locationsharewhite.utils.BarUtils
...@@ -18,8 +18,6 @@ import com.base.locationsharewhite.utils.ToastUtils.toast ...@@ -18,8 +18,6 @@ import com.base.locationsharewhite.utils.ToastUtils.toast
class RenameActivity : BaseActivity<ActivityRenameBinding>() { class RenameActivity : BaseActivity<ActivityRenameBinding>() {
private val TAG = "RenameActivity"
override val binding: ActivityRenameBinding by lazy { override val binding: ActivityRenameBinding by lazy {
ActivityRenameBinding.inflate(layoutInflater) ActivityRenameBinding.inflate(layoutInflater)
} }
...@@ -64,6 +62,7 @@ class RenameActivity : BaseActivity<ActivityRenameBinding>() { ...@@ -64,6 +62,7 @@ class RenameActivity : BaseActivity<ActivityRenameBinding>() {
} }
AdsMgr.showNative(binding.flAd, R.layout.layout_admob_app_exit)
// if (BuildConfig.DEBUG) { // if (BuildConfig.DEBUG) {
// binding.tvDevice.visibility = View.VISIBLE // binding.tvDevice.visibility = View.VISIBLE
// binding.tvDevice.text = AppPreferences.getInstance().getString("uuid", "") // binding.tvDevice.text = AppPreferences.getInstance().getString("uuid", "")
...@@ -79,15 +78,19 @@ class RenameActivity : BaseActivity<ActivityRenameBinding>() { ...@@ -79,15 +78,19 @@ class RenameActivity : BaseActivity<ActivityRenameBinding>() {
when (doWhat) { when (doWhat) {
RENAME_USER_NAME -> { RENAME_USER_NAME -> {
renameUser() renameUser {
AdsMgr.showInsert(this)
}
} }
RENAME_VIEWER_NICK_NAME -> { RENAME_VIEWER_NICK_NAME -> {
renameViewerNickName() renameViewerNickName()
AdsMgr.showInsert(this)
} }
RENAME_VIEWING_NICK_NAME -> { RENAME_VIEWING_NICK_NAME -> {
renameViewingNickName() renameViewingNickName()
AdsMgr.showInsert(this)
} }
} }
...@@ -130,7 +133,7 @@ class RenameActivity : BaseActivity<ActivityRenameBinding>() { ...@@ -130,7 +133,7 @@ class RenameActivity : BaseActivity<ActivityRenameBinding>() {
finish() finish()
} }
private fun renameUser() { private fun renameUser(success: () -> Unit) {
val newName = binding.editName.text.toString() val newName = binding.editName.text.toString()
if (newName.isEmpty()) { if (newName.isEmpty()) {
toast(getString(R.string.name_is_empty)) toast(getString(R.string.name_is_empty))
...@@ -140,6 +143,7 @@ class RenameActivity : BaseActivity<ActivityRenameBinding>() { ...@@ -140,6 +143,7 @@ class RenameActivity : BaseActivity<ActivityRenameBinding>() {
runOnUiThread { runOnUiThread {
if (flag) { if (flag) {
toast("Rename success", true) toast("Rename success", true)
success.invoke()
} else { } else {
toast("Rename failed", true) toast("Rename failed", true)
} }
......
...@@ -15,7 +15,6 @@ import com.base.locationsharewhite.ui.views.RateDialog.showRateDialog ...@@ -15,7 +15,6 @@ import com.base.locationsharewhite.ui.views.RateDialog.showRateDialog
import com.base.locationsharewhite.utils.BarUtils import com.base.locationsharewhite.utils.BarUtils
class SettingActivity : BaseActivity<ActivitySettingBinding>() { class SettingActivity : BaseActivity<ActivitySettingBinding>() {
private val TAG = "SettingActivity"
override val binding: ActivitySettingBinding by lazy { override val binding: ActivitySettingBinding by lazy {
ActivitySettingBinding.inflate(layoutInflater) ActivitySettingBinding.inflate(layoutInflater)
...@@ -61,7 +60,7 @@ class SettingActivity : BaseActivity<ActivitySettingBinding>() { ...@@ -61,7 +60,7 @@ class SettingActivity : BaseActivity<ActivitySettingBinding>() {
override fun onResumeOneShoot() { override fun onResumeOneShoot() {
super.onResumeOneShoot() super.onResumeOneShoot()
// changeLanguage(this) changeLanguage(this)
} }
override fun onResume() { override fun onResume() {
......
...@@ -7,6 +7,8 @@ import androidx.lifecycle.lifecycleScope ...@@ -7,6 +7,8 @@ import androidx.lifecycle.lifecycleScope
import com.base.locationsharewhite.R import com.base.locationsharewhite.R
import com.base.locationsharewhite.ads.AdsMgr import com.base.locationsharewhite.ads.AdsMgr
import com.base.locationsharewhite.ads.AdsShowCallBack import com.base.locationsharewhite.ads.AdsShowCallBack
import com.base.locationsharewhite.bean.ConstObject.appLanguageCountrySp
import com.base.locationsharewhite.bean.ConstObject.appLanguageSp
import com.base.locationsharewhite.bean.ConstObject.ifAgreePrivacy import com.base.locationsharewhite.bean.ConstObject.ifAgreePrivacy
import com.base.locationsharewhite.bean.ConstObject.isFirstLauncher import com.base.locationsharewhite.bean.ConstObject.isFirstLauncher
import com.base.locationsharewhite.databinding.ActivitySplashBinding import com.base.locationsharewhite.databinding.ActivitySplashBinding
...@@ -17,6 +19,7 @@ import com.base.locationsharewhite.ui.howuse.HowUseActivity ...@@ -17,6 +19,7 @@ import com.base.locationsharewhite.ui.howuse.HowUseActivity
import com.base.locationsharewhite.ui.main.LocationCodeActivity import com.base.locationsharewhite.ui.main.LocationCodeActivity
import com.base.locationsharewhite.ui.main.LocationShareActivity import com.base.locationsharewhite.ui.main.LocationShareActivity
import com.base.locationsharewhite.ui.main.MainActivity import com.base.locationsharewhite.ui.main.MainActivity
import com.base.locationsharewhite.ui.set.LanguageActivity
import com.base.locationsharewhite.ui.set.SettingActivity import com.base.locationsharewhite.ui.set.SettingActivity
import com.base.locationsharewhite.utils.BarUtils import com.base.locationsharewhite.utils.BarUtils
import com.base.locationsharewhite.utils.LogEx import com.base.locationsharewhite.utils.LogEx
...@@ -32,8 +35,6 @@ import java.util.concurrent.atomic.AtomicBoolean ...@@ -32,8 +35,6 @@ import java.util.concurrent.atomic.AtomicBoolean
@SuppressLint("CustomSplashScreen") @SuppressLint("CustomSplashScreen")
class SplashActivity : BaseActivity<ActivitySplashBinding>(), SplashView { class SplashActivity : BaseActivity<ActivitySplashBinding>(), SplashView {
private val TAG = "SplashActivity"
private lateinit var splashPresenter: SplashPresenter private lateinit var splashPresenter: SplashPresenter
private var progressJob: Job? = null private var progressJob: Job? = null
...@@ -162,8 +163,8 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>(), SplashView { ...@@ -162,8 +163,8 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>(), SplashView {
} }
private fun firstLauncherJump() { private fun firstLauncherJump() {
if (Locale.getDefault().language + "_" + Locale.getDefault().country != Locale.ENGLISH.language + "_" + Locale.ENGLISH.country) { if (appLanguageSp + "_" + appLanguageCountrySp != Locale.ENGLISH.language + "_" + Locale.ENGLISH.country) {
startActivity(Intent(this, HowUseActivity::class.java).apply { startActivity(Intent(this, LanguageActivity::class.java).apply {
putExtra("isGuide", true) putExtra("isGuide", true)
}) })
} else { } else {
......
...@@ -119,4 +119,9 @@ ...@@ -119,4 +119,9 @@
</LinearLayout> </LinearLayout>
<FrameLayout
android:id="@+id/fl_banner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
...@@ -118,5 +118,10 @@ ...@@ -118,5 +118,10 @@
</LinearLayout> </LinearLayout>
<FrameLayout
android:id="@+id/fl_banner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
...@@ -21,13 +21,13 @@ ...@@ -21,13 +21,13 @@
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<LinearLayout <LinearLayout
android:paddingHorizontal="16dp"
android:paddingVertical="10dp"
android:id="@+id/tv_next" android:id="@+id/tv_next"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="16dp" android:layout_marginEnd="16dp"
android:background="@drawable/bg_03b988_19" android:background="@drawable/bg_03b988_19"
android:paddingHorizontal="16dp"
android:paddingVertical="10dp"
app:layout_constraintBottom_toBottomOf="@id/tv" app:layout_constraintBottom_toBottomOf="@id/tv"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/tv"> app:layout_constraintTop_toTopOf="@id/tv">
...@@ -58,16 +58,27 @@ ...@@ -58,16 +58,27 @@
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv" android:id="@+id/rv"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="0dp"
android:layout_marginTop="8dp" android:layout_marginVertical="8dp"
android:overScrollMode="never" android:overScrollMode="never"
android:paddingTop="16dp" android:paddingTop="16dp"
android:paddingBottom="40dp" android:paddingBottom="40dp"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager" app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
app:layout_constraintBottom_toTopOf="@id/fl_ad"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv" app:layout_constraintTop_toBottomOf="@+id/tv"
app:spanCount="2" app:spanCount="2"
tools:listitem="@layout/item_language" /> tools:listitem="@layout/item_language" />
<com.base.locationsharewhite.ads.NativeParentView
android:id="@+id/fl_ad"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent">
<include layout="@layout/layout_admob_app_exit" />
</com.base.locationsharewhite.ads.NativeParentView>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
...@@ -78,4 +78,14 @@ ...@@ -78,4 +78,14 @@
android:textSize="18sp" android:textSize="18sp"
android:textStyle="bold" /> android:textStyle="bold" />
<com.base.locationsharewhite.ads.NativeParentView
android:id="@+id/fl_ad"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="24dp">
<include layout="@layout/layout_admob_app_exit" />
</com.base.locationsharewhite.ads.NativeParentView>
</LinearLayout> </LinearLayout>
\ No newline at end of file
...@@ -100,7 +100,7 @@ ...@@ -100,7 +100,7 @@
android:background="?android:attr/selectableItemBackground" android:background="?android:attr/selectableItemBackground"
android:clickable="true" android:clickable="true"
android:focusable="true" android:focusable="true"
android:visibility="gone"> android:visibility="visible">
<ImageView <ImageView
android:layout_width="wrap_content" android:layout_width="wrap_content"
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="345dp" android:layout_width="345dp"
android:layout_gravity="center_horizontal"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
......
<resources>
<string name="language">语言</string>
<string name="settings">设置</string>
</resources>
\ No newline at end of file
<resources>
<string name="language">語言</string>
<string name="settings">設置</string>
</resources>
\ No newline at end of file
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<string name="my_location_code">My Location code</string> <string name="my_location_code">My Location code</string>
<string name="share_location_code">Share My Location</string> <string name="share_location_code">Share My Location</string>
<string name="share_my_location">Share my location</string> <string name="share_my_location">Share my location</string>
<string name="how_to_use">How to use?</string> <string name="how_to_use">How to use?</string>
<string name="settings">Settings</string> <string name="settings">Settings</string>
<string name="friends">Friends</string> <string name="friends">Friends</string>
<string name="friend_tips">When you send the location code to a friend and they paste it to share the location successfully,it takes about 1–10 minutes to establish the Location sharing link. Be patient Please!</string> <string name="friend_tips">When you send the location code to a friend and they paste it to share the location successfully,it takes about 1–10 minutes to establish the Location sharing link. Be patient Please!</string>
......
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