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 8d462be..23913fa 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 @@ -37,7 +37,7 @@ import com.abbidot.tracker.ui.activity.device.AddNewTracker1Activity import com.abbidot.tracker.ui.fragment.account.AccountV2Fragment import com.abbidot.tracker.ui.fragment.data.ActivityV2Fragment import com.abbidot.tracker.ui.fragment.data.RouteV2Fragment -import com.abbidot.tracker.ui.fragment.map.MapV2Fragment +import com.abbidot.tracker.ui.fragment.map.MapV3Fragment import com.abbidot.tracker.ui.fragment.pet.PetV2Fragment import com.abbidot.tracker.util.BleReportManage import com.abbidot.tracker.util.SocketUtilManage @@ -92,7 +92,7 @@ class HomeV2Activity : BaseActivity(ActivityHomeV2Binding private val mFragments = mutableListOf( ActivityV2Fragment.newInstance(this), RouteV2Fragment.newInstance(this), - MapV2Fragment.newInstance(this), + MapV3Fragment.newInstance(this), PetV2Fragment.newInstance(this), AccountV2Fragment.newInstance(this) ) @@ -338,7 +338,7 @@ class HomeV2Activity : BaseActivity(ActivityHomeV2Binding getPet(false)?.apply { mLogBleReportViewModel.uploadLog(mContext, macID) } - (mFragments[2] as MapV2Fragment).showPetNameAndHead(mSelectPetPosition) + (mFragments[2] as MapV3Fragment).showPetNameAndHead(mSelectPetPosition) } else { onChangeClick(mSelectPetPosition) when (mViewBinding.homeV2ViewPager2.currentItem) { @@ -453,7 +453,7 @@ class HomeV2Activity : BaseActivity(ActivityHomeV2Binding when (mViewBinding.homeV2ViewPager2.currentItem) { 0 -> (mFragments[0] as ActivityV2Fragment).showPetNameAndHead(position) 1 -> (mFragments[1] as RouteV2Fragment).showPetNameAndHead(position) - 2 -> (mFragments[2] as MapV2Fragment).showPetNameAndHead(position) + 2 -> (mFragments[2] as MapV3Fragment).showPetNameAndHead(position) 3 -> (mFragments[3] as PetV2Fragment).showPetNameAndHead(position) } } diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/device/AddPairedSuccessActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/device/AddPairedSuccessActivity.kt index afc1d2c..f456b5f 100644 --- a/app/src/main/java/com/abbidot/tracker/ui/activity/device/AddPairedSuccessActivity.kt +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/device/AddPairedSuccessActivity.kt @@ -126,9 +126,7 @@ class AddPairedSuccessActivity : MMKVUtil.putInt(MMKVKey.isBindDevice, ConstantInt.isBind) XEventBus.post(EventName.RefreshDevice) if (isFirstBind) { - mUserProfileViewModel.updateMeasureUnit( - this@AddPairedSuccessActivity, ConstantInt.Type1 - ) + mUserProfileViewModel.updateMeasureUnit(ConstantInt.Type1) // val intent = Intent(mContext, FirstSetPetTypeActivity::class.java) // intent.putExtra(ConstantString.isFirstBind, isFirstBind) // startActivityFinish(intent) diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/map/LiveActivityV2.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/map/LiveActivityV2.kt index 537af22..61807dd 100644 --- a/app/src/main/java/com/abbidot/tracker/ui/activity/map/LiveActivityV2.kt +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/map/LiveActivityV2.kt @@ -136,7 +136,7 @@ class LiveActivityV2 : BaseActivity(ActivityLiveV2Binding mFragment = mHomeMapCommon.getMapFragment( mContext, miLiveV2MapAddressView, dnLiveV2MapNetView ) { mapLoadOk() } - dnLiveV2MapNetView.setShowNetType(MapDeviceNetView.WIFI_NET_TYPE) + dnLiveV2MapNetView.setShowNetType(MapDeviceNetView.NO_NET_TYPE) ViewUtil.instance.setMapSwitchLocationButtonImage( ivMapLiveV2RefreshBtn, mShowCenterLocation ) diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/pet/first/FirstMeasurementUnitsActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/pet/first/FirstMeasurementUnitsActivity.kt index 93754ba..be7653a 100644 --- a/app/src/main/java/com/abbidot/tracker/ui/activity/pet/first/FirstMeasurementUnitsActivity.kt +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/pet/first/FirstMeasurementUnitsActivity.kt @@ -152,7 +152,7 @@ class FirstMeasurementUnitsActivity : }) btnFirstMeasurementUnitsSave -> mUserProfileViewModel.updateMeasureUnit( - this@FirstMeasurementUnitsActivity, mMeasurementUnit + mMeasurementUnit ) } } diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/ChoosePlanActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/ChoosePlanActivity.kt index 3b2fdf9..20d3393 100644 --- a/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/ChoosePlanActivity.kt +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/ChoosePlanActivity.kt @@ -56,7 +56,7 @@ class ChoosePlanActivity : if (packageTypeName == "Basic") { setTopBarTitle(R.string.txt_basic_plan) } else { - setTopBarTitle(R.string.txt_premium_plan) + setTopBarTitle(R.string.txt_choose_your_plan) } } setLeftBackImage(R.drawable.icon_white_back_svg) diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/PaymentSuccessActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/PaymentSuccessActivity.kt index 7094bf4..5132c91 100644 --- a/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/PaymentSuccessActivity.kt +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/PaymentSuccessActivity.kt @@ -241,8 +241,7 @@ class PaymentSuccessActivity : XEventBus.post(EventName.PayBack) mPayResult?.let { if (it.rechargeType == ConstantInt.Type0) { - mUserProfileViewModel.updateMeasureUnit( - this@PaymentSuccessActivity, ConstantInt.Type1 + mUserProfileViewModel.updateMeasureUnit( ConstantInt.Type1 ) // val intent = Intent(mContext, FirstSetPetTypeActivity::class.java) diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/RequestRefundActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/RequestRefundActivity.kt index e27e43f..024c721 100644 --- a/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/RequestRefundActivity.kt +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/RequestRefundActivity.kt @@ -57,6 +57,7 @@ class RequestRefundActivity : override fun onResult(any: Any) { it.getOrNull()?.apply { if (isCanRefund == ConstantInt.Type0) { + XEventBus.post(EventName.RefreshPackage) showToast(R.string.txt_successful, true) } else { mSetMealBean?.let { meal -> diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/SubscriptionPlanActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/SubscriptionPlanActivity.kt index 97e9b08..8bd407c 100644 --- a/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/SubscriptionPlanActivity.kt +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/SubscriptionPlanActivity.kt @@ -42,7 +42,7 @@ class SubscriptionPlanActivity : override fun initData() { super.initData() - setTopBarTitle(R.string.txt_choose_your_plan) + setTopBarTitle(R.string.txt_activate_subscribe) setLeftBackImage(R.drawable.icon_white_back_svg) intent.extras?.apply { diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/account/AccountV2Fragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/account/AccountV2Fragment.kt index 2d12bdf..18c851a 100644 --- a/app/src/main/java/com/abbidot/tracker/ui/fragment/account/AccountV2Fragment.kt +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/account/AccountV2Fragment.kt @@ -45,7 +45,6 @@ class AccountV2Fragment : private lateinit var mMenuAdapter: HomeAccountMenuAdapter private lateinit var mMenuList: MutableList - private lateinit var mHomeV2Activity: HomeV2Activity private var mMeasurementUnit = 1 companion object { @@ -56,9 +55,8 @@ class AccountV2Fragment : } override fun initData() { - mHomeV2Activity = activity as HomeV2Activity mViewBinding.apply { - mHomeV2Activity.edgeToEdgeAdapterBars( + getHomeV2Activity()?.edgeToEdgeAdapterBars( llHomeAccountLayout, WindowInsetsCompat.Type.statusBars() ) llHomeAccountTopUser.let { @@ -92,15 +90,25 @@ class AccountV2Fragment : mUserViewModel = ViewModelProvider(this)[UserProfileViewModel::class.java] mNotificationsViewModel = ViewModelProvider(this)[NotificationsViewModel::class.java] - mUserViewModel.getUserInfo(mHomeV2Activity) + getHomeV2Activity()?.apply { + mUserViewModel.getUserInfo(this) + } + } + + private fun getHomeV2Activity(): HomeV2Activity? { + return if (null == activity) { + LogUtil.e("AccountV2Fragment,getHomeV2Activity,null == activity") + null + } else { + activity as HomeV2Activity + } } override fun onResume() { super.onResume() - activity?.apply { - mHomeV2Activity = this as HomeV2Activity + getHomeV2Activity()?.apply { + mNotificationsViewModel.getMessageList(this) } - mNotificationsViewModel.getMessageList(mHomeV2Activity) } private fun addListData() { @@ -180,7 +188,9 @@ class AccountV2Fragment : override fun liveDataObserve() { XEventBus.observe(viewLifecycleOwner, EventName.UpdateUserInfo) { - mUserViewModel.getUserInfo(mHomeV2Activity) + getHomeV2Activity()?.let { + mUserViewModel.getUserInfo(it) + } } XEventBus.observe(viewLifecycleOwner, EventName.RefreshMessage) { getMessageCount() @@ -244,7 +254,7 @@ class AccountV2Fragment : for (message in this) { if (message.isRead) noReadNum-- } - mHomeV2Activity.runOnUiThread { + getHomeV2Activity()?.runOnUiThread { mViewBinding.homeAccountMessageCountText.let { if (noReadNum > 0) it.visibility = View.VISIBLE else it.visibility = View.GONE @@ -258,7 +268,7 @@ class AccountV2Fragment : fun setMeasureUnit(measurementUnit: Int) { mMeasurementUnit = measurementUnit - mUserViewModel.updateMeasureUnit(mHomeV2Activity, measurementUnit) + mUserViewModel.updateMeasureUnit(measurementUnit) } override fun onClick(v: View?) { diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/data/ActivityV2Fragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/data/ActivityV2Fragment.kt index a1a6025..837bc4d 100644 --- a/app/src/main/java/com/abbidot/tracker/ui/fragment/data/ActivityV2Fragment.kt +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/data/ActivityV2Fragment.kt @@ -10,6 +10,7 @@ import androidx.core.view.WindowInsetsCompat import androidx.lifecycle.ViewModelProvider import com.abbidot.baselibrary.constant.MMKVKey import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.baselibrary.util.LogUtil import com.abbidot.baselibrary.util.MMKVUtil import com.abbidot.baselibrary.util.Utils import com.abbidot.tracker.R @@ -37,8 +38,6 @@ class ActivityV2Fragment : private lateinit var mDataViewModel: DataViewModel - private lateinit var mHomeV2Activity: HomeV2Activity - //当前这个页面显示的宠物下标 private var mCurrentShowPetPos = -1 @@ -52,12 +51,11 @@ class ActivityV2Fragment : } override fun initData() { - mHomeV2Activity = activity as HomeV2Activity mToday = Utils.getCurrentTime(Utils.DATE_FORMAT_PATTERN_CN) mViewBinding.apply { - mHomeV2Activity.edgeToEdgeAdapterBars( + getHomeV2Activity()?.edgeToEdgeAdapterBars( svHomeActivityScroll, WindowInsetsCompat.Type.statusBars() ) @@ -78,7 +76,7 @@ class ActivityV2Fragment : } override fun onRefresh() { - mHomeV2Activity.getPet()?.apply { + getHomeV2Activity()?.getPet()?.apply { mDataViewModel.getHomeDeviceData(deviceId, mToday, petId) } } @@ -94,7 +92,7 @@ class ActivityV2Fragment : if (AppUtils.isDebug()) { ilHomeActivityTopPet.homeDataPetHeadSmall.root.setOnLongClickListener { - mHomeV2Activity.goToDebugActivity() + getHomeV2Activity()?.goToDebugActivity() true } } @@ -110,6 +108,15 @@ class ActivityV2Fragment : initHomeData() } + private fun getHomeV2Activity(): HomeV2Activity? { + return if (null == activity) { + LogUtil.e("ActivityV2Fragment,getHomeV2Activity,null == activity") + null + } else { + activity as HomeV2Activity + } + } + private fun initHomeData() { val goal = MMKVUtil.getInt(MMKVKey.ActivityGoal) @@ -138,16 +145,15 @@ class ActivityV2Fragment : override fun onResume() { super.onResume() - activity?.apply { - mHomeV2Activity = this as HomeV2Activity - } - if (mCurrentShowPetPos == mHomeV2Activity.mSelectPetPosition) { - mHomeV2Activity.getPet()?.apply { - mDataViewModel.getHomeDeviceData(deviceId, mToday, petId) + getHomeV2Activity()?.let { + if (mCurrentShowPetPos == it.mSelectPetPosition) { + it.getPet()?.apply { + mDataViewModel.getHomeDeviceData(deviceId, mToday, petId) + } + } else { + //其他页面是否选择了宠物 + showPetNameAndHead(it.mSelectPetPosition) } - } else { - //其他页面是否选择了宠物 - showPetNameAndHead(mHomeV2Activity.mSelectPetPosition) } } @@ -260,30 +266,28 @@ class ActivityV2Fragment : * 显示选择的宠物 */ fun showPetNameAndHead(position: Int) { - //变量初始化 - if (!::mHomeV2Activity.isInitialized) { - return - } - if (mHomeV2Activity.mPetList.size == 0) { - return - } - mCurrentShowPetPos = position + getHomeV2Activity()?.let { + if (it.mPetList.size == 0) { + return + } + mCurrentShowPetPos = position - ViewUtil.instance.selectPetDialogShow( - mContext!!, - mHomeV2Activity.mPetList, - position, - mViewBinding.ilHomeActivityTopPet.homeDataPetNameSmall, - mViewBinding.ilHomeActivityTopPet.homeDataPetHeadSmall.appHeadImage - ) + ViewUtil.instance.selectPetDialogShow( + mContext!!, + it.mPetList, + position, + mViewBinding.ilHomeActivityTopPet.homeDataPetNameSmall, + mViewBinding.ilHomeActivityTopPet.homeDataPetHeadSmall.appHeadImage + ) - mHomeV2Activity.getPet()?.apply { - mDataViewModel.getHomeDeviceData(deviceId, mToday, petId) + it.getPet()?.apply { + mDataViewModel.getHomeDeviceData(deviceId, mToday, petId) + } } } private fun goActivityNeedPet(cls: Class<*>) { - mHomeV2Activity.getPet()?.apply { + getHomeV2Activity()?.getPet()?.apply { Intent(mContext, cls).let { it.putExtra(ConstantString.Pet, this) startActivity(it) @@ -294,7 +298,7 @@ class ActivityV2Fragment : override fun onClick(v: View?) { mViewBinding.apply { when (v!!) { - ilHomeActivityTopPet.ivTopPetBtnSmall -> mHomeV2Activity.getPet()?.apply { + ilHomeActivityTopPet.ivTopPetBtnSmall -> getHomeV2Activity()?.getPet()?.apply { ViewUtil.instance.viewAlphaAndRotationObjectAnimator(v) mDataViewModel.getHomeDeviceData(deviceId, mToday, petId) } @@ -303,7 +307,7 @@ class ActivityV2Fragment : btnHomeMoreSleep -> goActivityNeedPet(MoreSleepActivity::class.java) - ilHomeActivityTopPet.homeDataPetNameSmall, ilHomeActivityTopPet.homeDataPetHeadSmall.root -> mHomeV2Activity.selectPetDialog() + ilHomeActivityTopPet.homeDataPetNameSmall, ilHomeActivityTopPet.homeDataPetHeadSmall.root -> getHomeV2Activity()?.selectPetDialog() } } diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/data/RouteV2Fragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/data/RouteV2Fragment.kt index c181231..bce267c 100644 --- a/app/src/main/java/com/abbidot/tracker/ui/fragment/data/RouteV2Fragment.kt +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/data/RouteV2Fragment.kt @@ -13,6 +13,7 @@ import com.abbidot.baselibrary.constant.EventName import com.abbidot.baselibrary.constant.MMKVKey import com.abbidot.baselibrary.eventbus.XEventBus import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.baselibrary.util.LogUtil import com.abbidot.baselibrary.util.MMKVUtil import com.abbidot.baselibrary.util.Utils import com.abbidot.tracker.R @@ -43,8 +44,6 @@ class RouteV2Fragment : BaseFragment(FragmentRouteV2Bind private val mDataDetailViewModel: DataDetailViewModel by viewModels() private val mGeoCoderViewModel: GeoCoderViewModel by viewModels() - private lateinit var mHomeV2Activity: HomeV2Activity - private lateinit var mFragment: Fragment private var mFromCalenderDialog: ShowCalenderAndTimeDialog? = null @@ -81,9 +80,8 @@ class RouteV2Fragment : BaseFragment(FragmentRouteV2Bind } override fun initData() { - mHomeV2Activity = activity as HomeV2Activity mViewBinding.apply { - mHomeV2Activity.edgeToEdgeAdapterBars( + getHomeV2Activity()?.edgeToEdgeAdapterBars( root, WindowInsetsCompat.Type.statusBars() ) mFragment = mHistoryDataMapCommon.getMapFragment( @@ -112,7 +110,7 @@ class RouteV2Fragment : BaseFragment(FragmentRouteV2Bind if (AppUtils.isDebug()) { ilHomeRoutePetHead.homeDataPetHeadSmall.root.setOnLongClickListener { - mHomeV2Activity.goToDebugActivity() + getHomeV2Activity()?.goToDebugActivity() true } } @@ -132,6 +130,15 @@ class RouteV2Fragment : BaseFragment(FragmentRouteV2Bind initState() } + private fun getHomeV2Activity(): HomeV2Activity? { + return if (null == activity) { + LogUtil.e("RouteV2Fragment,getHomeV2Activity,null == activity") + null + } else { + activity as HomeV2Activity + } + } + /** * 一开始获取24小时内的数据 */ @@ -211,24 +218,23 @@ class RouteV2Fragment : BaseFragment(FragmentRouteV2Bind override fun onResume() { super.onResume() - activity?.apply { - mHomeV2Activity = this as HomeV2Activity - } //续费成功后,不执行 if (mRechargeBackType == ConstantInt.Type1) { return } - if (mCurrentShowPetPos == mHomeV2Activity.mSelectPetPosition) { - if (!isSelectCustomDate) { - if (mHistoryDataMapCommon.isMapLoadOk()) { - get24HourTime() - getHistoryDay(mViewBinding.tvHomeRouteCalendarFrom) + getHomeV2Activity()?.apply { + if (mCurrentShowPetPos == mSelectPetPosition) { + if (!isSelectCustomDate) { + if (mHistoryDataMapCommon.isMapLoadOk()) { + get24HourTime() + getHistoryDay(mViewBinding.tvHomeRouteCalendarFrom) + } } + } else { + //其他页面是否选择了宠物 + if (!isSelectCustomDate) get24HourTime() + showPetNameAndHead(mSelectPetPosition) } - } else { - //其他页面是否选择了宠物 - if (!isSelectCustomDate) get24HourTime() - showPetNameAndHead(mHomeV2Activity.mSelectPetPosition) } } @@ -290,7 +296,9 @@ class RouteV2Fragment : BaseFragment(FragmentRouteV2Bind */ private fun mapLoadOk() { if (mCurrentShowPetPos == -1) return - showPetNameAndHead(mHomeV2Activity.mSelectPetPosition) + getHomeV2Activity()?.apply { + showPetNameAndHead(mSelectPetPosition) + } } /** @@ -304,38 +312,36 @@ class RouteV2Fragment : BaseFragment(FragmentRouteV2Bind * 显示选择的宠物 */ fun showPetNameAndHead(position: Int) { - //变量初始化 - if (!::mHomeV2Activity.isInitialized) { - return - } - if (mHomeV2Activity.mPetList.size == 0) { - return - } - mCurrentShowPetPos = position + getHomeV2Activity()?.apply { + if (mPetList.size == 0) { + return + } + mCurrentShowPetPos = position - ViewUtil.instance.selectPetDialogShow( - mContext!!, - mHomeV2Activity.mPetList, - position, - mViewBinding.ilHomeRoutePetHead.homeDataPetNameSmall, - mViewBinding.ilHomeRoutePetHead.homeDataPetHeadSmall.appHeadImage - ) + ViewUtil.instance.selectPetDialogShow( + mContext, + mPetList, + position, + mViewBinding.ilHomeRoutePetHead.homeDataPetNameSmall, + mViewBinding.ilHomeRoutePetHead.homeDataPetHeadSmall.appHeadImage + ) - if (mHistoryDataMapCommon.isMapLoadOk()) { - getHistoryDay(mViewBinding.tvHomeRouteCalendarFrom) + if (mHistoryDataMapCommon.isMapLoadOk()) { + getHistoryDay(mViewBinding.tvHomeRouteCalendarFrom) + } } } private fun setLatLngData(data: MutableList) { viewLifecycleOwner.lifecycleScope.launch { mHistoryDataList = data - mHomeV2Activity.getPet(false)?.let { + getHomeV2Activity()?.getPet(false)?.let { mHistoryDataMapCommon.setPetBean(it) } if (isResumed) { - mHomeV2Activity.getPet()?.let { pet -> - if (Util.checkPackageLimit(mHomeV2Activity, pet.deviceId)) { + getHomeV2Activity()?.getPet()?.let { pet -> + if (Util.checkPackageLimit(getHomeV2Activity()!!, pet.deviceId)) { mRechargeBackType = pet.availableOrder mHistoryDataMapCommon.setPetUserLatLng() return@launch @@ -381,11 +387,11 @@ class RouteV2Fragment : BaseFragment(FragmentRouteV2Bind checkCorrectDate(cSelectView) } - mHomeV2Activity.getPet()?.apply { + getHomeV2Activity()?.getPet()?.apply { initState() mViewBinding.miHomeRouteAddressView.visibility = View.GONE mDataDetailViewModel.getHistoryByDay( - mHomeV2Activity, deviceId, mFromTimestamp / 1000, mToTimestamp / 1000 + getHomeV2Activity()!!, deviceId, mFromTimestamp / 1000, mToTimestamp / 1000 ) } } @@ -426,15 +432,15 @@ class RouteV2Fragment : BaseFragment(FragmentRouteV2Bind // mContext, NotificationV2Activity::class.java // ) // ) - ilHomeRoutePetHead.homeDataPetNameSmall, ilHomeRoutePetHead.homeDataPetHeadSmall.root -> mHomeV2Activity.selectPetDialog() + ilHomeRoutePetHead.homeDataPetNameSmall, ilHomeRoutePetHead.homeDataPetHeadSmall.root -> getHomeV2Activity()?.selectPetDialog() llHomeRouteCalendarFrom -> { - mHomeV2Activity.getPet()?.let { + getHomeV2Activity()?.getPet()?.let { //防止执行多次弹窗 if (Util.isTimeLimit(mLimitExecutionTime)) { return@apply } - if (Util.checkPackageLimit(mHomeV2Activity, it.deviceId)) { + if (Util.checkPackageLimit(getHomeV2Activity()!!, it.deviceId)) { mRechargeBackType = it.availableOrder mLimitExecutionTime = System.currentTimeMillis() return@apply @@ -458,12 +464,12 @@ class RouteV2Fragment : BaseFragment(FragmentRouteV2Bind } llHomeRouteCalendarTo -> { - mHomeV2Activity.getPet()?.let { + getHomeV2Activity()?.getPet()?.let { //防止执行多次弹窗 if (Util.isTimeLimit(mLimitExecutionTime)) { return@apply } - if (Util.checkPackageLimit(mHomeV2Activity, it.deviceId)) { + if (Util.checkPackageLimit(getHomeV2Activity()!!, it.deviceId)) { mRechargeBackType = it.availableOrder mLimitExecutionTime = System.currentTimeMillis() return@apply 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 ac68c09..d74f7ab 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 @@ -68,8 +68,6 @@ class HomeTrackFragment : private val mDeviceDFUViewModel: DeviceDFUViewModel by viewModels() private val mDownLoadFileViewModel: DownLoadFileViewModel by viewModels() - private lateinit var mHomeV2Activity: HomeV2Activity - private lateinit var mHomePetTrackStateAdapter: HomePetTrackStateAdapter private lateinit var mTrackStateList: MutableList @@ -101,7 +99,6 @@ class HomeTrackFragment : } override fun initData() { - mHomeV2Activity = activity as HomeV2Activity mViewBinding.apply { root.setBackgroundResource(R.color.transparent) addListData() @@ -142,7 +139,7 @@ class HomeTrackFragment : mFencesAdapter = FencesZoneAdapter(mContext!!, mFencesList, false).apply { setOnItemClickListener(object : BaseRecyclerAdapter.OnItemClickListener { override fun onItemClick(itemView: View?, pos: Int) { - mHomeV2Activity.getPet()?.apply { + getHomeV2Activity()?.getPet()?.apply { goPetDataActivity(VirtualFencesActivity::class.java) } } @@ -151,8 +148,8 @@ class HomeTrackFragment : override fun onAgainListener() { val share = MMKVUtil.getInt(MMKVKey.Shared) if (share == ConstantInt.NoShare) { - mHomeV2Activity.getPet()?.let { pet -> - if (Util.checkPackageLimit(mHomeV2Activity, pet.deviceId)) { + getHomeV2Activity()?.getPet()?.let { pet -> + if (Util.checkPackageLimit(getHomeV2Activity()!!, pet.deviceId)) { return } } @@ -202,10 +199,19 @@ class HomeTrackFragment : getPetTrackerInfoData() } + private fun getHomeV2Activity(): HomeV2Activity? { + return if (null == activity) { + LogUtil.e("HomeTrackFragment,getHomeV2Activity,null == activity") + null + } else { + activity as HomeV2Activity + } + } + override fun liveDataObserve() { //接收蓝牙连接状态 XEventBus.observe(this, EventName.ConnectDeviceState) { ble: BleTrackDeviceBean -> - mHomeV2Activity.getPet()?.apply { + getHomeV2Activity()?.getPet()?.apply { if (ble.mac == macID) { updateConState(ble) } @@ -213,7 +219,7 @@ class HomeTrackFragment : } //接收开蓝牙操作,然后搜索连接设备 XEventBus.observe(this, EventName.ActionConDeviceState) { conState: Int -> - mHomeV2Activity.getPet()?.apply { + getHomeV2Activity()?.getPet()?.apply { if (BleManager.getInstance().isConnected(macID)) return@apply if (conState == ConState.CONNECTING || conState == ConState.CONNECTING_MAC) { mTrackStateList[4].apply { @@ -243,7 +249,7 @@ class HomeTrackFragment : } //蓝牙上报的数据 XEventBus.observe(this, EventName.BleReportData) { reportData: BleReportDataBean -> - mHomeV2Activity.getPet(false)?.apply { + getHomeV2Activity()?.getPet(false)?.apply { if (macID == reportData.mac) updateBleReportData(reportData) } } @@ -306,9 +312,11 @@ class HomeTrackFragment : mDFUNewDialogDialog?.setDFUProgress(100) isDFUCallback = true mBleTrackDeviceBean?.let { ble -> - mConnectionDeviceViewModel.connectDeviceToMac( - mHomeV2Activity, ble.mac, false - ) + getHomeV2Activity()?.apply { + mConnectionDeviceViewModel.connectDeviceToMac( + this, ble.mac, false + ) + } } } else if (progress == mDeviceDFUViewModel.mDFUFailCode) { // mTrackerDFUStateDialog?.dismiss() @@ -351,46 +359,44 @@ class HomeTrackFragment : } fun getPetTrackerInfoData() { - //变量初始化 - if (!::mHomeV2Activity.isInitialized) { - return - } - mHomeV2Activity.getPet()?.apply { + getHomeV2Activity()?.let { + it.getPet()?.apply { // mViewBinding.ivHomePetTrackPetHead.load(imgurl) - mTrackerInfoViewModel.getPetTrackerInfo(mHomeV2Activity, deviceId) + mTrackerInfoViewModel.getPetTrackerInfo(it, deviceId) - mTrackMenuList[1].menuValue = "" - mTrackMenuList[2].menuValue = "" + mTrackMenuList[1].menuValue = "" + mTrackMenuList[2].menuValue = "" - getBleTrackDeviceBean(false)?.let { ble -> - if (BleManager.getInstance().isConnected(macID)) { - //获取固件版本号 - if (null == mFirmwareBean) { - SRBleUtil.instance.writeData( - ble.bleDevice, SRBleCmdUtil.instance.getFirmwareVersion() - ) - } else { - //只有新的设备,回到这个界面才去检查dfu - if (mFirmwareBean?.mac != ble.mac) { - mTrackMenuList[3].menuValue = "" - mTrackMenuList[3].isSwitch = false + getBleTrackDeviceBean(false)?.let { ble -> + if (BleManager.getInstance().isConnected(macID)) { + //获取固件版本号 + if (null == mFirmwareBean) { SRBleUtil.instance.writeData( ble.bleDevice, SRBleCmdUtil.instance.getFirmwareVersion() ) + } else { + //只有新的设备,回到这个界面才去检查dfu + if (mFirmwareBean?.mac != ble.mac) { + mTrackMenuList[3].menuValue = "" + mTrackMenuList[3].isSwitch = false + SRBleUtil.instance.writeData( + ble.bleDevice, SRBleCmdUtil.instance.getFirmwareVersion() + ) + } } + } else { + mFirmwareBean = null + mTrackMenuList[3].menuValue = "" + mTrackMenuList[3].isSwitch = false } - } else { + } + if (null == mBleTrackDeviceBean) { mFirmwareBean = null mTrackMenuList[3].menuValue = "" mTrackMenuList[3].isSwitch = false } + mTrackMenuAdapter.notifyItemRangeChanged(1, 3) } - if (null == mBleTrackDeviceBean) { - mFirmwareBean = null - mTrackMenuList[3].menuValue = "" - mTrackMenuList[3].isSwitch = false - } - mTrackMenuAdapter.notifyItemRangeChanged(1, 3) } } @@ -724,7 +730,7 @@ class HomeTrackFragment : mTrackMenuList[3].menuValue = strVersion mTrackMenuList[3].isSwitch = false mTrackMenuAdapter.notifyItemChanged(3) - mDeviceDFUViewModel.getFirmware(mHomeV2Activity, false) + mDeviceDFUViewModel.getFirmware() mBleTrackDeviceBean?.apply { SRBleUtil.instance.writeData( bleDevice, SRBleCmdUtil.instance.ledState(SRBleCmdUtil.CMD_READ, 0) @@ -755,7 +761,7 @@ class HomeTrackFragment : } } else if (data0 == 4 && data1 == 1 && data2 == 0) { mMapDeviceBean?.let { - mTrackerSetViewModel.turnOff(mHomeV2Activity, it.deviceServerId) + mTrackerSetViewModel.turnOff(it.deviceServerId) } mTrackMenuList[1].menuValue = "" mTrackMenuList[2].menuValue = "" @@ -773,7 +779,7 @@ class HomeTrackFragment : } fun goPetDataActivity(cls: Class<*>) { - mHomeV2Activity.getPet()?.apply { + getHomeV2Activity()?.getPet()?.apply { val intent = Intent(mContext, cls) intent.putExtra(ConstantString.Pet, this) startActivity(intent) @@ -792,7 +798,7 @@ class HomeTrackFragment : * 获取当前宠物的连接设备 */ private fun getBleTrackDeviceBean(isShowBleUnConTip: Boolean = true): BleTrackDeviceBean? { - mHomeV2Activity.getPet()?.apply { + getHomeV2Activity()?.getPet()?.apply { if (null == mBleTrackDeviceBean) { mBleTrackDeviceBean = SRBleUtil.instance.getConnectMacDevice(macID) } else { @@ -829,8 +835,10 @@ class HomeTrackFragment : private fun connectionBtn(btnString: String) { if (btnString == getString(R.string.txt_unconnect_no)) { Util.checkBluetoothPermissionsEnabled(mContext!!, { - mHomeV2Activity.getPet()?.apply { - mConnectionDeviceViewModel.connectDeviceToMac(mHomeV2Activity, macID, false) + getHomeV2Activity()?.getPet()?.apply { + mConnectionDeviceViewModel.connectDeviceToMac( + getHomeV2Activity()!!, macID, false + ) } }) } else if (btnString == getString(R.string.txt_connected)) { @@ -926,27 +934,20 @@ class HomeTrackFragment : override fun onResume() { super.onResume() - activity?.apply { - mHomeV2Activity = this as HomeV2Activity + getHomeV2Activity()?.apply { + DfuServiceListenerHelper.registerProgressListener( + mContext, mDeviceDFUViewModel.mDfuProgressListener + ) } - //变量初始化 - if (!::mHomeV2Activity.isInitialized) { - return - } - DfuServiceListenerHelper.registerProgressListener( - mContext!!, mDeviceDFUViewModel.mDfuProgressListener - ) } override fun onPause() { super.onPause() - //变量初始化 - if (!::mHomeV2Activity.isInitialized) { - return + getHomeV2Activity()?.apply { + DfuServiceListenerHelper.unregisterProgressListener( + mContext, mDeviceDFUViewModel.mDfuProgressListener + ) } - DfuServiceListenerHelper.unregisterProgressListener( - mContext!!, mDeviceDFUViewModel.mDfuProgressListener - ) } diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/map/MapV2Fragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/MapV2Fragment.kt index e51726c..65d0f87 100644 --- a/app/src/main/java/com/abbidot/tracker/ui/fragment/map/MapV2Fragment.kt +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/MapV2Fragment.kt @@ -117,7 +117,7 @@ class MapV2Fragment : BaseFragment(FragmentMapV2Binding::i mContext!!, miHomeMapAddressView, dnHomeMapNetView ) { mapLoadOk() } - dnHomeMapNetView.setShowNetType(MapDeviceNetView.WIFI_NET_TYPE) + dnHomeMapNetView.setShowNetType(MapDeviceNetView.NO_NET_TYPE) llHomeMapTopPet.ivTopPetBtnSmall.setImageResource(R.drawable.icon_map_type) ViewUtil.instance.setMapSwitchLocationButtonImage( @@ -521,6 +521,7 @@ class MapV2Fragment : BaseFragment(FragmentMapV2Binding::i ) if (mHomeMapCommon.isMapLoadOk()) { + isMoveCamera=true mHomeMapCommon.clearMarker() mViewBinding.miHomeMapAddressView.visibility = View.GONE mViewBinding.rvHomeMapDeviceMsg.visibility = View.GONE 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 new file mode 100644 index 0000000..53205ba --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/MapV3Fragment.kt @@ -0,0 +1,662 @@ +package com.abbidot.tracker.ui.fragment.map + +import android.content.Context +import android.content.Intent +import android.location.LocationManager +import android.provider.Settings +import android.view.View +import androidx.core.view.WindowInsetsCompat +import androidx.fragment.app.Fragment +import androidx.fragment.app.commit +import androidx.fragment.app.viewModels +import androidx.lifecycle.lifecycleScope +import com.abbidot.baselibrary.constant.ConState +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.adapter.HomeMapDeviceMsgAdapter +import com.abbidot.tracker.adapter.HomeMapDeviceStateAdapter +import com.abbidot.tracker.base.BaseDialog +import com.abbidot.tracker.base.BaseFragment +import com.abbidot.tracker.bean.BleReportDataBean +import com.abbidot.tracker.bean.BleTrackDeviceBean +import com.abbidot.tracker.bean.DataBean +import com.abbidot.tracker.bean.FamilyBean +import com.abbidot.tracker.bean.MapDeviceBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.database.MyDatabase +import com.abbidot.tracker.databinding.FragmentMapV3Binding +import com.abbidot.tracker.dialog.CommonDialog1 +import com.abbidot.tracker.dialog.SelectMapTypeDialog +import com.abbidot.tracker.ui.activity.HomeV2Activity +import com.abbidot.tracker.ui.activity.device.MyTrackerV2Activity +import com.abbidot.tracker.ui.activity.map.LiveActivityV2 +import com.abbidot.tracker.ui.common.map.HomeMapCommon +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.util.bluetooth.SRBleUtil +import com.abbidot.tracker.vm.FamilyViewModel +import com.abbidot.tracker.vm.FencesMapViewModel +import com.abbidot.tracker.vm.MapViewModel +import com.abbidot.tracker.widget.MapDeviceNetView +import com.clj.fastble.BleManager +import com.hjq.permissions.XXPermissions +import com.hjq.permissions.permission.PermissionLists +import dagger.hilt.android.AndroidEntryPoint +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import javax.inject.Inject + + +/** + * 首页map + * create an instance of this fragment. + */ +@AndroidEntryPoint +class MapV3Fragment : BaseFragment(FragmentMapV3Binding::inflate) { + + private val mFencesMapViewModel: FencesMapViewModel by viewModels() + private val mMapViewModel: MapViewModel by viewModels() + private val mFamilyViewModel: FamilyViewModel by viewModels() + + private lateinit var mLocationManager: LocationManager + + private var mSelectMapTypeDialog: SelectMapTypeDialog? = null + + //当前这个页面显示的宠物下标 + private var mCurrentShowPetPos = -1 + + @Inject + lateinit var mHomeMapCommon: HomeMapCommon + private lateinit var mFragment: Fragment + private var mMapDeviceBean: MapDeviceBean? = null + + private lateinit var mDeviceStateList: MutableList + private lateinit var mDeviceStateAdapter: HomeMapDeviceStateAdapter + private lateinit var mDeviceMsgList: MutableList + private lateinit var mDeviceMsgAdapter: HomeMapDeviceMsgAdapter + + //启动移动地图摄像机 + private var isMoveCamera = true + private var mShowCenterLocationType = ConstantInt.PetLocationType + + //是否显示围栏 + private var isShowFence = true + + //地图类型,标准和卫星地图 + private var mMapType = ConstantInt.Type0 + + companion object { + @JvmStatic + fun newInstance(context: Context) = MapV3Fragment().apply { + mContext = context + } + } + + override fun initData() { + mLocationManager = mContext!!.getSystemService(Context.LOCATION_SERVICE) as LocationManager + getHomeV2Activity()?.apply { + mCurrentShowPetPos = mSelectPetPosition + } + + isShowFence = Util.getShowFenceSp() + + mViewBinding.apply { + getHomeV2Activity()?.edgeToEdgeAdapterBars( + rlHomeMapTopLayout, WindowInsetsCompat.Type.statusBars() + ) + mFragment = mHomeMapCommon.getMapFragment( + mContext!!, miHomeMapAddressView, MapDeviceNetView(mContext!!) + ) { mapLoadOk() } + + llHomeMapTopPet.ivTopPetBtnSmall.setImageResource(R.drawable.icon_map_type) + + ViewUtil.instance.setMapSwitchLocationButtonImage( + homeMapRefreshBtn, mShowCenterLocationType + ) + + mDeviceStateList = mutableListOf() + mDeviceMsgList = mutableListOf() + mMapViewModel.addDeviceDefaultStateData(mContext!!, mDeviceStateList) + mDeviceStateAdapter = HomeMapDeviceStateAdapter(mContext!!, mDeviceStateList) + ViewUtil.instance.setRecyclerViewVerticalLinearLayout( + mContext!!, rvHomeMapDeviceState, mDeviceStateAdapter, bottom = 10 + ) + + mDeviceMsgAdapter = HomeMapDeviceMsgAdapter(mContext!!, mDeviceMsgList) + ViewUtil.instance.setRecyclerViewVerticalLinearLayout( + mContext!!, rvHomeMapDeviceMsg, mDeviceMsgAdapter, bottom = 10 + ) + + setOnClickListenerViews( + homeMapRefreshBtn, + homeMapBluetoothBtn, + homeMapLiveBtn, + llHomeMapTopPet.ivTopPetBtnSmall, + llHomeMapTopPet.homeDataPetNameSmall, + llHomeMapTopPet.homeDataPetHeadSmall.root + ) + + if (AppUtils.isDebug()) { + llHomeMapTopPet.homeDataPetHeadSmall.appHeadImage.setOnLongClickListener { + getHomeV2Activity()?.goToDebugActivity() + true + } + } + } + + //解决报错java.lang.IllegalArgumentException + //No view found for id 0x7f090254 (com.abbidot.tracker:id/fc_home_map_fragment) for fragment HomeMapGoogleMapFragment + //https://www.jianshu.com/p/9235092f407a + childFragmentManager.commit { + add(R.id.fc_home_map_fragment, mFragment) + } +// (mActivity as FragmentActivity).supportFragmentManager.commit { +// add(R.id.fc_home_map_fragment, mFragment) +// } + + locationPermissionsTip(1) + } + + override fun onResume() { + super.onResume() + + getHomeV2Activity()?.apply { + //其他页面是否选择了宠物 + if (mCurrentShowPetPos != mSelectPetPosition) { + showPetNameAndHead(mSelectPetPosition) + } + } + + mViewBinding.apply { + homeMapLiveBtn.isEnabled = true + homeMapBluetoothBtn.isEnabled = true + } + + val showFence = Util.getShowFenceSp() + //检测直播页面有没有修改围栏显示 + if (isShowFence != showFence) { + if (null == mSelectMapTypeDialog) { + setFencesShow(showFence) + } else { + mSelectMapTypeDialog?.setFencesSwitch(showFence) + } + } + } + + private fun getHomeV2Activity(): HomeV2Activity? { + return if (null == activity) { + LogUtil.e("MapV3Fragment,getHomeV2Activity,null == activity") + null + } else { + activity as HomeV2Activity + } + } + + /** + * 地图加载好了 + */ + private fun mapLoadOk() { + LogUtil.e("MapV2Fragment 地图加载好了${getHomeV2Activity()?.mPetList}") +// mHomeV2Activity.mDataViewModel.getHomeBindPetList(mHomeV2Activity) + getHomeV2Activity()?.apply { + if (mPetList.size > 0) showPetNameAndHead(mSelectPetPosition) + mFamilyViewModel.getDeviceInviteInfo(this) + } + } + + override fun liveDataObserve() { + //获取设备邀请信息 + mFamilyViewModel.mInviteInfoLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.apply { + if (deleteArray.isNotEmpty()) showDeleteInviteDialog(deleteArray) + if (inviteArray.isNotEmpty()) showInviteDialog(inviteArray) + } + } + }) + } + //获取当前宠物位置和围栏信息 + mMapViewModel.mMapDeviceLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + val data = it.getOrNull() + data?.apply { + mMapDeviceBean = data + setMapData(data) + mMapViewModel.setDeviceStateAndWarningData( + mContext!!, + getHomeV2Activity()?.getPet(), + data, + mDeviceStateList, + mDeviceStateAdapter, + mDeviceMsgList, + mDeviceMsgAdapter, + mViewBinding.rvHomeMapDeviceMsg + ) + } + } + }, showLoading = false, isRequestErrorTip = false) + } + + //删除围栏通知 + XEventBus.observe(this, EventName.DeleteFences) { + updateMapDeviceStatus() + } + //添加编辑围栏通知 + XEventBus.observe(this, EventName.RefreshFences) { + updateMapDeviceStatus() + } + //直播自动结束提示 + XEventBus.observe(this, EventName.LiveAutoEnd) { + ViewUtil.instance.showDialog( + mContext!!, R.string.txt_live_ended, object : BaseDialog.OnDialogOkListener { + override fun onOkClick(dialog: BaseDialog<*>) { + dialog.dismiss() + } + }, okTextResId = R.string.txt_sure, cancelTextResId = R.string.txt_cancel + ) + } + //直播超时 + XEventBus.observe(this, EventName.LiveOpenTimeOut) { + ViewUtil.instance.showDialog( + mContext!!, + R.string.txt_time_out_try_again, + object : BaseDialog.OnDialogOkListener { + override fun onOkClick(dialog: BaseDialog<*>) { + dialog.dismiss() + locationPermissionsTip() + } + }, + okTextResId = R.string.txt_sure + ) + } + //蓝牙上报的数据 + XEventBus.observe(this, EventName.BleReportData) { reportData: BleReportDataBean -> + getHomeV2Activity()?.getPet(false)?.apply { + if (macID == reportData.mac) updateBleReportData(reportData) + } + } + //接收蓝牙连接状态 + XEventBus.observe(this, EventName.ConnectDeviceState) { trackBle: BleTrackDeviceBean -> + getHomeV2Activity()?.getPet(false)?.apply { + //蓝牙断开就重新获取服务器数据,蓝牙数据上报断开 + if (trackBle.mac == macID && trackBle.conState != ConState.CONNECTED) { + //隐藏蓝牙nearby + mViewBinding.rvHomeMapDeviceMsg.visibility = View.GONE + updateMapDeviceStatus() + } + } + } + } + + /** + * 更新蓝牙上报的数据 + */ + private fun updateBleReportData(bleReportDataBean: BleReportDataBean) { + bleReportDataBean.apply { + if (haveDeviceStateData) { + mMapViewModel.stopGetData() + if (null == mMapDeviceBean) mMapDeviceBean = MapDeviceBean() + mMapDeviceBean?.let { + Util.bleReportDataToMapDevice(it, bleReportDataBean) + if (haveLocationData) { + locationList?.let { list -> + val location = list[list.size - 1] + it.longitude = location.longitude + it.latitude = location.latitude + } + mHomeMapCommon.setMapDeviceBean(mMapDeviceBean) + mHomeMapCommon.refreshPetCurrentLocation( + it.latitude, it.longitude, isMoveCamera + ) + mHomeMapCommon.startRefreshUserLocation() + } + } + + mViewBinding.homeMapLiveBtn.visibility = View.VISIBLE + + mMapViewModel.setDeviceStateAndWarningData( + mContext!!, + getHomeV2Activity()?.getPet(), + mMapDeviceBean!!, + mDeviceStateList, + mDeviceStateAdapter, + mDeviceMsgList, + mDeviceMsgAdapter, + mViewBinding.rvHomeMapDeviceMsg + ) + } + } + } + + /** + * 显示被删除邀请的弹窗 + */ + private fun showDeleteInviteDialog(deleteArray: MutableList) { + lifecycleScope.launch(Dispatchers.IO) { + val myDeviceDb = MyDatabase.deviceDao().findAll(MyDatabase.DeviceTableName) + myDeviceDb?.apply { + for (deviceDb in myDeviceDb) { + for (item in deleteArray) { + if (deviceDb.deviceId == item.deviceId) { + MyDatabase.deviceDao().delete(deviceDb) + LogUtil.e("删除了邀请的设备") + } + } + } + } + val newDeviceDb = MyDatabase.deviceDao().findAll(MyDatabase.DeviceTableName) + newDeviceDb?.apply { + LogUtil.e("删去了邀请,还剩${newDeviceDb.size}下个设备") + } + } + CommonDialog1( + mContext!!, + getString(R.string.txt_setting_notification), + getString(R.string.txt_view_access), + false, + okClickListener = object : BaseDialog.OnDialogOkListener { + override fun onOkClick(dialog: BaseDialog<*>) { + getHomeV2Activity()?.apply { + if (mPetList.size == 0) { + noSharePet() + } else { + onChangeClick(0) + } + } + } + }).show() + } + + /** + * 显示被邀请通知弹窗 + */ + private fun showInviteDialog(inviteArray: MutableList) { + for (item in inviteArray) { + val content = String.format( + getString(R.string.txt_invites_you_check), item.userName, item.petName + ) + CommonDialog1( + mContext!!, + getString(R.string.txt_setting_notification), + content, + false, + okClickListener = object : BaseDialog.OnDialogOkListener { + override fun onOkClick(dialog: BaseDialog<*>) { + getHomeV2Activity()?.apply { + startActivity( + this, Intent( + this, MyTrackerV2Activity::class.java + ) + ) + } + } + }).show() + } + } + + private val mPermissionsTips = + "ABBIDOT APP collects location data,The route and distance between the current location and the device can be calculated." + + /** + * 弹窗说明需要位置权限做什么,上架市场需要 + */ + private fun locationPermissionsTip(type: Int = 0) { + if (XXPermissions.isGrantedPermissions( + mContext!!, mutableListOf( + PermissionLists.getAccessFineLocationPermission(), + PermissionLists.getAccessCoarseLocationPermission() + ) + ) + ) { + if (type == 0) checkPermissions(type) + } else { + ViewUtil.instance.showDialog( + mContext!!, mPermissionsTips, object : BaseDialog.OnDialogOkListener { + override fun onOkClick(dialog: BaseDialog<*>) { + dialog.dismiss() + if (type == 0) checkPermissions(type) + else Util.checkLocationPermissionsGpsEnabled(mContext!!, {}) + } + }, okTextResId = R.string.txt_accept, cancelTextResId = R.string.txt_deny + ) + } + } + + /** + * 更新首页设备状态数据 + */ + private fun updateMapDeviceStatus( + isNeedCountDown: Boolean = true, useBleLocation: Boolean = false + ) { +// mShowCenterLocationType = ConstantInt.PetLocationType +// ViewUtil.instance.setMapSwitchLocationButtonImage( +// mViewBinding.homeMapRefreshBtn, mShowCenterLocationType +// ) + getHomeV2Activity()?.apply { + if (mPetList.size <= mCurrentShowPetPos) return + getPet()?.apply { + //蓝牙连接上,就直接用蓝牙上报的位置刷新 + if (useBleLocation && BleManager.getInstance().isConnected(macID)) { + mMapDeviceBean?.let { + mHomeMapCommon.refreshPetCurrentLocation( + it.latitude, it.longitude, isMoveCamera + ) + mHomeMapCommon.startRefreshUserLocation() + } + } else { + mMapViewModel.getMapDeviceStatus(deviceId, isNeedCountDown) + } + } + } + } + + /** + * 显示地图类型选择弹窗 + */ + private fun showMapTypeDialog() { + if (null == mSelectMapTypeDialog) mSelectMapTypeDialog = ViewUtil.instance.getMapTypeDialog( + mContext!!, object : BaseRecyclerAdapter.OnItemClickListener { + override fun onItemClick(itemView: View?, pos: Int) { + mMapType = Util.getMapTypeSp() + if (pos == mMapType) { + return + } + mHomeMapCommon.switchSatelliteAndNormalMapType() + } + }) { v, isChecked -> + if (v.id == R.id.cb_dialog_map_fences_switch) { + setFencesShow(isChecked) + } + } + else { + mSelectMapTypeDialog!!.mapTypeSpToUpdate() + } + mSelectMapTypeDialog?.show() + } + + /** + * 设置围栏显示 + */ + private fun setFencesShow(isShow: Boolean) { + isShowFence = isShow + MMKVUtil.putBoolean(MMKVKey.ShowFence, isShow) + if (isShow) { + mMapDeviceBean?.fences?.let { fences -> + mFencesMapViewModel.setFencesData(mContext!!, fences, mFragment) + } + } else { + mFencesMapViewModel.setFencesData(mContext!!, null, mFragment) + } + } + + /** + * 设置需要更新的标识 + */ + fun setNeedUpdateTag() { + mCurrentShowPetPos = -1 + } + + /** + * 显示选择宠物 + */ + fun showPetNameAndHead(position: Int) { + //变量初始化 +// if (!::mHomeV2Activity.isInitialized) { +// return +// } + getHomeV2Activity()?.apply { + if (mPetList.size == 0) { + return + } + mCurrentShowPetPos = position + + ViewUtil.instance.selectPetDialogShow( + mContext, + mPetList, + position, + mViewBinding.llHomeMapTopPet.homeDataPetNameSmall, + mViewBinding.llHomeMapTopPet.homeDataPetHeadSmall.appHeadImage + ) + + if (mHomeMapCommon.isMapLoadOk()) { + isMoveCamera = true + mHomeMapCommon.clearMarker() + mViewBinding.miHomeMapAddressView.visibility = View.GONE + mViewBinding.rvHomeMapDeviceMsg.visibility = View.GONE + showLoading(true) + val pet = mPetList[position] + //重新设置地图宠物头像 + mHomeMapCommon.setPetHeadIcon(pet.imgurl, pet.petType) + + //获取首页设备信息状态 + updateMapDeviceStatus() + } + } + } + + + /** + * 设置地图相关数据 + */ + private fun setMapData(mapDeviceBean: MapDeviceBean) { + mapDeviceBean.apply { + //分钟后无上报、没有lte信号或在wifi中隐藏直播按钮 + mViewBinding.homeMapLiveBtn.visibility = + if (Util.isTimeoutReport(updateTime) || powerSwitch == ConstantInt.Type0 || powerSwitch == ConstantInt.Type2 || inWifiZone == ConstantInt.Type1) View.GONE + else View.VISIBLE + + mHomeMapCommon.setMapDeviceBean(this) + //设置循环查询时间间隔 30秒 + mMapViewModel.updateMillisInFuture(0.5f) + + if (isShowFence) { + fences?.let { fences -> + mFencesMapViewModel.setFencesData(mContext!!, fences, mFragment) + } + } + +// mShowCenterLocationType = ConstantInt.PetLocationType +// ViewUtil.instance.setMapSwitchLocationButtonImage( +// mViewBinding.homeMapRefreshBtn, mShowCenterLocationType +// ) + mHomeMapCommon.refreshPetCurrentLocation(latitude, longitude, isMoveCamera) + mHomeMapCommon.startRefreshUserLocation() + + isMoveCamera = false + } + } + + /** + * 检查获取定位,蓝牙权限 + */ + private fun checkPermissions(type: Int) { + getHomeV2Activity()?.apply { + Util.checkBluetoothPermissionsEnabled(mContext, { + if (type == 0) { + if (!mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { + val intent = Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS) + startActivity(intent) + } else if (isRequestPetData && mPetList.size == 0) { + showToast(R.string.no_bind_pet) + } else { + getPet()?.apply { + mViewBinding.homeMapLiveBtn.isEnabled = false + val intent = Intent(mContext, LiveActivityV2::class.java) + intent.putExtra(ConstantString.JumpActivity, true) + intent.putExtra(ConstantString.Pet, this) + startActivity(intent) + } + } + } else if (type == 1) { + if (!SRBleUtil.instance.isBleEnable(mContext)) { + SRBleUtil.instance.openBluetooth(mContext) + } else if (isRequestPetData && mPetList.size == 0) { + showToast(R.string.no_bind_pet) + } else { + getPet()?.apply { + mViewBinding.homeMapBluetoothBtn.isEnabled = false + val intent = Intent(mContext, LiveActivityV2::class.java) + intent.putExtra(ConstantString.JumpActivity, false) + intent.putExtra(ConstantString.Pet, this) + startActivity(intent) + } + } + } + }) + } + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + homeMapRefreshBtn -> { + getHomeV2Activity()?.let { + if (it.isRequestPetData && it.mPetList.size == 0) { + showToast(R.string.no_bind_pet) + return + } + if (mShowCenterLocationType == ConstantInt.PetLocationType) { + mShowCenterLocationType = ConstantInt.UserLocationType + mHomeMapCommon.switchShowLocation(mShowCenterLocationType) + } else { + mShowCenterLocationType = ConstantInt.PetLocationType + isMoveCamera = true + updateMapDeviceStatus(useBleLocation = true) + } + ViewUtil.instance.setMapSwitchLocationButtonImage( + homeMapRefreshBtn, mShowCenterLocationType + ) + } + } + + homeMapLiveBtn -> { +// locationPermissionsTip() + getHomeV2Activity()?.let { + it.getPet()?.apply { + mViewBinding.homeMapLiveBtn.isEnabled = false + val intent = Intent(mContext, LiveActivityV2::class.java) + intent.putExtra(ConstantString.JumpActivity, true) + intent.putExtra(ConstantString.Pet, this) + startActivity(intent) + } + } + } + + llHomeMapTopPet.ivTopPetBtnSmall -> showMapTypeDialog() + homeMapBluetoothBtn -> checkPermissions(1) + llHomeMapTopPet.homeDataPetNameSmall, llHomeMapTopPet.homeDataPetHeadSmall.root -> getHomeV2Activity()?.selectPetDialog() + } + + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/pet/HomePetFragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/pet/HomePetFragment.kt index 2f88744..eaeffa4 100644 --- a/app/src/main/java/com/abbidot/tracker/ui/fragment/pet/HomePetFragment.kt +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/pet/HomePetFragment.kt @@ -10,6 +10,7 @@ import com.abbidot.baselibrary.constant.MMKVKey import com.abbidot.baselibrary.eventbus.XEventBus import com.abbidot.baselibrary.list.BaseRecyclerAdapter import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.baselibrary.util.LogUtil import com.abbidot.baselibrary.util.MMKVUtil import com.abbidot.baselibrary.util.Utils import com.abbidot.tracker.R @@ -43,8 +44,6 @@ class HomePetFragment : BaseFragment(FragmentHomePetBind private val mPetViewModel: PetInfoViewModel by viewModels() - private lateinit var mHomeV2Activity: HomeV2Activity - private lateinit var mPetLabelsAdapter: PetLabelsAdapter private lateinit var mPetsBadgesAdapter: PetsBadgesAdapter private lateinit var mFamilyAdapter: HomePetFamilyAdapter @@ -59,7 +58,6 @@ class HomePetFragment : BaseFragment(FragmentHomePetBind } override fun initData() { - mHomeV2Activity = activity as HomeV2Activity mViewBinding.apply { root.setBackgroundResource(R.color.transparent) mPetLabelsAdapter = PetLabelsAdapter(mContext!!, null) @@ -87,8 +85,8 @@ class HomePetFragment : BaseFragment(FragmentHomePetBind mFamilyAdapter = HomePetFamilyAdapter(mContext!!, null).apply { setOnAgainClickListener(object : BaseRecyclerAdapter.OnAgainClickListener { override fun onAgainListener() { - mHomeV2Activity.getPet()?.let { pet -> - if (Util.checkPackageLimit(mHomeV2Activity, pet.deviceId)) { + getHomeV2Activity()?.getPet()?.let { pet -> + if (Util.checkPackageLimit(getHomeV2Activity()!!, pet.deviceId)) { return } } @@ -116,29 +114,33 @@ class HomePetFragment : BaseFragment(FragmentHomePetBind getPetAllInfoData() } + private fun getHomeV2Activity(): HomeV2Activity? { + return if (null == activity) { + LogUtil.e("HomePetFragment,getHomeV2Activity,null == activity") + null + } else { + activity as HomeV2Activity + } + } + fun getPetAllInfoData() { - activity?.apply { - mHomeV2Activity = this as HomeV2Activity - } - //变量初始化 - if (!::mHomeV2Activity.isInitialized) { - return - } - mHomeV2Activity.getPet(false)?.apply { - val share = MMKVUtil.getInt(MMKVKey.Shared) - //被邀请的不显示家庭邀请信息 - mViewBinding.apply { - if (share == ConstantInt.NoShare) { - btnHomePetMoreAbout.visibility = View.VISIBLE - btnHomePetManageActivity.visibility = View.VISIBLE - rlHomePetV2FamilyLayout.visibility = View.VISIBLE - } else { - btnHomePetMoreAbout.visibility = View.GONE - btnHomePetManageActivity.visibility = View.GONE - rlHomePetV2FamilyLayout.visibility = View.GONE + getHomeV2Activity()?.let { + it.getPet(false)?.apply { + val share = MMKVUtil.getInt(MMKVKey.Shared) + //被邀请的不显示家庭邀请信息 + mViewBinding.apply { + if (share == ConstantInt.NoShare) { + btnHomePetMoreAbout.visibility = View.VISIBLE + btnHomePetManageActivity.visibility = View.VISIBLE + rlHomePetV2FamilyLayout.visibility = View.VISIBLE + } else { + btnHomePetMoreAbout.visibility = View.GONE + btnHomePetManageActivity.visibility = View.GONE + rlHomePetV2FamilyLayout.visibility = View.GONE + } } + mPetViewModel.getPetAllInfo(it, petId) } - mPetViewModel.getPetAllInfo(mHomeV2Activity, petId) } } diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/pet/PetV2Fragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/pet/PetV2Fragment.kt index b6e0cff..e1d555f 100644 --- a/app/src/main/java/com/abbidot/tracker/ui/fragment/pet/PetV2Fragment.kt +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/pet/PetV2Fragment.kt @@ -6,6 +6,7 @@ import androidx.core.view.WindowInsetsCompat import androidx.fragment.app.Fragment import androidx.viewpager2.widget.ViewPager2 import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.baselibrary.util.LogUtil import com.abbidot.tracker.adapter.ViewPagerAdapter import com.abbidot.tracker.base.BaseFragment import com.abbidot.tracker.databinding.FragmentPetV2Binding @@ -21,7 +22,6 @@ import com.abbidot.tracker.util.ViewUtil class PetV2Fragment : BaseFragment(FragmentPetV2Binding::inflate) { private lateinit var mFragments: MutableList - private lateinit var mHomeV2Activity: HomeV2Activity //当前这个页面显示的宠物下标 private var mCurrentShowPetPos = -1 @@ -34,13 +34,12 @@ class PetV2Fragment : BaseFragment(FragmentPetV2Binding::i } override fun initData() { - mHomeV2Activity = activity as HomeV2Activity mFragments = mutableListOf( HomePetFragment.newInstance(mContext!!), HomeTrackFragment.newInstance(mContext!!) ) mViewBinding.apply { - mHomeV2Activity.edgeToEdgeAdapterBars( + getHomeV2Activity()?.edgeToEdgeAdapterBars( root, WindowInsetsCompat.Type.statusBars() ) ilHomePetTopBar.ivTopPetBtnSmall.visibility = View.GONE @@ -75,24 +74,32 @@ class PetV2Fragment : BaseFragment(FragmentPetV2Binding::i } if (AppUtils.isDebug()) { ilHomePetTopBar.homeDataPetHeadSmall.appHeadImage.setOnLongClickListener { - mHomeV2Activity.goToDebugActivity() + getHomeV2Activity()?.goToDebugActivity() true } } } } + private fun getHomeV2Activity(): HomeV2Activity? { + return if (null == activity) { + LogUtil.e("PetV2Fragment,getHomeV2Activity,null == activity") + null + } else { + activity as HomeV2Activity + } + } + override fun onResume() { super.onResume() - activity?.apply { - mHomeV2Activity = this as HomeV2Activity - } (mFragments[1] as HomeTrackFragment).onResume() - //其他页面是否选择了宠物 - if (mCurrentShowPetPos != mHomeV2Activity.mSelectPetPosition) { - showPetNameAndHead(mHomeV2Activity.mSelectPetPosition) - } else { - (mFragments[1] as HomeTrackFragment).getPetTrackerInfoData() + getHomeV2Activity()?.apply { + //其他页面是否选择了宠物 + if (mCurrentShowPetPos != mSelectPetPosition) { + showPetNameAndHead(mSelectPetPosition) + } else { + (mFragments[1] as HomeTrackFragment).getPetTrackerInfoData() + } } } @@ -112,33 +119,31 @@ class PetV2Fragment : BaseFragment(FragmentPetV2Binding::i * 显示选择宠物 */ fun showPetNameAndHead(position: Int) { - //变量初始化 - if (!::mHomeV2Activity.isInitialized) { - return - } - if (mHomeV2Activity.mPetList.size == 0) { - return - } - mCurrentShowPetPos = position + getHomeV2Activity()?.let { + if (it.mPetList.size == 0) { + return + } + mCurrentShowPetPos = position // showLoading(true) - ViewUtil.instance.selectPetDialogShow( - mContext!!, - mHomeV2Activity.mPetList, - position, - mViewBinding.ilHomePetTopBar.homeDataPetNameSmall, - mViewBinding.ilHomePetTopBar.homeDataPetHeadSmall.appHeadImage - ) + ViewUtil.instance.selectPetDialogShow( + mContext!!, + it.mPetList, + position, + mViewBinding.ilHomePetTopBar.homeDataPetNameSmall, + mViewBinding.ilHomePetTopBar.homeDataPetHeadSmall.appHeadImage + ) - (mFragments[0] as HomePetFragment).getPetAllInfoData() - (mFragments[1] as HomeTrackFragment).getPetTrackerInfoData() + (mFragments[0] as HomePetFragment).getPetAllInfoData() + (mFragments[1] as HomeTrackFragment).getPetTrackerInfoData() + } } override fun onClick(v: View?) { mViewBinding.apply { when (v!!) { - ilHomePetTopBar.homeDataPetNameSmall, ilHomePetTopBar.homeDataPetHeadSmall.root -> mHomeV2Activity.selectPetDialog() + ilHomePetTopBar.homeDataPetNameSmall, ilHomePetTopBar.homeDataPetHeadSmall.root -> getHomeV2Activity()?.selectPetDialog() } } } diff --git a/app/src/main/java/com/abbidot/tracker/vm/DeviceDFUViewModel.kt b/app/src/main/java/com/abbidot/tracker/vm/DeviceDFUViewModel.kt index 86c7194..5b14e1f 100644 --- a/app/src/main/java/com/abbidot/tracker/vm/DeviceDFUViewModel.kt +++ b/app/src/main/java/com/abbidot/tracker/vm/DeviceDFUViewModel.kt @@ -9,7 +9,6 @@ import androidx.lifecycle.MutableLiveData import androidx.lifecycle.viewModelScope import com.abbidot.baselibrary.util.LogUtil import com.abbidot.tracker.R -import com.abbidot.tracker.base.BaseActivity import com.abbidot.tracker.bean.DFUStateBean import com.abbidot.tracker.bean.FirmwareBean import com.abbidot.tracker.retrofit2.NetworkApi @@ -48,8 +47,8 @@ class DeviceDFUViewModel(application: Application) : AndroidViewModel(applicatio /** * 获取固件信息 */ - fun getFirmware(activity: BaseActivity<*>, isShowLoading: Boolean = true) { - activity.showLoading(isShowLoading) + fun getFirmware() { +// activity.showLoading(isShowLoading) viewModelScope.launch(Dispatchers.IO) { val result = NetworkApi.getFirmware("GPS_Tracker_01") mFirmwareInfoLiveData.postValue(result) diff --git a/app/src/main/java/com/abbidot/tracker/vm/TrackerSetViewModel.kt b/app/src/main/java/com/abbidot/tracker/vm/TrackerSetViewModel.kt index a80353b..826426a 100644 --- a/app/src/main/java/com/abbidot/tracker/vm/TrackerSetViewModel.kt +++ b/app/src/main/java/com/abbidot/tracker/vm/TrackerSetViewModel.kt @@ -26,8 +26,8 @@ class TrackerSetViewModel : ViewModel() { /** * 关闭设备 */ - fun turnOff(activity: BaseActivity<*>, deviceInfoId: String, turnOff: Int = 0) { - activity.showLoading(true) + fun turnOff(deviceInfoId: String, turnOff: Int = 0) { +// activity.showLoading(true) viewModelScope.launch { val result = NetworkApi.turnoff(deviceInfoId, turnOff) mTurnoffLiveData.value = result diff --git a/app/src/main/java/com/abbidot/tracker/vm/UserProfileViewModel.kt b/app/src/main/java/com/abbidot/tracker/vm/UserProfileViewModel.kt index 1bdb70b..0399681 100644 --- a/app/src/main/java/com/abbidot/tracker/vm/UserProfileViewModel.kt +++ b/app/src/main/java/com/abbidot/tracker/vm/UserProfileViewModel.kt @@ -154,8 +154,8 @@ class UserProfileViewModel : ViewModel() { /** *修改单位 */ - fun updateMeasureUnit(activity: BaseActivity<*>, measurementUnit: Int) { - activity.showLoading(true) + fun updateMeasureUnit(measurementUnit: Int) { +// activity.showLoading(true) viewModelScope.launch { val userId = MMKVUtil.getString(MMKVKey.UserId) val result = NetworkApi.updateMeasureUnit(userId, measurementUnit) diff --git a/app/src/main/java/com/abbidot/tracker/widget/MapDeviceNetView.kt b/app/src/main/java/com/abbidot/tracker/widget/MapDeviceNetView.kt index f169f74..813ff29 100644 --- a/app/src/main/java/com/abbidot/tracker/widget/MapDeviceNetView.kt +++ b/app/src/main/java/com/abbidot/tracker/widget/MapDeviceNetView.kt @@ -62,7 +62,7 @@ class MapDeviceNetView : BaseView { override fun startDraw(canvas: Canvas) { - return +// return if (mNetType == NO_NET_TYPE) return canvas.apply { mPaint.apply { diff --git a/app/src/main/res/drawable-xhdpi/icon_wifi_image.png b/app/src/main/res/drawable-xhdpi/icon_wifi_image.png new file mode 100644 index 0000000..2b56705 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_wifi_image.png differ diff --git a/app/src/main/res/drawable-xxhdpi/icon_wifi_image.png b/app/src/main/res/drawable-xxhdpi/icon_wifi_image.png new file mode 100644 index 0000000..c7f5645 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/icon_wifi_image.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/icon_wifi_image.png b/app/src/main/res/drawable-xxxhdpi/icon_wifi_image.png new file mode 100644 index 0000000..40db750 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/icon_wifi_image.png differ diff --git a/app/src/main/res/layout/activity_subscription_plan.xml b/app/src/main/res/layout/activity_subscription_plan.xml index 6a298e2..1ba0207 100644 --- a/app/src/main/res/layout/activity_subscription_plan.xml +++ b/app/src/main/res/layout/activity_subscription_plan.xml @@ -17,7 +17,8 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="@dimen/dp_20" - android:paddingHorizontal="@dimen/dp_22" /> + android:paddingHorizontal="@dimen/dp_22" + android:visibility="gone" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_pet_location_info.xml b/app/src/main/res/layout/layout_pet_location_info.xml new file mode 100644 index 0000000..c91b0e3 --- /dev/null +++ b/app/src/main/res/layout/layout_pet_location_info.xml @@ -0,0 +1,28 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5250355..9828445 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1049,4 +1049,6 @@ Saved. Active when online. The program has an exception and is about to exit + Activate Subscription + \ No newline at end of file