diff --git a/app/build.gradle b/app/build.gradle index 7e572ef..036d6e0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -30,7 +30,7 @@ android { targetSdkVersion 35 versionCode 2101 // versionName "2.1.1" - versionName "2.1.1-Beta7" + versionName "2.1.1-Beta8" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/app/src/main/java/com/abbidot/tracker/adapter/HomePetTrackMenuAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/HomePetTrackMenuAdapter.kt index b262e80..b69bc69 100644 --- a/app/src/main/java/com/abbidot/tracker/adapter/HomePetTrackMenuAdapter.kt +++ b/app/src/main/java/com/abbidot/tracker/adapter/HomePetTrackMenuAdapter.kt @@ -48,14 +48,22 @@ class HomePetTrackMenuAdapter( background = ContextCompat.getDrawable(context, R.drawable.selector_transparent_pressed) } - qMUICommonItemView.textView.typeface = mTypeface + qMUICommonItemView.textView.apply { + typeface = mTypeface + val tColor = if (item.type == ConstantInt.SpecialType) R.color.grey_color + else R.color.qmui_config_color_gray_1 + setTextColor(ContextCompat.getColor(context, tColor)) + } qMUICommonItemView.setOnClickListener { when (position) { 0 -> mHomeTrackFragment.goPetDataActivity(LedLightActivity::class.java) 1 -> mHomeTrackFragment.goMapDeviceDataActivity(TrackingDurationSetActivity::class.java) 2 -> mHomeTrackFragment.goMapDeviceDataActivity(LiveDurationSetActivity::class.java) 3 -> mHomeTrackFragment.firmwareCheckUpdate() - 4 -> mHomeTrackFragment.goPetDataActivity(PowerOffActivity::class.java) + 4 -> { + if (item.type == ConstantInt.SpecialType) return@setOnClickListener + mHomeTrackFragment.goPetDataActivity(PowerOffActivity::class.java) + } } } diff --git a/app/src/main/java/com/abbidot/tracker/adapter/HomePetTrackStateAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/HomePetTrackStateAdapter.kt index 880a721..d99e469 100644 --- a/app/src/main/java/com/abbidot/tracker/adapter/HomePetTrackStateAdapter.kt +++ b/app/src/main/java/com/abbidot/tracker/adapter/HomePetTrackStateAdapter.kt @@ -7,6 +7,7 @@ import com.abbidot.baselibrary.list.BaseRecyclerAdapter import com.abbidot.baselibrary.list.RecyclerViewHolder import com.abbidot.tracker.R import com.abbidot.tracker.bean.MenuTxtBean +import com.abbidot.tracker.constant.ConstantInt import com.abbidot.tracker.constant.MultipleEntity import com.abbidot.tracker.widget.BatteryView import com.abbidot.tracker.widget.MyBluetoothAnimView @@ -28,9 +29,15 @@ class HomePetTrackStateAdapter( holder.getTextView(R.id.tv_home_pet_device_state_name_item).apply { text = item.menuValue - setTextColor(ContextCompat.getColor(mContext, item.colorRedId)) + val color = if (item.type == ConstantInt.SpecialType) R.color.grey_color + else item.colorRedId + setTextColor(ContextCompat.getColor(mContext, color)) } + val color = if (item.type == ConstantInt.SpecialType) R.color.grey_color + else R.color.data_black_color + stateTextView.setTextColor(ContextCompat.getColor(mContext, color)) + val bv = holder.getView(R.id.bv_home_pet_device_power) as BatteryView val bluetoothAnimView = holder.getView(R.id.mba_home_pet_device_search_anim_item) as MyBluetoothAnimView @@ -53,7 +60,19 @@ class HomePetTrackStateAdapter( else -> { bv.visibility = View.GONE bluetoothAnimView.visibility = View.GONE - stateTextView.setCompoundDrawablesWithIntrinsicBounds(0, item.imageId, 0, 0) + val drawable = ContextCompat.getDrawable(mContext, item.imageId) + if (null == drawable) { + stateTextView.setCompoundDrawablesWithIntrinsicBounds(0, item.imageId, 0, 0) + } else { + if (item.type == ConstantInt.SpecialType) { + drawable.setTint(ContextCompat.getColor(mContext, R.color.grey_color)) + } else { + drawable.setTint(ContextCompat.getColor(mContext, R.color.data_black_color)) + } + stateTextView.setCompoundDrawablesWithIntrinsicBounds( + null, drawable, null, null + ) + } } } } diff --git a/app/src/main/java/com/abbidot/tracker/adapter/WiFiZoneAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/WiFiZoneAdapter.kt index 260056d..2c0d594 100644 --- a/app/src/main/java/com/abbidot/tracker/adapter/WiFiZoneAdapter.kt +++ b/app/src/main/java/com/abbidot/tracker/adapter/WiFiZoneAdapter.kt @@ -1,12 +1,16 @@ package com.abbidot.tracker.adapter import android.content.Context +import android.content.res.ColorStateList import android.view.View +import androidx.core.content.ContextCompat import com.abbidot.baselibrary.list.BaseRecyclerAdapter import com.abbidot.baselibrary.list.RecyclerViewHolder import com.abbidot.tracker.R import com.abbidot.tracker.bean.WiFiZoneBean import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.widget.TypefaceRoundButton +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButtonDrawable /** */ @@ -16,15 +20,38 @@ class WiFiZoneAdapter( private val isShowArrow = isShowArrowRight + //禁用模式,无法点击的情况 + private var isDisabledMode = true + override fun getEmptyLayoutId(viewType: Int) = R.layout.layout_virtual_fences_empty_view override fun getItemLayoutId(viewType: Int) = R.layout.item_wifi_zone_layout override fun noData(holder: RecyclerViewHolder?) { holder?.apply { - getView(R.id.btn_empty_fences_add_safe_zone).visibility = - if (isShowNoDataAddButton) View.VISIBLE + getTextView(R.id.tv_fences_add_wifi_no_title).let { + val tColor = if (isDisabledMode) R.color.grey_color + else R.color.data_black_color + it.setTextColor(ContextCompat.getColor(mContext, tColor)) + } + (getView(R.id.btn_empty_fences_add_safe_zone) as TypefaceRoundButton).let { + it.visibility = if (isShowNoDataAddButton) View.VISIBLE else View.GONE + val tColor = if (isDisabledMode) R.color.grey_color + else R.color.select_color + it.setTextColor(ContextCompat.getColor(mContext, tColor)) + (it.background as QMUIRoundButtonDrawable).let { d -> + val dColor = if (isDisabledMode) R.color.grey_color + else R.color.btn_color + d.setStrokeColors( + ColorStateList.valueOf( + ContextCompat.getColor( + mContext, dColor + ) + ) + ) + } + } } } @@ -40,4 +67,9 @@ class WiFiZoneAdapter( if (isShowArrow) View.VISIBLE else View.GONE } + + fun setDisabledMode(isDisabled: Boolean) { + isDisabledMode = isDisabled + notifyDataSetChanged() + } } \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/base/BaseActivity.kt b/app/src/main/java/com/abbidot/tracker/base/BaseActivity.kt index de24ab4..3b14216 100644 --- a/app/src/main/java/com/abbidot/tracker/base/BaseActivity.kt +++ b/app/src/main/java/com/abbidot/tracker/base/BaseActivity.kt @@ -32,6 +32,7 @@ import com.abbidot.baselibrary.util.LogUtil import com.abbidot.tracker.R import com.abbidot.tracker.constant.ConstantInt import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.util.Util import com.abbidot.tracker.util.ViewUtil import com.hjq.toast.Toaster import com.qmuiteam.qmui.alpha.QMUIAlphaButton @@ -91,6 +92,9 @@ abstract class BaseActivity(val inflater: (inflater: LayoutInfl //是否需要适配底部EdgeToEdge var isEdgeToEdgeAdapterNavigationBars = true + //防止按钮多次点击 + private var mLimitExecutionTime = 0L + override fun onCreate(savedInstanceState: Bundle?) { isFrontRunning = true super.onCreate(savedInstanceState) @@ -291,8 +295,19 @@ abstract class BaseActivity(val inflater: (inflater: LayoutInfl } } + /** + * 限制多次点击按钮 + */ + fun isLimitClick(): Boolean { + //防止执行多次弹窗 + if (Util.isTimeLimit(mLimitExecutionTime)) { + return true + } + mLimitExecutionTime = System.currentTimeMillis() + return false + } + override fun onClick(v: View?) { - // 默认不实现,让子类实现 } /** @@ -349,9 +364,11 @@ abstract class BaseActivity(val inflater: (inflater: LayoutInfl /** * 添加TopBar右边图片按钮 */ - fun addRightImageButton(@DrawableRes resId: Int): QMUIAlphaImageButton { + fun addRightImageButton( + @DrawableRes resId: Int, setOnClick: Boolean = true + ): QMUIAlphaImageButton { val rightBtn = mTopBar!!.addRightImageButton(resId, R.id.topbar_right_change_button) - setOnClickListenerViews(rightBtn) + if (setOnClick) setOnClickListenerViews(rightBtn) return rightBtn } diff --git a/app/src/main/java/com/abbidot/tracker/bean/MenuTxtBean.kt b/app/src/main/java/com/abbidot/tracker/bean/MenuTxtBean.kt index 63580d4..2556b9f 100644 --- a/app/src/main/java/com/abbidot/tracker/bean/MenuTxtBean.kt +++ b/app/src/main/java/com/abbidot/tracker/bean/MenuTxtBean.kt @@ -15,23 +15,24 @@ data class MenuTxtBean( var colorRedId: Int, var imageUrl: String, var isSwitch: Boolean, + var type: Int, @MultipleEntity val menuType: Int ) : MultiItemEntity { //设置空的构造方法 - constructor(@MultipleEntity menuType: Int) : this("", "", 0, 0, "", false, menuType) + constructor(@MultipleEntity menuType: Int) : this("", "", 0, 0, "", false, 0, menuType) //设置多个构造方法 constructor(menuName: String, menuValue: String, @MultipleEntity menuType: Int) : this( - menuName, menuValue, 0, 0, "", false, menuType + menuName, menuValue, 0, 0, "", false, 0, menuType ) constructor(menuName: String, menuValue: String) : this( - menuName, menuValue, 0, 0, "", false, MultipleEntity.TEXT + menuName, menuValue, 0, 0, "", false, 0, MultipleEntity.TEXT ) constructor(menuName: String, imageId: Int, menuValue: String) : this( - menuName, menuValue, imageId, 0, "", false, MultipleEntity.TEXT + menuName, menuValue, imageId, 0, "", false, 0, MultipleEntity.TEXT ) @MultipleEntity diff --git a/app/src/main/java/com/abbidot/tracker/bean/WiFiZoneListBean.kt b/app/src/main/java/com/abbidot/tracker/bean/WiFiZoneListBean.kt index 5c619f0..ca9b149 100644 --- a/app/src/main/java/com/abbidot/tracker/bean/WiFiZoneListBean.kt +++ b/app/src/main/java/com/abbidot/tracker/bean/WiFiZoneListBean.kt @@ -6,5 +6,8 @@ package com.abbidot.tracker.bean * @description: */ data class WiFiZoneListBean( - var latitude: Double, var longitude: Double, var list: MutableList? + var latitude: Double, + var longitude: Double, + var list: MutableList?, + var powerSwitch: Int ) diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/HomeV2Activity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/HomeV2Activity.kt index 3589df4..8b48a65 100644 --- a/app/src/main/java/com/abbidot/tracker/ui/activity/HomeV2Activity.kt +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/HomeV2Activity.kt @@ -95,6 +95,9 @@ class HomeV2Activity : BaseActivity(ActivityHomeV2Binding var isRequestPetData = false private var mCountdownType = ConstantInt.SpecialType + //是否已经触发倒计时自动连接设备 + private var isCountdownAutoConnBle = false + private val mFragments = mutableListOf( ActivityV2Fragment.newInstance(this), RouteV2Fragment.newInstance(this), @@ -135,6 +138,9 @@ class HomeV2Activity : BaseActivity(ActivityHomeV2Binding } }, 1) + //解决异常 https://blog.csdn.net/w_lin/article/details/123872656 + it.isSaveEnabled=false + edgeToEdgeAdapterBars(it) } @@ -187,31 +193,54 @@ class HomeV2Activity : BaseActivity(ActivityHomeV2Binding } } - override fun liveDataObserve() { + override fun onResume() { + super.onResume() + if (isCountdownAutoConnBle && mCountdownType == ConstantInt.Type1) { + LogUtil.e("onResume,自动连接设备20秒计时开始") + mCountDownTimerViewModel.startCountDown(20) + } + } - /* + override fun onPause() { + super.onPause() + if (isCountdownAutoConnBle && mCountdownType == ConstantInt.Type1) { + LogUtil.e("onPause,自动连接设备倒计时停止") + mCountDownTimerViewModel.stopCountDown() + } + } + + override fun liveDataObserve() {/* Dispatchers.IO 在Android中主要用于执行输入输出操作,如文件读写和网络请求 Dispatchers.Main‌:适用于处理与UI相关的操作,如更新UI界面、响应用户输入等。 Dispatchers.Default‌:适用于执行CPU密集型任务,如算法计算、数据处理等 Dispatchers.Unconfined‌:不对协程的执行环境做任何限制,协程将在调用它的线程中执行,直到遇到挂起函数为止,之后会在恢复执行时继续在之前的线程中执行‌ */ - //出现闪退,5秒退出APP - mCountDownTimerViewModel.mCountDownEndLiveData.observe(this) { - //自动重启APP + mCountDownTimerViewModel.apply { + mCountDowningLiveData.observe(this@HomeV2Activity) { + if (mCountdownType == ConstantInt.Type1) { + isCountdownAutoConnBle = true + } + } + mCountDownEndLiveData.observe(this@HomeV2Activity) { + //自动重启APP // val intent = baseContext.packageManager.getLaunchIntentForPackage(baseContext.packageName) // //与正常页面跳转一样可传递序列化数据,在Launch页面内获得 // intent!!.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) // intent.putExtra("REBOOT", "reboot") // startActivity(intent) - if (mCountdownType == ConstantInt.Type0) { - finish() - System.gc() - } else if (mCountdownType == ConstantInt.Type1) { - LogUtil.e("自动连接蓝牙倒计时结束") - if (SRBleUtil.instance.isBleEnable(mContext)) { - autoConnectDevice() - mCountDownTimerViewModel.startCountDown(20) + + //出现闪退,5秒退出APP + if (mCountdownType == ConstantInt.Type0) { + finish() + System.gc() + } else if (mCountdownType == ConstantInt.Type1) { + LogUtil.e("自动连接蓝牙倒计时结束") + isCountdownAutoConnBle = false + if (SRBleUtil.instance.isBleEnable(mContext)) { + autoConnectDevice() + mCountDownTimerViewModel.startCountDown(20) + } } } } @@ -678,6 +707,7 @@ class HomeV2Activity : BaseActivity(ActivityHomeV2Binding override fun onDestroy() { super.onDestroy() LogUtil.e("HomeV2Activity---------------onDestroy") + mCountDownTimerViewModel.stopCountDown() mSocketUtilManage?.destroy() mBleListenerReceiver?.let { unregisterReceiver(it) diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/device/set/LedLightActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/device/set/LedLightActivity.kt index 6bcb582..7778aa7 100644 --- a/app/src/main/java/com/abbidot/tracker/ui/activity/device/set/LedLightActivity.kt +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/device/set/LedLightActivity.kt @@ -54,6 +54,9 @@ class LedLightActivity : BaseActivity(ActivityLedLightB //防止多次按返回键执行 private var isFinishSave = false + //禁用模式 + private var isDisabledMode = true + override fun getTopBar() = mViewBinding.ilLedLightBar.titleTopBar override fun initData() { @@ -96,7 +99,7 @@ class LedLightActivity : BaseActivity(ActivityLedLightB mViewBinding.ledLightMode.apply { ViewUtil.instance.showQMUICommonListItemView(mContext, this, { - builder.build().show() + if (!isDisabledMode) builder.build().show() }, getString(R.string.txt_light_mode)) // mMapDeviceBean?.apply { // detailText = when { @@ -164,6 +167,7 @@ class LedLightActivity : BaseActivity(ActivityLedLightB ) } + setDisabledState(true) mPetBean?.apply { //查找是否连接了蓝牙 SRBleUtil.instance.getConnectMacDevice(macID)?.let { @@ -197,13 +201,18 @@ class LedLightActivity : BaseActivity(ActivityLedLightB //接收开蓝牙操作,然后搜索连接设备 XEventBus.observe(this, EventName.ActionConDeviceState) { conState: Int -> mViewBinding.ledLightBluetoothTips.trbBleConnectState.let { view -> - ViewUtil.instance.bleConActionState(this, view, conState) + if (!isDisabledMode) { + ViewUtil.instance.bleConActionState(this, view, conState) + } } } //接收蓝牙连接状态 XEventBus.observe(this, EventName.ConnectDeviceState) { ble: BleTrackDeviceBean -> mPetBean?.apply { if (ble.mac == macID) { + mMapDeviceBean?.let { + updateDisabledState(it) + } updateConState(ble) } } @@ -212,13 +221,50 @@ class LedLightActivity : BaseActivity(ActivityLedLightB private fun setDeviceData(mapDeviceBean: MapDeviceBean) { mapDeviceBean.apply { - mViewBinding.ledLightOpenAndClose.switch.isChecked = ledSwitch == ConstantInt.Open + mViewBinding.let { + it.ledLightOpenAndClose.switch.isChecked = ledSwitch == ConstantInt.Open - setLedLightColor( - Color.rgb(ledRedValue, ledGreenValue, ledBlueValue), true - ) - if (ledMode == 0 || ledMode > mLedModeList.size) ledMode = 1 - mViewBinding.ledLightMode.detailText = mLedModeList[ledMode - 1] + setLedLightColor( + Color.rgb(ledRedValue, ledGreenValue, ledBlueValue), true + ) + if (ledMode == 0 || ledMode > mLedModeList.size) ledMode = 1 + it.ledLightMode.detailText = mLedModeList[ledMode - 1] + + updateDisabledState(this) + } + } + } + + private fun updateDisabledState(mapDeviceBean: MapDeviceBean) { + mapDeviceBean.apply { + if (SRBleUtil.instance.isMacConnect(deviceMacId)) { + setDisabledState(false) + } else { + //是否超时上报 + val isTimeoutReport = Util.isTimeoutReport(updateTime) + if (powerSwitch == ConstantInt.Type0 || powerSwitch == ConstantInt.Type2 || powerSwitch == ConstantInt.Type3 || inWifiZone == ConstantInt.Type1 || isTimeoutReport) { + setDisabledState(true) + } else { + setDisabledState(false) + } + } + } + } + + private fun setDisabledState(isDisabled: Boolean) { + isDisabledMode = isDisabled + mViewBinding.apply { + val tColor = if (isDisabled) { + btnLedLightSetSave.visibility = View.GONE + ledLightBluetoothTips.root.visibility = View.GONE + R.color.grey_color + } else { + btnLedLightSetSave.visibility = View.VISIBLE + ledLightBluetoothTips.root.visibility = View.VISIBLE + R.color.qmui_config_color_gray_1 + } + ledLightOpenAndClose.textView.setTextColor(ContextCompat.getColor(mContext, tColor)) + ledLightMode.textView.setTextColor(ContextCompat.getColor(mContext, tColor)) } } @@ -232,13 +278,12 @@ class LedLightActivity : BaseActivity(ActivityLedLightB view.text = getString(R.string.tracker_manage_set_ble_connect) ContextCompat.getColor(mContext, R.color.cyan_color1) } else { -// showToast(R.string.txt_ble_connect_fail) view.text = getString(R.string.tracker_manage_set_ble_unconnect) ContextCompat.getColor(mContext, R.color.red_color4) } view.setBackgroundColor(bgColor) } - if (isShowToast) { + if (!isDisabledMode && isShowToast) { ViewUtil.instance.bleConStateToast(this, trackBleDevice.conState, Gravity.CENTER) } } @@ -400,7 +445,12 @@ class LedLightActivity : BaseActivity(ActivityLedLightB btnLedLightIssue -> showLedIssue() ilLedLightIssueLayout.tvCloseIssueBtn -> showLedIssue() - ledLightOpenAndClose.switch -> setLedSwitch() + ledLightOpenAndClose.switch -> { + if (isDisabledMode) { + ledLightOpenAndClose.switch.isChecked = + !ledLightOpenAndClose.switch.isChecked + } else setLedSwitch() + } } } } diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/AddWifiPowerZone1Activity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/AddWifiPowerZone1Activity.kt index 9784596..af673bc 100644 --- a/app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/AddWifiPowerZone1Activity.kt +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/AddWifiPowerZone1Activity.kt @@ -196,18 +196,11 @@ class AddWifiPowerZone1Activity : if (btnString == getString(R.string.tracker_manage_set_ble_unconnect)) { connectBle() } else if (btnString == getString(R.string.tracker_manage_set_ble_connect)) { - ViewUtil.instance.operateDialogTips(mContext, R.string.txt_disconnect_tips) { - mPetBean?.apply { - SRBleUtil.instance.disconnectToMac(macID) - } -// if (isFirstBind) { -// BleManager.getInstance().disconnectAllDevice() -// } else { -// mPetBean?.apply { -// SRBleUtil.instance.disconnectToMac(macID) -// } +// ViewUtil.instance.operateDialogTips(mContext, R.string.txt_disconnect_tips) { +// mPetBean?.apply { +// SRBleUtil.instance.disconnectToMac(macID) // } - } +// } } } diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/EditWifiPowerZoneActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/EditWifiPowerZoneActivity.kt index 47390ca..d483c49 100644 --- a/app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/EditWifiPowerZoneActivity.kt +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/EditWifiPowerZoneActivity.kt @@ -65,6 +65,9 @@ class EditWifiPowerZoneActivity : private var isFirstBind = false private var mBleTrackDeviceBean: BleTrackDeviceBean? = null + //禁用模式,无法点击的情况 + private var isDisabledMode = false + override fun getTopBar() = mViewBinding.editPowerZoneTopBar.titleTopBar override fun initData() { @@ -74,7 +77,14 @@ class EditWifiPowerZoneActivity : initWifiData() - if (isEdit) mRightImageButton = addRightImageButton(R.drawable.icon_gray_delete_svg) + if (isEdit) { + mRightImageButton = if (isDisabledMode) { + mViewBinding.ilEditPowerZoneBluetoothTips.root.visibility = View.GONE + addRightImageButton(R.drawable.icon_grey_delete, false) + } else { + addRightImageButton(R.drawable.icon_gray_delete_svg) + } + } mEditZoneMapCommon = EditWifiZoneMapCommon() mFragment = mEditZoneMapCommon.getMapFragment(mContext, mWiFiZoneBean) { mapLoadOk() } @@ -89,7 +99,6 @@ class EditWifiPowerZoneActivity : btnSaveWifiZone, ivEditWifiZoneMapTypeBtn, btnCancelWifiZone, - mRightImageButton, ilEditPowerZoneBluetoothTips.trbBleConnectState ) @@ -208,6 +217,7 @@ class EditWifiPowerZoneActivity : private fun initWifiData() { intent.extras?.apply { isFirstBind = getBoolean(ConstantString.isFirstBind, false) + isDisabledMode = getBoolean(ConstantString.isCheck, false) //设备里的wifi数据,添加使用到 mWiFiBean = Util.getParcelableAdaptive(intent, ConstantString.WiFi, WiFiBean::class.java) @@ -237,6 +247,7 @@ class EditWifiPowerZoneActivity : mWiFiZoneBean.deviceId = it.deviceId //查找当前Mac的设备 mBleTrackDeviceBean = SRBleUtil.instance.getConnectMacDevice(it.macID) + if (null != mBleTrackDeviceBean) isDisabledMode = false } mPetCurrentLat = getDouble(ConstantString.Latitude, 0.0) @@ -325,6 +336,7 @@ class EditWifiPowerZoneActivity : } private fun deleteWifiZone() { + if (isDisabledMode) return if (null == mBleTrackDeviceBean) { showToast(R.string.tracker_manage_set_ble_unconnect, gravity = Gravity.CENTER) return @@ -348,7 +360,6 @@ class EditWifiPowerZoneActivity : val data1 = SRBleCmdUtil.instance.byteToInt(data[1]) val data2 = SRBleCmdUtil.instance.byteToInt(data[2]) - mRightImageButton?.isEnabled = true if (data0 == 0x10 || data0 == 0x11) { if (data1 == 0x01 && data2 == 0x00) { //添加wifi 指令成功 @@ -365,9 +376,11 @@ class EditWifiPowerZoneActivity : } } else if (data1 == 0x01 && data2 == 0x01) { showLoading(false) + mRightImageButton?.isEnabled = true setButtonEnabled(mViewBinding.btnSaveWifiZone, ConstantInt.Type1) showToast(R.string.txt_duplicate_wifi_not, gravity = Gravity.CENTER) } else { + mRightImageButton?.isEnabled = true setButtonEnabled(mViewBinding.btnSaveWifiZone, ConstantInt.Type1) showLoading(false) showToast("Fail", gravity = Gravity.CENTER) @@ -423,18 +436,19 @@ class EditWifiPowerZoneActivity : this@EditWifiPowerZoneActivity, macID ) } else if (btnString == getString(R.string.tracker_manage_set_ble_connect)) { - ViewUtil.instance.operateDialogTips(mContext, R.string.txt_disconnect_tips) { - if (isFirstBind) { - BleManager.getInstance().disconnectAllDevice() - } else { - SRBleUtil.instance.disconnectToMac(macID) - } - } +// ViewUtil.instance.operateDialogTips(mContext, R.string.txt_disconnect_tips) { +// if (isFirstBind) { +// BleManager.getInstance().disconnectAllDevice() +// } else { +// SRBleUtil.instance.disconnectToMac(macID) +// } +// } } } } override fun onClick(v: View?) { + if (isLimitClick()) return mViewBinding.apply { when (v!!) { ivEditWifiZoneRefreshBtn -> { diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/PowerSavingSetActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/PowerSavingSetActivity.kt index 789b830..4d4fb91 100644 --- a/app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/PowerSavingSetActivity.kt +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/PowerSavingSetActivity.kt @@ -1,8 +1,10 @@ package com.abbidot.tracker.ui.activity.device.wifi import android.content.Intent +import android.content.res.ColorStateList import android.view.View import androidx.activity.viewModels +import androidx.core.content.ContextCompat import com.abbidot.baselibrary.constant.EventName import com.abbidot.baselibrary.constant.MMKVKey import com.abbidot.baselibrary.eventbus.XEventBus @@ -21,6 +23,7 @@ import com.abbidot.tracker.util.Util import com.abbidot.tracker.util.ViewUtil import com.abbidot.tracker.vm.WiFiZoneViewModel import com.qmuiteam.qmui.util.QMUIDisplayHelper +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButtonDrawable class PowerSavingSetActivity : BaseActivity(ActivityPowerSavingSetBinding::inflate) { @@ -33,6 +36,9 @@ class PowerSavingSetActivity : private var mPetCurrentLat = 0.0 private var mPetCurrentLon = 0.0 + //禁用模式,无法点击的情况 + private var isDisabledMode = true + override fun getTopBar() = mViewBinding.ilPowerSavingSetTopBar.titleTopBar override fun initData() { @@ -53,6 +59,7 @@ class PowerSavingSetActivity : goEditWiFiZone(pos) } }) + setDisabledMode(false) } mViewBinding.apply { @@ -88,6 +95,7 @@ class PowerSavingSetActivity : mZoneAdapter.setData(null) mPetCurrentLat = latitude mPetCurrentLon = longitude + isDisabledMode = powerSwitch == ConstantInt.Type0 list?.let { wifi -> setWifiListData(wifi) } @@ -118,12 +126,21 @@ class PowerSavingSetActivity : intent.putExtra(ConstantString.Pet, mPetBean) intent.putExtra(ConstantString.Latitude, mPetCurrentLat) intent.putExtra(ConstantString.Longitude, mPetCurrentLon) + intent.putExtra(ConstantString.isCheck, isDisabledMode) startActivity(intent) } }) } private fun setWifiListData(list: MutableList) { + if (list.size > 0) { + val aDrawable = mViewBinding.btnPowerSavingSetAdd.background as QMUIRoundButtonDrawable + val dColor = if (isDisabledMode) R.color.grey_color + else R.color.btn_color + val tColor = ContextCompat.getColor(mContext, dColor) + aDrawable.setStrokeColors(ColorStateList.valueOf(tColor)) + mViewBinding.btnPowerSavingSetAdd.setTextColor(tColor) + } list.apply { mViewBinding.let { if (size > 0) { @@ -157,7 +174,10 @@ class PowerSavingSetActivity : override fun onClick(v: View?) { mViewBinding.apply { when (v!!) { - btnPowerSavingSetAdd -> goAddWifiZone() + btnPowerSavingSetAdd -> { + if (isDisabledMode) return + goAddWifiZone() + } } } } diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/device/HomeTrackFragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/device/HomeTrackFragment.kt index d74f7ab..6337d1b 100644 --- a/app/src/main/java/com/abbidot/tracker/ui/fragment/device/HomeTrackFragment.kt +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/device/HomeTrackFragment.kt @@ -122,7 +122,12 @@ class HomeTrackFragment : } 4 -> connectionBtn(getData()[pos].menuValue) - 5 -> setLedSwitch() + 5 -> { + if (mHomePetTrackStateAdapter.getData()[pos].type == ConstantInt.SpecialType) { + return + } + setLedSwitch() + } } } }) @@ -175,7 +180,11 @@ class HomeTrackFragment : override fun onAgainListener() { val share = MMKVUtil.getInt(MMKVKey.Shared) if (share == ConstantInt.NoShare) { - goPetDataActivity(PowerSavingSetActivity::class.java) + mMapDeviceBean?.let { + if (it.powerSwitch != ConstantInt.Type0) { + goPetDataActivity(PowerSavingSetActivity::class.java) + } + } } } }) @@ -361,11 +370,12 @@ class HomeTrackFragment : fun getPetTrackerInfoData() { getHomeV2Activity()?.let { it.getPet()?.apply { -// mViewBinding.ivHomePetTrackPetHead.load(imgurl) - mTrackerInfoViewModel.getPetTrackerInfo(it, deviceId) mTrackMenuList[1].menuValue = "" mTrackMenuList[2].menuValue = "" + mTrackMenuList[4].menuValue = "" + + mTrackerInfoViewModel.getPetTrackerInfo(it, deviceId) getBleTrackDeviceBean(false)?.let { ble -> if (BleManager.getInstance().isConnected(macID)) { @@ -395,7 +405,7 @@ class HomeTrackFragment : mTrackMenuList[3].menuValue = "" mTrackMenuList[3].isSwitch = false } - mTrackMenuAdapter.notifyItemRangeChanged(1, 3) + mTrackMenuAdapter.notifyItemRangeChanged(1, 4) } } } @@ -455,7 +465,8 @@ class HomeTrackFragment : mTrackStateList, getString(R.string.txt_light), getString(R.string.tracker_manage_set_led_off), - imageResId = R.drawable.icon_light_svg + imageResId = R.drawable.icon_light_svg, + type = ConstantInt.SpecialType ) mTrackMenuList = mutableListOf() @@ -470,9 +481,8 @@ class HomeTrackFragment : menuType = MultipleEntity.IMG_TEXT_IMG ) ViewUtil.instance.addMenuBean( - mTrackMenuList, - getString(R.string.txt_power_off), - menuType = MultipleEntity.IMG_TEXT//, menuType = MultipleEntity.TEXT_NAME + mTrackMenuList, getString(R.string.txt_power_off) + // menuType = MultipleEntity.IMG_TEXT//, menuType = MultipleEntity.TEXT_NAME ) } @@ -564,17 +574,54 @@ class HomeTrackFragment : } } mTrackStateList[4].let { - if (it.menuValue == getString(R.string.txt_connecting)) return - it.colorRedId = R.color.orange_color3 - it.menuValue = if (BleManager.getInstance().isConnected(deviceMacId)) { - it.colorRedId = R.color.blue_color1 - getString(R.string.txt_connected) - } else { - getString(R.string.txt_unconnect_no) + if (it.menuValue != getString(R.string.txt_connecting)) { + it.colorRedId = R.color.orange_color3 + it.menuValue = if (BleManager.getInstance().isConnected(deviceMacId)) { + it.colorRedId = R.color.blue_color1 + getString(R.string.txt_connected) + } else { + getString(R.string.txt_unconnect_no) + } } } + setLedControlState(mapDeviceBean) + + mTrackMenuList.let { + it[1].menuValue = + (gnssInterval / 60).toString() + getString(R.string.data_active_unit_min) + it[2].menuValue = + (liveTime / 60).toString() + getString(R.string.data_active_unit_min) + it[4].type = if (powerSwitch == ConstantInt.Type3) ConstantInt.SpecialType + else ConstantInt.Type0 + it[4].menuValue = when (powerSwitch) { + ConstantInt.Type0 -> getString(R.string.tracker_manage_set_led_off) + ConstantInt.Type1 -> getString(R.string.tracker_manage_set_led_on) + else -> "" + } + } + + if (powerSwitch == ConstantInt.Type0) { + mZoneAdapter.setDisabledMode(true) + } else { + mZoneAdapter.setDisabledMode(false) + } + } + + mTrackMenuAdapter.notifyItemRangeChanged(1, mTrackMenuList.size) + mHomePetTrackStateAdapter.notifyItemRangeChanged(0, mTrackStateList.size) + } + + private fun setLedControlState(mapDeviceBean: MapDeviceBean) { + mapDeviceBean.apply { + //是否超时上报 + val isTimeoutReport = Util.isTimeoutReport(updateTime) mTrackStateList[5].let { it.colorRedId = R.color.orange_color3 + it.type = if (SRBleUtil.instance.isMacConnect(deviceMacId)) { + ConstantInt.Type0 + } else if (powerSwitch == ConstantInt.Type0 || powerSwitch == ConstantInt.Type2 || powerSwitch == ConstantInt.Type3 || inWifiZone == ConstantInt.Type1 || isTimeoutReport) { + ConstantInt.SpecialType + } else ConstantInt.Type0 it.menuValue = if (ledSwitch == ConstantInt.Open) { it.colorRedId = R.color.blue_color1 getString(R.string.tracker_manage_set_led_on) @@ -582,18 +629,7 @@ class HomeTrackFragment : getString(R.string.tracker_manage_set_led_off) } } - - mTrackMenuList.let { - it[1].menuValue = - (gnssInterval / 60).toString() + getString(R.string.data_active_unit_min) - it[2].menuValue = - (liveTime / 60).toString() + getString(R.string.data_active_unit_min) - it[4].menuValue = powerSwitch.toString() - } } - - mTrackMenuAdapter.notifyItemRangeChanged(1, mTrackMenuList.size) - mHomePetTrackStateAdapter.notifyItemRangeChanged(0, mTrackStateList.size) } private fun setZoneData(mapDeviceBean: MapDeviceBean) { @@ -681,7 +717,10 @@ class HomeTrackFragment : */ private fun updateConState(trackBleDevice: BleTrackDeviceBean) { mBleTrackDeviceBean = trackBleDevice - + mMapDeviceBean?.apply { + setLedControlState(this) + mHomePetTrackStateAdapter.notifyItemChanged(5) + } if (trackBleDevice.conState == ConState.CONNECTED) { if (isDFUCallback) { showToast(R.string.txt_upgrade_success) @@ -842,7 +881,7 @@ class HomeTrackFragment : } }) } else if (btnString == getString(R.string.txt_connected)) { - operateDeviceTips(R.string.txt_disconnect_tips, 1) +// operateDeviceTips(R.string.txt_disconnect_tips, 1) } } diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/map/MapV3Fragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/MapV3Fragment.kt index 080e0c5..3e5dea7 100644 --- a/app/src/main/java/com/abbidot/tracker/ui/fragment/map/MapV3Fragment.kt +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/MapV3Fragment.kt @@ -466,7 +466,7 @@ class MapV3Fragment : BaseFragment(FragmentMapV3Binding::i //隐藏蓝牙nearby mViewBinding.ilHomeMapDeviceMsg.root.visibility = View.GONE mViewBinding.llHomeMapDeviceBatteryLayout.visibility = View.INVISIBLE - mViewBinding.ilHomeMapPetLocation.root.visibility = View.GONE + mViewBinding.ilHomeMapPetLocation.root.visibility = View.INVISIBLE ViewUtil.instance.selectPetDialogShow( mContext, diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/HistoryDataGoogleMapFragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/HistoryDataGoogleMapFragment.kt index ec9f62a..e068832 100644 --- a/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/HistoryDataGoogleMapFragment.kt +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/HistoryDataGoogleMapFragment.kt @@ -130,8 +130,8 @@ class HistoryDataGoogleMapFragment : BaseGoogleMapFragment() { mContext!!.resources, R.drawable.icon_location_svg ) mPetIconDescriptor = BitmapDescriptorFactory.fromBitmap(bitmap!!) + mMarker?.setIcon(mPetIconDescriptor) } - mMarker?.setIcon(mPetIconDescriptor) } /** diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/HomeMapGoogleMapFragmentV3.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/HomeMapGoogleMapFragmentV3.kt index 92977d2..9c62454 100644 --- a/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/HomeMapGoogleMapFragmentV3.kt +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/HomeMapGoogleMapFragmentV3.kt @@ -270,6 +270,7 @@ class HomeMapGoogleMapFragmentV3 : BaseGoogleMapFragment() { // addPolyline(mGoogleMap!!, latLng) // addUserAndPetLine(latLng) refreshPetCurrentLocation(latLng, needMoveCamera = isMoveCamera) + isMoveCamera = false // mRippleCircle?.apply { // //一像素对应几米 @@ -293,6 +294,7 @@ class HomeMapGoogleMapFragmentV3 : BaseGoogleMapFragment() { if (i == trackList.size - 1) { // addUserAndPetLine(latLng) refreshPetCurrentLocation(latLng, needMoveCamera = isMoveCamera) + isMoveCamera = false } } } diff --git a/app/src/main/java/com/abbidot/tracker/util/ViewUtil.kt b/app/src/main/java/com/abbidot/tracker/util/ViewUtil.kt index 1b253a3..8b7d41f 100644 --- a/app/src/main/java/com/abbidot/tracker/util/ViewUtil.kt +++ b/app/src/main/java/com/abbidot/tracker/util/ViewUtil.kt @@ -70,7 +70,6 @@ import com.abbidot.tracker.constant.MultipleEntity import com.abbidot.tracker.dialog.MyAlertDialog import com.abbidot.tracker.dialog.SelectMapTypeDialog import com.abbidot.tracker.ui.activity.WebViewActivity -import com.abbidot.tracker.util.bluetooth.SRBleUtil import com.abbidot.tracker.widget.TypefaceTextView import com.daimajia.androidanimations.library.Techniques import com.daimajia.androidanimations.library.YoYo @@ -785,6 +784,7 @@ class ViewUtil private constructor() { imageUrl: String = "", colorRedId: Int = R.color.orange_color3, isSwitch: Boolean = false, + type: Int = ConstantInt.Type0, @MultipleEntity menuType: Int = MultipleEntity.TEXT ) { val menuTxtBean = MenuTxtBean(name, value, menuType) @@ -795,9 +795,10 @@ class ViewUtil private constructor() { menuTxtBean.imageUrl = imageUrl } if (isSwitch) { - menuTxtBean.isSwitch = isSwitch + menuTxtBean.isSwitch = true } menuTxtBean.colorRedId = colorRedId + menuTxtBean.type = type list.add(menuTxtBean) } @@ -1079,7 +1080,7 @@ class ViewUtil private constructor() { else -> { textView.text = baseActivity.getString(R.string.tracker_manage_set_ble_unconnect) - baseActivity.showToast(R.string.txt_ble_connect_fail, gravity = gravity) +// baseActivity.showToast(R.string.txt_ble_connect_fail, gravity = gravity) } } textView.setBackgroundColor(ContextCompat.getColor(baseActivity, R.color.red_color4)) @@ -1097,7 +1098,7 @@ class ViewUtil private constructor() { R.string.txt_unconnect_no, gravity = gravity ) - else -> baseActivity.showToast(R.string.txt_connect_fail, gravity = gravity) +// else -> baseActivity.showToast(R.string.txt_connect_fail, gravity = gravity) } } @@ -1110,9 +1111,9 @@ class ViewUtil private constructor() { if (btnString == context.getString(R.string.tracker_manage_set_ble_unconnect)) { noConnectCallback() } else if (btnString == context.getString(R.string.tracker_manage_set_ble_connect)) { - operateDialogTips(context, R.string.txt_disconnect_tips) { - SRBleUtil.instance.disconnectToMac(mac) - } +// operateDialogTips(context, R.string.txt_disconnect_tips) { +// SRBleUtil.instance.disconnectToMac(mac) +// } } } diff --git a/app/src/main/java/com/abbidot/tracker/util/bluetooth/SRBleUtil.kt b/app/src/main/java/com/abbidot/tracker/util/bluetooth/SRBleUtil.kt index d41b0e2..cb6b02c 100644 --- a/app/src/main/java/com/abbidot/tracker/util/bluetooth/SRBleUtil.kt +++ b/app/src/main/java/com/abbidot/tracker/util/bluetooth/SRBleUtil.kt @@ -182,6 +182,10 @@ class SRBleUtil private constructor() { }) } + fun isMacConnect(mac: String): Boolean { + return BleManager.getInstance().isConnected(mac) + } + /** * 打开通道通知 */ @@ -240,19 +244,19 @@ class SRBleUtil private constructor() { BleManager.getInstance() .notify(bleDevice, uuid_service, uuid_notify, object : BleNotifyCallback() { override fun onNotifySuccess() { - LogUtil.e("打开蓝牙日志上报通道成功:${bleDevice.name}--${bleDevice.mac}") + LogUtil.e("打开蓝牙上报通道成功:${bleDevice.name}--${bleDevice.mac}") openLogReportNotify(bleDevice, notifyServiceUUID, logNotifyCharacteristicUUID) } override fun onNotifyFailure(exception: BleException?) { - LogUtil.e("打开蓝牙日志上报通道失败:${bleDevice.mac},$exception") + LogUtil.e("打开蓝牙上报通道失败:${bleDevice.mac},$exception") openLogReportNotify(bleDevice, notifyServiceUUID, logNotifyCharacteristicUUID) } override fun onCharacteristicChanged(data: ByteArray?) { data?.apply { val formatData = HexUtil.formatHexString(data, true) - LogUtil.e("接收蓝牙日志上报通道数据:${bleDevice.mac},$formatData") + LogUtil.e("接收蓝牙上报通道数据:${bleDevice.mac},$formatData") val deviceData = ReceiveDeviceData(bleDevice, data, bleDevice.mac) XEventBus.post(EventName.BleReport, deviceData) } diff --git a/app/src/main/java/com/abbidot/tracker/vm/MapViewModel.kt b/app/src/main/java/com/abbidot/tracker/vm/MapViewModel.kt index 1e7af02..f161e03 100644 --- a/app/src/main/java/com/abbidot/tracker/vm/MapViewModel.kt +++ b/app/src/main/java/com/abbidot/tracker/vm/MapViewModel.kt @@ -338,19 +338,21 @@ class MapViewModel : ViewModel() { context.getString(R.string.txt_outside) } } + if (it.powerSwitch == ConstantInt.Type0) menuType = ConstantInt.Close value = context.getString(R.string.txt_smart_power_zone) + ":$wifiZoneValue" } deviceStateList[3].apply { - if (isTimeoutReport || it.lteSignal == ConstantInt.NoSignal || it.powerSwitch == ConstantInt.Type0 || it.powerSwitch == ConstantInt.Type2) { - menuType = ConstantInt.Close -// state = -1 -// value = -// String.format(context.getString(R.string.tracker_manage_set_battery), "--") -// name = "N/A" - } else { - menuType = if (it.batteryLevel > ConstantInt.LowBattery20) ConstantInt.Open - else ConstantInt.Close - } + menuType = + if (isTimeoutReport || it.lteSignal == ConstantInt.NoSignal || it.powerSwitch == ConstantInt.Type0 || it.powerSwitch == ConstantInt.Type2) { + ConstantInt.Close + // state = -1 + // value = + // String.format(context.getString(R.string.tracker_manage_set_battery), "--") + // name = "N/A" + } else { + if (it.batteryLevel > ConstantInt.LowBattery20) ConstantInt.Open + else ConstantInt.Close + } state = Utils.calculatePowerLevel(it.batteryLevel) value = String.format( context.getString(R.string.tracker_manage_set_battery), "${it.batteryLevel}" diff --git a/app/src/main/res/drawable-xhdpi/icon_grey_delete.png b/app/src/main/res/drawable-xhdpi/icon_grey_delete.png new file mode 100644 index 0000000..3b43798 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_grey_delete.png differ diff --git a/app/src/main/res/drawable-xxhdpi/icon_grey_delete.png b/app/src/main/res/drawable-xxhdpi/icon_grey_delete.png new file mode 100644 index 0000000..d3c5915 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/icon_grey_delete.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/icon_grey_delete.png b/app/src/main/res/drawable-xxxhdpi/icon_grey_delete.png new file mode 100644 index 0000000..ac5c45b Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/icon_grey_delete.png differ diff --git a/app/src/main/res/drawable/icon_map_signal_svg.xml b/app/src/main/res/drawable/icon_map_signal_svg.xml deleted file mode 100644 index 0ea824d..0000000 --- a/app/src/main/res/drawable/icon_map_signal_svg.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - diff --git a/app/src/main/res/layout/item_home_pet_device_state.xml b/app/src/main/res/layout/item_home_pet_device_state.xml index 5e6f751..89d51f5 100644 --- a/app/src/main/res/layout/item_home_pet_device_state.xml +++ b/app/src/main/res/layout/item_home_pet_device_state.xml @@ -24,7 +24,7 @@ #EEEFEF #64000000 #F9FFE3 + #A6A6A6 \ No newline at end of file diff --git a/baselibrary/src/main/java/com/abbidot/baselibrary/eventbus/XEventBus.kt b/baselibrary/src/main/java/com/abbidot/baselibrary/eventbus/XEventBus.kt index 9e8a79e..a2fba1e 100644 --- a/baselibrary/src/main/java/com/abbidot/baselibrary/eventbus/XEventBus.kt +++ b/baselibrary/src/main/java/com/abbidot/baselibrary/eventbus/XEventBus.kt @@ -20,14 +20,18 @@ object XEventBus { } fun post(@EventName eventName: String, message: T) { - val eventLiveData = with(eventName) - eventLiveData.postValue(message!!) + message?.let { + val eventLiveData = with(eventName) + eventLiveData.postValue(it) + } } - fun observe(owner: LifecycleOwner, - @EventName eventName: String, - sticky: Boolean = false, - observer: Observer) { + fun observe( + owner: LifecycleOwner, + @EventName eventName: String, + sticky: Boolean = false, + observer: Observer + ) { with(eventName).observe(owner, sticky, observer) } @@ -39,10 +43,12 @@ object XEventBus { /** * 空Message调用 */ - fun observe(owner: LifecycleOwner, - @EventName eventName: String, - sticky: Boolean = false, - observer: () -> Unit) { + fun observe( + owner: LifecycleOwner, + @EventName eventName: String, + sticky: Boolean = false, + observer: () -> Unit + ) { with(eventName).observe(owner, sticky) { observer() }