1.map页改版前

This commit is contained in:
yezhiqiu
2025-11-25 15:48:42 +08:00
parent 630fc29f80
commit 59cdb784d2
27 changed files with 1048 additions and 228 deletions

View File

@@ -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.account.AccountV2Fragment
import com.abbidot.tracker.ui.fragment.data.ActivityV2Fragment import com.abbidot.tracker.ui.fragment.data.ActivityV2Fragment
import com.abbidot.tracker.ui.fragment.data.RouteV2Fragment 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.ui.fragment.pet.PetV2Fragment
import com.abbidot.tracker.util.BleReportManage import com.abbidot.tracker.util.BleReportManage
import com.abbidot.tracker.util.SocketUtilManage import com.abbidot.tracker.util.SocketUtilManage
@@ -92,7 +92,7 @@ class HomeV2Activity : BaseActivity<ActivityHomeV2Binding>(ActivityHomeV2Binding
private val mFragments = mutableListOf<Fragment>( private val mFragments = mutableListOf<Fragment>(
ActivityV2Fragment.newInstance(this), ActivityV2Fragment.newInstance(this),
RouteV2Fragment.newInstance(this), RouteV2Fragment.newInstance(this),
MapV2Fragment.newInstance(this), MapV3Fragment.newInstance(this),
PetV2Fragment.newInstance(this), PetV2Fragment.newInstance(this),
AccountV2Fragment.newInstance(this) AccountV2Fragment.newInstance(this)
) )
@@ -338,7 +338,7 @@ class HomeV2Activity : BaseActivity<ActivityHomeV2Binding>(ActivityHomeV2Binding
getPet(false)?.apply { getPet(false)?.apply {
mLogBleReportViewModel.uploadLog(mContext, macID) mLogBleReportViewModel.uploadLog(mContext, macID)
} }
(mFragments[2] as MapV2Fragment).showPetNameAndHead(mSelectPetPosition) (mFragments[2] as MapV3Fragment).showPetNameAndHead(mSelectPetPosition)
} else { } else {
onChangeClick(mSelectPetPosition) onChangeClick(mSelectPetPosition)
when (mViewBinding.homeV2ViewPager2.currentItem) { when (mViewBinding.homeV2ViewPager2.currentItem) {
@@ -453,7 +453,7 @@ class HomeV2Activity : BaseActivity<ActivityHomeV2Binding>(ActivityHomeV2Binding
when (mViewBinding.homeV2ViewPager2.currentItem) { when (mViewBinding.homeV2ViewPager2.currentItem) {
0 -> (mFragments[0] as ActivityV2Fragment).showPetNameAndHead(position) 0 -> (mFragments[0] as ActivityV2Fragment).showPetNameAndHead(position)
1 -> (mFragments[1] as RouteV2Fragment).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) 3 -> (mFragments[3] as PetV2Fragment).showPetNameAndHead(position)
} }
} }

View File

@@ -126,9 +126,7 @@ class AddPairedSuccessActivity :
MMKVUtil.putInt(MMKVKey.isBindDevice, ConstantInt.isBind) MMKVUtil.putInt(MMKVKey.isBindDevice, ConstantInt.isBind)
XEventBus.post(EventName.RefreshDevice) XEventBus.post(EventName.RefreshDevice)
if (isFirstBind) { if (isFirstBind) {
mUserProfileViewModel.updateMeasureUnit( mUserProfileViewModel.updateMeasureUnit(ConstantInt.Type1)
this@AddPairedSuccessActivity, ConstantInt.Type1
)
// val intent = Intent(mContext, FirstSetPetTypeActivity::class.java) // val intent = Intent(mContext, FirstSetPetTypeActivity::class.java)
// intent.putExtra(ConstantString.isFirstBind, isFirstBind) // intent.putExtra(ConstantString.isFirstBind, isFirstBind)
// startActivityFinish(intent) // startActivityFinish(intent)

View File

@@ -136,7 +136,7 @@ class LiveActivityV2 : BaseActivity<ActivityLiveV2Binding>(ActivityLiveV2Binding
mFragment = mHomeMapCommon.getMapFragment( mFragment = mHomeMapCommon.getMapFragment(
mContext, miLiveV2MapAddressView, dnLiveV2MapNetView mContext, miLiveV2MapAddressView, dnLiveV2MapNetView
) { mapLoadOk() } ) { mapLoadOk() }
dnLiveV2MapNetView.setShowNetType(MapDeviceNetView.WIFI_NET_TYPE) dnLiveV2MapNetView.setShowNetType(MapDeviceNetView.NO_NET_TYPE)
ViewUtil.instance.setMapSwitchLocationButtonImage( ViewUtil.instance.setMapSwitchLocationButtonImage(
ivMapLiveV2RefreshBtn, mShowCenterLocation ivMapLiveV2RefreshBtn, mShowCenterLocation
) )

View File

@@ -152,7 +152,7 @@ class FirstMeasurementUnitsActivity :
}) })
btnFirstMeasurementUnitsSave -> mUserProfileViewModel.updateMeasureUnit( btnFirstMeasurementUnitsSave -> mUserProfileViewModel.updateMeasureUnit(
this@FirstMeasurementUnitsActivity, mMeasurementUnit mMeasurementUnit
) )
} }
} }

View File

@@ -56,7 +56,7 @@ class ChoosePlanActivity :
if (packageTypeName == "Basic") { if (packageTypeName == "Basic") {
setTopBarTitle(R.string.txt_basic_plan) setTopBarTitle(R.string.txt_basic_plan)
} else { } else {
setTopBarTitle(R.string.txt_premium_plan) setTopBarTitle(R.string.txt_choose_your_plan)
} }
} }
setLeftBackImage(R.drawable.icon_white_back_svg) setLeftBackImage(R.drawable.icon_white_back_svg)

View File

@@ -241,8 +241,7 @@ class PaymentSuccessActivity :
XEventBus.post(EventName.PayBack) XEventBus.post(EventName.PayBack)
mPayResult?.let { mPayResult?.let {
if (it.rechargeType == ConstantInt.Type0) { if (it.rechargeType == ConstantInt.Type0) {
mUserProfileViewModel.updateMeasureUnit( mUserProfileViewModel.updateMeasureUnit( ConstantInt.Type1
this@PaymentSuccessActivity, ConstantInt.Type1
) )
// val intent = Intent(mContext, FirstSetPetTypeActivity::class.java) // val intent = Intent(mContext, FirstSetPetTypeActivity::class.java)

View File

@@ -57,6 +57,7 @@ class RequestRefundActivity :
override fun onResult(any: Any) { override fun onResult(any: Any) {
it.getOrNull()?.apply { it.getOrNull()?.apply {
if (isCanRefund == ConstantInt.Type0) { if (isCanRefund == ConstantInt.Type0) {
XEventBus.post(EventName.RefreshPackage)
showToast(R.string.txt_successful, true) showToast(R.string.txt_successful, true)
} else { } else {
mSetMealBean?.let { meal -> mSetMealBean?.let { meal ->

View File

@@ -42,7 +42,7 @@ class SubscriptionPlanActivity :
override fun initData() { override fun initData() {
super.initData() super.initData()
setTopBarTitle(R.string.txt_choose_your_plan) setTopBarTitle(R.string.txt_activate_subscribe)
setLeftBackImage(R.drawable.icon_white_back_svg) setLeftBackImage(R.drawable.icon_white_back_svg)
intent.extras?.apply { intent.extras?.apply {

View File

@@ -45,7 +45,6 @@ class AccountV2Fragment :
private lateinit var mMenuAdapter: HomeAccountMenuAdapter private lateinit var mMenuAdapter: HomeAccountMenuAdapter
private lateinit var mMenuList: MutableList<MenuTxtBean> private lateinit var mMenuList: MutableList<MenuTxtBean>
private lateinit var mHomeV2Activity: HomeV2Activity
private var mMeasurementUnit = 1 private var mMeasurementUnit = 1
companion object { companion object {
@@ -56,9 +55,8 @@ class AccountV2Fragment :
} }
override fun initData() { override fun initData() {
mHomeV2Activity = activity as HomeV2Activity
mViewBinding.apply { mViewBinding.apply {
mHomeV2Activity.edgeToEdgeAdapterBars( getHomeV2Activity()?.edgeToEdgeAdapterBars(
llHomeAccountLayout, WindowInsetsCompat.Type.statusBars() llHomeAccountLayout, WindowInsetsCompat.Type.statusBars()
) )
llHomeAccountTopUser.let { llHomeAccountTopUser.let {
@@ -92,15 +90,25 @@ class AccountV2Fragment :
mUserViewModel = ViewModelProvider(this)[UserProfileViewModel::class.java] mUserViewModel = ViewModelProvider(this)[UserProfileViewModel::class.java]
mNotificationsViewModel = ViewModelProvider(this)[NotificationsViewModel::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() { override fun onResume() {
super.onResume() super.onResume()
activity?.apply { getHomeV2Activity()?.apply {
mHomeV2Activity = this as HomeV2Activity mNotificationsViewModel.getMessageList(this)
} }
mNotificationsViewModel.getMessageList(mHomeV2Activity)
} }
private fun addListData() { private fun addListData() {
@@ -180,7 +188,9 @@ class AccountV2Fragment :
override fun liveDataObserve() { override fun liveDataObserve() {
XEventBus.observe(viewLifecycleOwner, EventName.UpdateUserInfo) { XEventBus.observe(viewLifecycleOwner, EventName.UpdateUserInfo) {
mUserViewModel.getUserInfo(mHomeV2Activity) getHomeV2Activity()?.let {
mUserViewModel.getUserInfo(it)
}
} }
XEventBus.observe(viewLifecycleOwner, EventName.RefreshMessage) { XEventBus.observe(viewLifecycleOwner, EventName.RefreshMessage) {
getMessageCount() getMessageCount()
@@ -244,7 +254,7 @@ class AccountV2Fragment :
for (message in this) { for (message in this) {
if (message.isRead) noReadNum-- if (message.isRead) noReadNum--
} }
mHomeV2Activity.runOnUiThread { getHomeV2Activity()?.runOnUiThread {
mViewBinding.homeAccountMessageCountText.let { mViewBinding.homeAccountMessageCountText.let {
if (noReadNum > 0) it.visibility = View.VISIBLE if (noReadNum > 0) it.visibility = View.VISIBLE
else it.visibility = View.GONE else it.visibility = View.GONE
@@ -258,7 +268,7 @@ class AccountV2Fragment :
fun setMeasureUnit(measurementUnit: Int) { fun setMeasureUnit(measurementUnit: Int) {
mMeasurementUnit = measurementUnit mMeasurementUnit = measurementUnit
mUserViewModel.updateMeasureUnit(mHomeV2Activity, measurementUnit) mUserViewModel.updateMeasureUnit(measurementUnit)
} }
override fun onClick(v: View?) { override fun onClick(v: View?) {

View File

@@ -10,6 +10,7 @@ import androidx.core.view.WindowInsetsCompat
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import com.abbidot.baselibrary.constant.MMKVKey import com.abbidot.baselibrary.constant.MMKVKey
import com.abbidot.baselibrary.util.AppUtils import com.abbidot.baselibrary.util.AppUtils
import com.abbidot.baselibrary.util.LogUtil
import com.abbidot.baselibrary.util.MMKVUtil import com.abbidot.baselibrary.util.MMKVUtil
import com.abbidot.baselibrary.util.Utils import com.abbidot.baselibrary.util.Utils
import com.abbidot.tracker.R import com.abbidot.tracker.R
@@ -37,8 +38,6 @@ class ActivityV2Fragment :
private lateinit var mDataViewModel: DataViewModel private lateinit var mDataViewModel: DataViewModel
private lateinit var mHomeV2Activity: HomeV2Activity
//当前这个页面显示的宠物下标 //当前这个页面显示的宠物下标
private var mCurrentShowPetPos = -1 private var mCurrentShowPetPos = -1
@@ -52,12 +51,11 @@ class ActivityV2Fragment :
} }
override fun initData() { override fun initData() {
mHomeV2Activity = activity as HomeV2Activity
mToday = Utils.getCurrentTime(Utils.DATE_FORMAT_PATTERN_CN) mToday = Utils.getCurrentTime(Utils.DATE_FORMAT_PATTERN_CN)
mViewBinding.apply { mViewBinding.apply {
mHomeV2Activity.edgeToEdgeAdapterBars( getHomeV2Activity()?.edgeToEdgeAdapterBars(
svHomeActivityScroll, WindowInsetsCompat.Type.statusBars() svHomeActivityScroll, WindowInsetsCompat.Type.statusBars()
) )
@@ -78,7 +76,7 @@ class ActivityV2Fragment :
} }
override fun onRefresh() { override fun onRefresh() {
mHomeV2Activity.getPet()?.apply { getHomeV2Activity()?.getPet()?.apply {
mDataViewModel.getHomeDeviceData(deviceId, mToday, petId) mDataViewModel.getHomeDeviceData(deviceId, mToday, petId)
} }
} }
@@ -94,7 +92,7 @@ class ActivityV2Fragment :
if (AppUtils.isDebug()) { if (AppUtils.isDebug()) {
ilHomeActivityTopPet.homeDataPetHeadSmall.root.setOnLongClickListener { ilHomeActivityTopPet.homeDataPetHeadSmall.root.setOnLongClickListener {
mHomeV2Activity.goToDebugActivity() getHomeV2Activity()?.goToDebugActivity()
true true
} }
} }
@@ -110,6 +108,15 @@ class ActivityV2Fragment :
initHomeData() initHomeData()
} }
private fun getHomeV2Activity(): HomeV2Activity? {
return if (null == activity) {
LogUtil.e("ActivityV2Fragment,getHomeV2Activity,null == activity")
null
} else {
activity as HomeV2Activity
}
}
private fun initHomeData() { private fun initHomeData() {
val goal = MMKVUtil.getInt(MMKVKey.ActivityGoal) val goal = MMKVUtil.getInt(MMKVKey.ActivityGoal)
@@ -138,16 +145,15 @@ class ActivityV2Fragment :
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
activity?.apply { getHomeV2Activity()?.let {
mHomeV2Activity = this as HomeV2Activity if (mCurrentShowPetPos == it.mSelectPetPosition) {
} it.getPet()?.apply {
if (mCurrentShowPetPos == mHomeV2Activity.mSelectPetPosition) {
mHomeV2Activity.getPet()?.apply {
mDataViewModel.getHomeDeviceData(deviceId, mToday, petId) mDataViewModel.getHomeDeviceData(deviceId, mToday, petId)
} }
} else { } else {
//其他页面是否选择了宠物 //其他页面是否选择了宠物
showPetNameAndHead(mHomeV2Activity.mSelectPetPosition) showPetNameAndHead(it.mSelectPetPosition)
}
} }
} }
@@ -260,30 +266,28 @@ class ActivityV2Fragment :
* 显示选择的宠物 * 显示选择的宠物
*/ */
fun showPetNameAndHead(position: Int) { fun showPetNameAndHead(position: Int) {
//变量初始化 getHomeV2Activity()?.let {
if (!::mHomeV2Activity.isInitialized) { if (it.mPetList.size == 0) {
return
}
if (mHomeV2Activity.mPetList.size == 0) {
return return
} }
mCurrentShowPetPos = position mCurrentShowPetPos = position
ViewUtil.instance.selectPetDialogShow( ViewUtil.instance.selectPetDialogShow(
mContext!!, mContext!!,
mHomeV2Activity.mPetList, it.mPetList,
position, position,
mViewBinding.ilHomeActivityTopPet.homeDataPetNameSmall, mViewBinding.ilHomeActivityTopPet.homeDataPetNameSmall,
mViewBinding.ilHomeActivityTopPet.homeDataPetHeadSmall.appHeadImage mViewBinding.ilHomeActivityTopPet.homeDataPetHeadSmall.appHeadImage
) )
mHomeV2Activity.getPet()?.apply { it.getPet()?.apply {
mDataViewModel.getHomeDeviceData(deviceId, mToday, petId) mDataViewModel.getHomeDeviceData(deviceId, mToday, petId)
} }
} }
}
private fun goActivityNeedPet(cls: Class<*>) { private fun goActivityNeedPet(cls: Class<*>) {
mHomeV2Activity.getPet()?.apply { getHomeV2Activity()?.getPet()?.apply {
Intent(mContext, cls).let { Intent(mContext, cls).let {
it.putExtra(ConstantString.Pet, this) it.putExtra(ConstantString.Pet, this)
startActivity(it) startActivity(it)
@@ -294,7 +298,7 @@ class ActivityV2Fragment :
override fun onClick(v: View?) { override fun onClick(v: View?) {
mViewBinding.apply { mViewBinding.apply {
when (v!!) { when (v!!) {
ilHomeActivityTopPet.ivTopPetBtnSmall -> mHomeV2Activity.getPet()?.apply { ilHomeActivityTopPet.ivTopPetBtnSmall -> getHomeV2Activity()?.getPet()?.apply {
ViewUtil.instance.viewAlphaAndRotationObjectAnimator(v) ViewUtil.instance.viewAlphaAndRotationObjectAnimator(v)
mDataViewModel.getHomeDeviceData(deviceId, mToday, petId) mDataViewModel.getHomeDeviceData(deviceId, mToday, petId)
} }
@@ -303,7 +307,7 @@ class ActivityV2Fragment :
btnHomeMoreSleep -> goActivityNeedPet(MoreSleepActivity::class.java) btnHomeMoreSleep -> goActivityNeedPet(MoreSleepActivity::class.java)
ilHomeActivityTopPet.homeDataPetNameSmall, ilHomeActivityTopPet.homeDataPetHeadSmall.root -> mHomeV2Activity.selectPetDialog() ilHomeActivityTopPet.homeDataPetNameSmall, ilHomeActivityTopPet.homeDataPetHeadSmall.root -> getHomeV2Activity()?.selectPetDialog()
} }
} }

View File

@@ -13,6 +13,7 @@ import com.abbidot.baselibrary.constant.EventName
import com.abbidot.baselibrary.constant.MMKVKey import com.abbidot.baselibrary.constant.MMKVKey
import com.abbidot.baselibrary.eventbus.XEventBus import com.abbidot.baselibrary.eventbus.XEventBus
import com.abbidot.baselibrary.util.AppUtils import com.abbidot.baselibrary.util.AppUtils
import com.abbidot.baselibrary.util.LogUtil
import com.abbidot.baselibrary.util.MMKVUtil import com.abbidot.baselibrary.util.MMKVUtil
import com.abbidot.baselibrary.util.Utils import com.abbidot.baselibrary.util.Utils
import com.abbidot.tracker.R import com.abbidot.tracker.R
@@ -43,8 +44,6 @@ class RouteV2Fragment : BaseFragment<FragmentRouteV2Binding>(FragmentRouteV2Bind
private val mDataDetailViewModel: DataDetailViewModel by viewModels() private val mDataDetailViewModel: DataDetailViewModel by viewModels()
private val mGeoCoderViewModel: GeoCoderViewModel by viewModels() private val mGeoCoderViewModel: GeoCoderViewModel by viewModels()
private lateinit var mHomeV2Activity: HomeV2Activity
private lateinit var mFragment: Fragment private lateinit var mFragment: Fragment
private var mFromCalenderDialog: ShowCalenderAndTimeDialog? = null private var mFromCalenderDialog: ShowCalenderAndTimeDialog? = null
@@ -81,9 +80,8 @@ class RouteV2Fragment : BaseFragment<FragmentRouteV2Binding>(FragmentRouteV2Bind
} }
override fun initData() { override fun initData() {
mHomeV2Activity = activity as HomeV2Activity
mViewBinding.apply { mViewBinding.apply {
mHomeV2Activity.edgeToEdgeAdapterBars( getHomeV2Activity()?.edgeToEdgeAdapterBars(
root, WindowInsetsCompat.Type.statusBars() root, WindowInsetsCompat.Type.statusBars()
) )
mFragment = mHistoryDataMapCommon.getMapFragment( mFragment = mHistoryDataMapCommon.getMapFragment(
@@ -112,7 +110,7 @@ class RouteV2Fragment : BaseFragment<FragmentRouteV2Binding>(FragmentRouteV2Bind
if (AppUtils.isDebug()) { if (AppUtils.isDebug()) {
ilHomeRoutePetHead.homeDataPetHeadSmall.root.setOnLongClickListener { ilHomeRoutePetHead.homeDataPetHeadSmall.root.setOnLongClickListener {
mHomeV2Activity.goToDebugActivity() getHomeV2Activity()?.goToDebugActivity()
true true
} }
} }
@@ -132,6 +130,15 @@ class RouteV2Fragment : BaseFragment<FragmentRouteV2Binding>(FragmentRouteV2Bind
initState() initState()
} }
private fun getHomeV2Activity(): HomeV2Activity? {
return if (null == activity) {
LogUtil.e("RouteV2Fragment,getHomeV2Activity,null == activity")
null
} else {
activity as HomeV2Activity
}
}
/** /**
* 一开始获取24小时内的数据 * 一开始获取24小时内的数据
*/ */
@@ -211,14 +218,12 @@ class RouteV2Fragment : BaseFragment<FragmentRouteV2Binding>(FragmentRouteV2Bind
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
activity?.apply {
mHomeV2Activity = this as HomeV2Activity
}
//续费成功后,不执行 //续费成功后,不执行
if (mRechargeBackType == ConstantInt.Type1) { if (mRechargeBackType == ConstantInt.Type1) {
return return
} }
if (mCurrentShowPetPos == mHomeV2Activity.mSelectPetPosition) { getHomeV2Activity()?.apply {
if (mCurrentShowPetPos == mSelectPetPosition) {
if (!isSelectCustomDate) { if (!isSelectCustomDate) {
if (mHistoryDataMapCommon.isMapLoadOk()) { if (mHistoryDataMapCommon.isMapLoadOk()) {
get24HourTime() get24HourTime()
@@ -228,7 +233,8 @@ class RouteV2Fragment : BaseFragment<FragmentRouteV2Binding>(FragmentRouteV2Bind
} else { } else {
//其他页面是否选择了宠物 //其他页面是否选择了宠物
if (!isSelectCustomDate) get24HourTime() if (!isSelectCustomDate) get24HourTime()
showPetNameAndHead(mHomeV2Activity.mSelectPetPosition) showPetNameAndHead(mSelectPetPosition)
}
} }
} }
@@ -290,7 +296,9 @@ class RouteV2Fragment : BaseFragment<FragmentRouteV2Binding>(FragmentRouteV2Bind
*/ */
private fun mapLoadOk() { private fun mapLoadOk() {
if (mCurrentShowPetPos == -1) return if (mCurrentShowPetPos == -1) return
showPetNameAndHead(mHomeV2Activity.mSelectPetPosition) getHomeV2Activity()?.apply {
showPetNameAndHead(mSelectPetPosition)
}
} }
/** /**
@@ -304,18 +312,15 @@ class RouteV2Fragment : BaseFragment<FragmentRouteV2Binding>(FragmentRouteV2Bind
* 显示选择的宠物 * 显示选择的宠物
*/ */
fun showPetNameAndHead(position: Int) { fun showPetNameAndHead(position: Int) {
//变量初始化 getHomeV2Activity()?.apply {
if (!::mHomeV2Activity.isInitialized) { if (mPetList.size == 0) {
return
}
if (mHomeV2Activity.mPetList.size == 0) {
return return
} }
mCurrentShowPetPos = position mCurrentShowPetPos = position
ViewUtil.instance.selectPetDialogShow( ViewUtil.instance.selectPetDialogShow(
mContext!!, mContext,
mHomeV2Activity.mPetList, mPetList,
position, position,
mViewBinding.ilHomeRoutePetHead.homeDataPetNameSmall, mViewBinding.ilHomeRoutePetHead.homeDataPetNameSmall,
mViewBinding.ilHomeRoutePetHead.homeDataPetHeadSmall.appHeadImage mViewBinding.ilHomeRoutePetHead.homeDataPetHeadSmall.appHeadImage
@@ -325,17 +330,18 @@ class RouteV2Fragment : BaseFragment<FragmentRouteV2Binding>(FragmentRouteV2Bind
getHistoryDay(mViewBinding.tvHomeRouteCalendarFrom) getHistoryDay(mViewBinding.tvHomeRouteCalendarFrom)
} }
} }
}
private fun setLatLngData(data: MutableList<HistoryDataBean>) { private fun setLatLngData(data: MutableList<HistoryDataBean>) {
viewLifecycleOwner.lifecycleScope.launch { viewLifecycleOwner.lifecycleScope.launch {
mHistoryDataList = data mHistoryDataList = data
mHomeV2Activity.getPet(false)?.let { getHomeV2Activity()?.getPet(false)?.let {
mHistoryDataMapCommon.setPetBean(it) mHistoryDataMapCommon.setPetBean(it)
} }
if (isResumed) { if (isResumed) {
mHomeV2Activity.getPet()?.let { pet -> getHomeV2Activity()?.getPet()?.let { pet ->
if (Util.checkPackageLimit(mHomeV2Activity, pet.deviceId)) { if (Util.checkPackageLimit(getHomeV2Activity()!!, pet.deviceId)) {
mRechargeBackType = pet.availableOrder mRechargeBackType = pet.availableOrder
mHistoryDataMapCommon.setPetUserLatLng() mHistoryDataMapCommon.setPetUserLatLng()
return@launch return@launch
@@ -381,11 +387,11 @@ class RouteV2Fragment : BaseFragment<FragmentRouteV2Binding>(FragmentRouteV2Bind
checkCorrectDate(cSelectView) checkCorrectDate(cSelectView)
} }
mHomeV2Activity.getPet()?.apply { getHomeV2Activity()?.getPet()?.apply {
initState() initState()
mViewBinding.miHomeRouteAddressView.visibility = View.GONE mViewBinding.miHomeRouteAddressView.visibility = View.GONE
mDataDetailViewModel.getHistoryByDay( mDataDetailViewModel.getHistoryByDay(
mHomeV2Activity, deviceId, mFromTimestamp / 1000, mToTimestamp / 1000 getHomeV2Activity()!!, deviceId, mFromTimestamp / 1000, mToTimestamp / 1000
) )
} }
} }
@@ -426,15 +432,15 @@ class RouteV2Fragment : BaseFragment<FragmentRouteV2Binding>(FragmentRouteV2Bind
// mContext, NotificationV2Activity::class.java // mContext, NotificationV2Activity::class.java
// ) // )
// ) // )
ilHomeRoutePetHead.homeDataPetNameSmall, ilHomeRoutePetHead.homeDataPetHeadSmall.root -> mHomeV2Activity.selectPetDialog() ilHomeRoutePetHead.homeDataPetNameSmall, ilHomeRoutePetHead.homeDataPetHeadSmall.root -> getHomeV2Activity()?.selectPetDialog()
llHomeRouteCalendarFrom -> { llHomeRouteCalendarFrom -> {
mHomeV2Activity.getPet()?.let { getHomeV2Activity()?.getPet()?.let {
//防止执行多次弹窗 //防止执行多次弹窗
if (Util.isTimeLimit(mLimitExecutionTime)) { if (Util.isTimeLimit(mLimitExecutionTime)) {
return@apply return@apply
} }
if (Util.checkPackageLimit(mHomeV2Activity, it.deviceId)) { if (Util.checkPackageLimit(getHomeV2Activity()!!, it.deviceId)) {
mRechargeBackType = it.availableOrder mRechargeBackType = it.availableOrder
mLimitExecutionTime = System.currentTimeMillis() mLimitExecutionTime = System.currentTimeMillis()
return@apply return@apply
@@ -458,12 +464,12 @@ class RouteV2Fragment : BaseFragment<FragmentRouteV2Binding>(FragmentRouteV2Bind
} }
llHomeRouteCalendarTo -> { llHomeRouteCalendarTo -> {
mHomeV2Activity.getPet()?.let { getHomeV2Activity()?.getPet()?.let {
//防止执行多次弹窗 //防止执行多次弹窗
if (Util.isTimeLimit(mLimitExecutionTime)) { if (Util.isTimeLimit(mLimitExecutionTime)) {
return@apply return@apply
} }
if (Util.checkPackageLimit(mHomeV2Activity, it.deviceId)) { if (Util.checkPackageLimit(getHomeV2Activity()!!, it.deviceId)) {
mRechargeBackType = it.availableOrder mRechargeBackType = it.availableOrder
mLimitExecutionTime = System.currentTimeMillis() mLimitExecutionTime = System.currentTimeMillis()
return@apply return@apply

View File

@@ -68,8 +68,6 @@ class HomeTrackFragment :
private val mDeviceDFUViewModel: DeviceDFUViewModel by viewModels() private val mDeviceDFUViewModel: DeviceDFUViewModel by viewModels()
private val mDownLoadFileViewModel: DownLoadFileViewModel by viewModels() private val mDownLoadFileViewModel: DownLoadFileViewModel by viewModels()
private lateinit var mHomeV2Activity: HomeV2Activity
private lateinit var mHomePetTrackStateAdapter: HomePetTrackStateAdapter private lateinit var mHomePetTrackStateAdapter: HomePetTrackStateAdapter
private lateinit var mTrackStateList: MutableList<MenuTxtBean> private lateinit var mTrackStateList: MutableList<MenuTxtBean>
@@ -101,7 +99,6 @@ class HomeTrackFragment :
} }
override fun initData() { override fun initData() {
mHomeV2Activity = activity as HomeV2Activity
mViewBinding.apply { mViewBinding.apply {
root.setBackgroundResource(R.color.transparent) root.setBackgroundResource(R.color.transparent)
addListData() addListData()
@@ -142,7 +139,7 @@ class HomeTrackFragment :
mFencesAdapter = FencesZoneAdapter(mContext!!, mFencesList, false).apply { mFencesAdapter = FencesZoneAdapter(mContext!!, mFencesList, false).apply {
setOnItemClickListener(object : BaseRecyclerAdapter.OnItemClickListener { setOnItemClickListener(object : BaseRecyclerAdapter.OnItemClickListener {
override fun onItemClick(itemView: View?, pos: Int) { override fun onItemClick(itemView: View?, pos: Int) {
mHomeV2Activity.getPet()?.apply { getHomeV2Activity()?.getPet()?.apply {
goPetDataActivity(VirtualFencesActivity::class.java) goPetDataActivity(VirtualFencesActivity::class.java)
} }
} }
@@ -151,8 +148,8 @@ class HomeTrackFragment :
override fun onAgainListener() { override fun onAgainListener() {
val share = MMKVUtil.getInt(MMKVKey.Shared) val share = MMKVUtil.getInt(MMKVKey.Shared)
if (share == ConstantInt.NoShare) { if (share == ConstantInt.NoShare) {
mHomeV2Activity.getPet()?.let { pet -> getHomeV2Activity()?.getPet()?.let { pet ->
if (Util.checkPackageLimit(mHomeV2Activity, pet.deviceId)) { if (Util.checkPackageLimit(getHomeV2Activity()!!, pet.deviceId)) {
return return
} }
} }
@@ -202,10 +199,19 @@ class HomeTrackFragment :
getPetTrackerInfoData() getPetTrackerInfoData()
} }
private fun getHomeV2Activity(): HomeV2Activity? {
return if (null == activity) {
LogUtil.e("HomeTrackFragment,getHomeV2Activity,null == activity")
null
} else {
activity as HomeV2Activity
}
}
override fun liveDataObserve() { override fun liveDataObserve() {
//接收蓝牙连接状态 //接收蓝牙连接状态
XEventBus.observe(this, EventName.ConnectDeviceState) { ble: BleTrackDeviceBean -> XEventBus.observe(this, EventName.ConnectDeviceState) { ble: BleTrackDeviceBean ->
mHomeV2Activity.getPet()?.apply { getHomeV2Activity()?.getPet()?.apply {
if (ble.mac == macID) { if (ble.mac == macID) {
updateConState(ble) updateConState(ble)
} }
@@ -213,7 +219,7 @@ class HomeTrackFragment :
} }
//接收开蓝牙操作,然后搜索连接设备 //接收开蓝牙操作,然后搜索连接设备
XEventBus.observe(this, EventName.ActionConDeviceState) { conState: Int -> XEventBus.observe(this, EventName.ActionConDeviceState) { conState: Int ->
mHomeV2Activity.getPet()?.apply { getHomeV2Activity()?.getPet()?.apply {
if (BleManager.getInstance().isConnected(macID)) return@apply if (BleManager.getInstance().isConnected(macID)) return@apply
if (conState == ConState.CONNECTING || conState == ConState.CONNECTING_MAC) { if (conState == ConState.CONNECTING || conState == ConState.CONNECTING_MAC) {
mTrackStateList[4].apply { mTrackStateList[4].apply {
@@ -243,7 +249,7 @@ class HomeTrackFragment :
} }
//蓝牙上报的数据 //蓝牙上报的数据
XEventBus.observe(this, EventName.BleReportData) { reportData: BleReportDataBean -> XEventBus.observe(this, EventName.BleReportData) { reportData: BleReportDataBean ->
mHomeV2Activity.getPet(false)?.apply { getHomeV2Activity()?.getPet(false)?.apply {
if (macID == reportData.mac) updateBleReportData(reportData) if (macID == reportData.mac) updateBleReportData(reportData)
} }
} }
@@ -306,10 +312,12 @@ class HomeTrackFragment :
mDFUNewDialogDialog?.setDFUProgress(100) mDFUNewDialogDialog?.setDFUProgress(100)
isDFUCallback = true isDFUCallback = true
mBleTrackDeviceBean?.let { ble -> mBleTrackDeviceBean?.let { ble ->
getHomeV2Activity()?.apply {
mConnectionDeviceViewModel.connectDeviceToMac( mConnectionDeviceViewModel.connectDeviceToMac(
mHomeV2Activity, ble.mac, false this, ble.mac, false
) )
} }
}
} else if (progress == mDeviceDFUViewModel.mDFUFailCode) { } else if (progress == mDeviceDFUViewModel.mDFUFailCode) {
// mTrackerDFUStateDialog?.dismiss() // mTrackerDFUStateDialog?.dismiss()
mDFUNewDialogDialog?.setDFUFail { mDFUNewDialogDialog?.setDFUFail {
@@ -351,13 +359,10 @@ class HomeTrackFragment :
} }
fun getPetTrackerInfoData() { fun getPetTrackerInfoData() {
//变量初始化 getHomeV2Activity()?.let {
if (!::mHomeV2Activity.isInitialized) { it.getPet()?.apply {
return
}
mHomeV2Activity.getPet()?.apply {
// mViewBinding.ivHomePetTrackPetHead.load(imgurl) // mViewBinding.ivHomePetTrackPetHead.load(imgurl)
mTrackerInfoViewModel.getPetTrackerInfo(mHomeV2Activity, deviceId) mTrackerInfoViewModel.getPetTrackerInfo(it, deviceId)
mTrackMenuList[1].menuValue = "" mTrackMenuList[1].menuValue = ""
mTrackMenuList[2].menuValue = "" mTrackMenuList[2].menuValue = ""
@@ -393,6 +398,7 @@ class HomeTrackFragment :
mTrackMenuAdapter.notifyItemRangeChanged(1, 3) mTrackMenuAdapter.notifyItemRangeChanged(1, 3)
} }
} }
}
/** /**
* 显示分享的设备状态 * 显示分享的设备状态
@@ -724,7 +730,7 @@ class HomeTrackFragment :
mTrackMenuList[3].menuValue = strVersion mTrackMenuList[3].menuValue = strVersion
mTrackMenuList[3].isSwitch = false mTrackMenuList[3].isSwitch = false
mTrackMenuAdapter.notifyItemChanged(3) mTrackMenuAdapter.notifyItemChanged(3)
mDeviceDFUViewModel.getFirmware(mHomeV2Activity, false) mDeviceDFUViewModel.getFirmware()
mBleTrackDeviceBean?.apply { mBleTrackDeviceBean?.apply {
SRBleUtil.instance.writeData( SRBleUtil.instance.writeData(
bleDevice, SRBleCmdUtil.instance.ledState(SRBleCmdUtil.CMD_READ, 0) bleDevice, SRBleCmdUtil.instance.ledState(SRBleCmdUtil.CMD_READ, 0)
@@ -755,7 +761,7 @@ class HomeTrackFragment :
} }
} else if (data0 == 4 && data1 == 1 && data2 == 0) { } else if (data0 == 4 && data1 == 1 && data2 == 0) {
mMapDeviceBean?.let { mMapDeviceBean?.let {
mTrackerSetViewModel.turnOff(mHomeV2Activity, it.deviceServerId) mTrackerSetViewModel.turnOff(it.deviceServerId)
} }
mTrackMenuList[1].menuValue = "" mTrackMenuList[1].menuValue = ""
mTrackMenuList[2].menuValue = "" mTrackMenuList[2].menuValue = ""
@@ -773,7 +779,7 @@ class HomeTrackFragment :
} }
fun goPetDataActivity(cls: Class<*>) { fun goPetDataActivity(cls: Class<*>) {
mHomeV2Activity.getPet()?.apply { getHomeV2Activity()?.getPet()?.apply {
val intent = Intent(mContext, cls) val intent = Intent(mContext, cls)
intent.putExtra(ConstantString.Pet, this) intent.putExtra(ConstantString.Pet, this)
startActivity(intent) startActivity(intent)
@@ -792,7 +798,7 @@ class HomeTrackFragment :
* 获取当前宠物的连接设备 * 获取当前宠物的连接设备
*/ */
private fun getBleTrackDeviceBean(isShowBleUnConTip: Boolean = true): BleTrackDeviceBean? { private fun getBleTrackDeviceBean(isShowBleUnConTip: Boolean = true): BleTrackDeviceBean? {
mHomeV2Activity.getPet()?.apply { getHomeV2Activity()?.getPet()?.apply {
if (null == mBleTrackDeviceBean) { if (null == mBleTrackDeviceBean) {
mBleTrackDeviceBean = SRBleUtil.instance.getConnectMacDevice(macID) mBleTrackDeviceBean = SRBleUtil.instance.getConnectMacDevice(macID)
} else { } else {
@@ -829,8 +835,10 @@ class HomeTrackFragment :
private fun connectionBtn(btnString: String) { private fun connectionBtn(btnString: String) {
if (btnString == getString(R.string.txt_unconnect_no)) { if (btnString == getString(R.string.txt_unconnect_no)) {
Util.checkBluetoothPermissionsEnabled(mContext!!, { Util.checkBluetoothPermissionsEnabled(mContext!!, {
mHomeV2Activity.getPet()?.apply { getHomeV2Activity()?.getPet()?.apply {
mConnectionDeviceViewModel.connectDeviceToMac(mHomeV2Activity, macID, false) mConnectionDeviceViewModel.connectDeviceToMac(
getHomeV2Activity()!!, macID, false
)
} }
}) })
} else if (btnString == getString(R.string.txt_connected)) { } else if (btnString == getString(R.string.txt_connected)) {
@@ -926,28 +934,21 @@ class HomeTrackFragment :
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
activity?.apply { getHomeV2Activity()?.apply {
mHomeV2Activity = this as HomeV2Activity
}
//变量初始化
if (!::mHomeV2Activity.isInitialized) {
return
}
DfuServiceListenerHelper.registerProgressListener( DfuServiceListenerHelper.registerProgressListener(
mContext!!, mDeviceDFUViewModel.mDfuProgressListener mContext, mDeviceDFUViewModel.mDfuProgressListener
) )
} }
}
override fun onPause() { override fun onPause() {
super.onPause() super.onPause()
//变量初始化 getHomeV2Activity()?.apply {
if (!::mHomeV2Activity.isInitialized) {
return
}
DfuServiceListenerHelper.unregisterProgressListener( DfuServiceListenerHelper.unregisterProgressListener(
mContext!!, mDeviceDFUViewModel.mDfuProgressListener mContext, mDeviceDFUViewModel.mDfuProgressListener
) )
} }
}
override fun onClick(v: View?) { override fun onClick(v: View?) {

View File

@@ -117,7 +117,7 @@ class MapV2Fragment : BaseFragment<FragmentMapV2Binding>(FragmentMapV2Binding::i
mContext!!, miHomeMapAddressView, dnHomeMapNetView mContext!!, miHomeMapAddressView, dnHomeMapNetView
) { mapLoadOk() } ) { mapLoadOk() }
dnHomeMapNetView.setShowNetType(MapDeviceNetView.WIFI_NET_TYPE) dnHomeMapNetView.setShowNetType(MapDeviceNetView.NO_NET_TYPE)
llHomeMapTopPet.ivTopPetBtnSmall.setImageResource(R.drawable.icon_map_type) llHomeMapTopPet.ivTopPetBtnSmall.setImageResource(R.drawable.icon_map_type)
ViewUtil.instance.setMapSwitchLocationButtonImage( ViewUtil.instance.setMapSwitchLocationButtonImage(
@@ -521,6 +521,7 @@ class MapV2Fragment : BaseFragment<FragmentMapV2Binding>(FragmentMapV2Binding::i
) )
if (mHomeMapCommon.isMapLoadOk()) { if (mHomeMapCommon.isMapLoadOk()) {
isMoveCamera=true
mHomeMapCommon.clearMarker() mHomeMapCommon.clearMarker()
mViewBinding.miHomeMapAddressView.visibility = View.GONE mViewBinding.miHomeMapAddressView.visibility = View.GONE
mViewBinding.rvHomeMapDeviceMsg.visibility = View.GONE mViewBinding.rvHomeMapDeviceMsg.visibility = View.GONE

View File

@@ -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>(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<DataBean>
private lateinit var mDeviceStateAdapter: HomeMapDeviceStateAdapter
private lateinit var mDeviceMsgList: MutableList<DataBean>
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<FamilyBean>) {
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<FamilyBean>) {
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()
}
}
}
}

View File

@@ -10,6 +10,7 @@ import com.abbidot.baselibrary.constant.MMKVKey
import com.abbidot.baselibrary.eventbus.XEventBus import com.abbidot.baselibrary.eventbus.XEventBus
import com.abbidot.baselibrary.list.BaseRecyclerAdapter import com.abbidot.baselibrary.list.BaseRecyclerAdapter
import com.abbidot.baselibrary.util.AppUtils import com.abbidot.baselibrary.util.AppUtils
import com.abbidot.baselibrary.util.LogUtil
import com.abbidot.baselibrary.util.MMKVUtil import com.abbidot.baselibrary.util.MMKVUtil
import com.abbidot.baselibrary.util.Utils import com.abbidot.baselibrary.util.Utils
import com.abbidot.tracker.R import com.abbidot.tracker.R
@@ -43,8 +44,6 @@ class HomePetFragment : BaseFragment<FragmentHomePetBinding>(FragmentHomePetBind
private val mPetViewModel: PetInfoViewModel by viewModels() private val mPetViewModel: PetInfoViewModel by viewModels()
private lateinit var mHomeV2Activity: HomeV2Activity
private lateinit var mPetLabelsAdapter: PetLabelsAdapter private lateinit var mPetLabelsAdapter: PetLabelsAdapter
private lateinit var mPetsBadgesAdapter: PetsBadgesAdapter private lateinit var mPetsBadgesAdapter: PetsBadgesAdapter
private lateinit var mFamilyAdapter: HomePetFamilyAdapter private lateinit var mFamilyAdapter: HomePetFamilyAdapter
@@ -59,7 +58,6 @@ class HomePetFragment : BaseFragment<FragmentHomePetBinding>(FragmentHomePetBind
} }
override fun initData() { override fun initData() {
mHomeV2Activity = activity as HomeV2Activity
mViewBinding.apply { mViewBinding.apply {
root.setBackgroundResource(R.color.transparent) root.setBackgroundResource(R.color.transparent)
mPetLabelsAdapter = PetLabelsAdapter(mContext!!, null) mPetLabelsAdapter = PetLabelsAdapter(mContext!!, null)
@@ -87,8 +85,8 @@ class HomePetFragment : BaseFragment<FragmentHomePetBinding>(FragmentHomePetBind
mFamilyAdapter = HomePetFamilyAdapter(mContext!!, null).apply { mFamilyAdapter = HomePetFamilyAdapter(mContext!!, null).apply {
setOnAgainClickListener(object : BaseRecyclerAdapter.OnAgainClickListener { setOnAgainClickListener(object : BaseRecyclerAdapter.OnAgainClickListener {
override fun onAgainListener() { override fun onAgainListener() {
mHomeV2Activity.getPet()?.let { pet -> getHomeV2Activity()?.getPet()?.let { pet ->
if (Util.checkPackageLimit(mHomeV2Activity, pet.deviceId)) { if (Util.checkPackageLimit(getHomeV2Activity()!!, pet.deviceId)) {
return return
} }
} }
@@ -116,15 +114,18 @@ class HomePetFragment : BaseFragment<FragmentHomePetBinding>(FragmentHomePetBind
getPetAllInfoData() getPetAllInfoData()
} }
private fun getHomeV2Activity(): HomeV2Activity? {
return if (null == activity) {
LogUtil.e("HomePetFragment,getHomeV2Activity,null == activity")
null
} else {
activity as HomeV2Activity
}
}
fun getPetAllInfoData() { fun getPetAllInfoData() {
activity?.apply { getHomeV2Activity()?.let {
mHomeV2Activity = this as HomeV2Activity it.getPet(false)?.apply {
}
//变量初始化
if (!::mHomeV2Activity.isInitialized) {
return
}
mHomeV2Activity.getPet(false)?.apply {
val share = MMKVUtil.getInt(MMKVKey.Shared) val share = MMKVUtil.getInt(MMKVKey.Shared)
//被邀请的不显示家庭邀请信息 //被邀请的不显示家庭邀请信息
mViewBinding.apply { mViewBinding.apply {
@@ -138,7 +139,8 @@ class HomePetFragment : BaseFragment<FragmentHomePetBinding>(FragmentHomePetBind
rlHomePetV2FamilyLayout.visibility = View.GONE rlHomePetV2FamilyLayout.visibility = View.GONE
} }
} }
mPetViewModel.getPetAllInfo(mHomeV2Activity, petId) mPetViewModel.getPetAllInfo(it, petId)
}
} }
} }

View File

@@ -6,6 +6,7 @@ import androidx.core.view.WindowInsetsCompat
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.viewpager2.widget.ViewPager2 import androidx.viewpager2.widget.ViewPager2
import com.abbidot.baselibrary.util.AppUtils import com.abbidot.baselibrary.util.AppUtils
import com.abbidot.baselibrary.util.LogUtil
import com.abbidot.tracker.adapter.ViewPagerAdapter import com.abbidot.tracker.adapter.ViewPagerAdapter
import com.abbidot.tracker.base.BaseFragment import com.abbidot.tracker.base.BaseFragment
import com.abbidot.tracker.databinding.FragmentPetV2Binding import com.abbidot.tracker.databinding.FragmentPetV2Binding
@@ -21,7 +22,6 @@ import com.abbidot.tracker.util.ViewUtil
class PetV2Fragment : BaseFragment<FragmentPetV2Binding>(FragmentPetV2Binding::inflate) { class PetV2Fragment : BaseFragment<FragmentPetV2Binding>(FragmentPetV2Binding::inflate) {
private lateinit var mFragments: MutableList<Fragment> private lateinit var mFragments: MutableList<Fragment>
private lateinit var mHomeV2Activity: HomeV2Activity
//当前这个页面显示的宠物下标 //当前这个页面显示的宠物下标
private var mCurrentShowPetPos = -1 private var mCurrentShowPetPos = -1
@@ -34,13 +34,12 @@ class PetV2Fragment : BaseFragment<FragmentPetV2Binding>(FragmentPetV2Binding::i
} }
override fun initData() { override fun initData() {
mHomeV2Activity = activity as HomeV2Activity
mFragments = mutableListOf( mFragments = mutableListOf(
HomePetFragment.newInstance(mContext!!), HomeTrackFragment.newInstance(mContext!!) HomePetFragment.newInstance(mContext!!), HomeTrackFragment.newInstance(mContext!!)
) )
mViewBinding.apply { mViewBinding.apply {
mHomeV2Activity.edgeToEdgeAdapterBars( getHomeV2Activity()?.edgeToEdgeAdapterBars(
root, WindowInsetsCompat.Type.statusBars() root, WindowInsetsCompat.Type.statusBars()
) )
ilHomePetTopBar.ivTopPetBtnSmall.visibility = View.GONE ilHomePetTopBar.ivTopPetBtnSmall.visibility = View.GONE
@@ -75,26 +74,34 @@ class PetV2Fragment : BaseFragment<FragmentPetV2Binding>(FragmentPetV2Binding::i
} }
if (AppUtils.isDebug()) { if (AppUtils.isDebug()) {
ilHomePetTopBar.homeDataPetHeadSmall.appHeadImage.setOnLongClickListener { ilHomePetTopBar.homeDataPetHeadSmall.appHeadImage.setOnLongClickListener {
mHomeV2Activity.goToDebugActivity() getHomeV2Activity()?.goToDebugActivity()
true true
} }
} }
} }
} }
private fun getHomeV2Activity(): HomeV2Activity? {
return if (null == activity) {
LogUtil.e("PetV2Fragment,getHomeV2Activity,null == activity")
null
} else {
activity as HomeV2Activity
}
}
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
activity?.apply {
mHomeV2Activity = this as HomeV2Activity
}
(mFragments[1] as HomeTrackFragment).onResume() (mFragments[1] as HomeTrackFragment).onResume()
getHomeV2Activity()?.apply {
//其他页面是否选择了宠物 //其他页面是否选择了宠物
if (mCurrentShowPetPos != mHomeV2Activity.mSelectPetPosition) { if (mCurrentShowPetPos != mSelectPetPosition) {
showPetNameAndHead(mHomeV2Activity.mSelectPetPosition) showPetNameAndHead(mSelectPetPosition)
} else { } else {
(mFragments[1] as HomeTrackFragment).getPetTrackerInfoData() (mFragments[1] as HomeTrackFragment).getPetTrackerInfoData()
} }
} }
}
override fun onPause() { override fun onPause() {
super.onPause() super.onPause()
@@ -112,11 +119,8 @@ class PetV2Fragment : BaseFragment<FragmentPetV2Binding>(FragmentPetV2Binding::i
* 显示选择宠物 * 显示选择宠物
*/ */
fun showPetNameAndHead(position: Int) { fun showPetNameAndHead(position: Int) {
//变量初始化 getHomeV2Activity()?.let {
if (!::mHomeV2Activity.isInitialized) { if (it.mPetList.size == 0) {
return
}
if (mHomeV2Activity.mPetList.size == 0) {
return return
} }
mCurrentShowPetPos = position mCurrentShowPetPos = position
@@ -125,7 +129,7 @@ class PetV2Fragment : BaseFragment<FragmentPetV2Binding>(FragmentPetV2Binding::i
ViewUtil.instance.selectPetDialogShow( ViewUtil.instance.selectPetDialogShow(
mContext!!, mContext!!,
mHomeV2Activity.mPetList, it.mPetList,
position, position,
mViewBinding.ilHomePetTopBar.homeDataPetNameSmall, mViewBinding.ilHomePetTopBar.homeDataPetNameSmall,
mViewBinding.ilHomePetTopBar.homeDataPetHeadSmall.appHeadImage mViewBinding.ilHomePetTopBar.homeDataPetHeadSmall.appHeadImage
@@ -134,11 +138,12 @@ class PetV2Fragment : BaseFragment<FragmentPetV2Binding>(FragmentPetV2Binding::i
(mFragments[0] as HomePetFragment).getPetAllInfoData() (mFragments[0] as HomePetFragment).getPetAllInfoData()
(mFragments[1] as HomeTrackFragment).getPetTrackerInfoData() (mFragments[1] as HomeTrackFragment).getPetTrackerInfoData()
} }
}
override fun onClick(v: View?) { override fun onClick(v: View?) {
mViewBinding.apply { mViewBinding.apply {
when (v!!) { when (v!!) {
ilHomePetTopBar.homeDataPetNameSmall, ilHomePetTopBar.homeDataPetHeadSmall.root -> mHomeV2Activity.selectPetDialog() ilHomePetTopBar.homeDataPetNameSmall, ilHomePetTopBar.homeDataPetHeadSmall.root -> getHomeV2Activity()?.selectPetDialog()
} }
} }
} }

View File

@@ -9,7 +9,6 @@ import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import com.abbidot.baselibrary.util.LogUtil import com.abbidot.baselibrary.util.LogUtil
import com.abbidot.tracker.R import com.abbidot.tracker.R
import com.abbidot.tracker.base.BaseActivity
import com.abbidot.tracker.bean.DFUStateBean import com.abbidot.tracker.bean.DFUStateBean
import com.abbidot.tracker.bean.FirmwareBean import com.abbidot.tracker.bean.FirmwareBean
import com.abbidot.tracker.retrofit2.NetworkApi import com.abbidot.tracker.retrofit2.NetworkApi
@@ -48,8 +47,8 @@ class DeviceDFUViewModel(application: Application) : AndroidViewModel(applicatio
/** /**
* 获取固件信息 * 获取固件信息
*/ */
fun getFirmware(activity: BaseActivity<*>, isShowLoading: Boolean = true) { fun getFirmware() {
activity.showLoading(isShowLoading) // activity.showLoading(isShowLoading)
viewModelScope.launch(Dispatchers.IO) { viewModelScope.launch(Dispatchers.IO) {
val result = NetworkApi.getFirmware("GPS_Tracker_01") val result = NetworkApi.getFirmware("GPS_Tracker_01")
mFirmwareInfoLiveData.postValue(result) mFirmwareInfoLiveData.postValue(result)

View File

@@ -26,8 +26,8 @@ class TrackerSetViewModel : ViewModel() {
/** /**
* 关闭设备 * 关闭设备
*/ */
fun turnOff(activity: BaseActivity<*>, deviceInfoId: String, turnOff: Int = 0) { fun turnOff(deviceInfoId: String, turnOff: Int = 0) {
activity.showLoading(true) // activity.showLoading(true)
viewModelScope.launch { viewModelScope.launch {
val result = NetworkApi.turnoff(deviceInfoId, turnOff) val result = NetworkApi.turnoff(deviceInfoId, turnOff)
mTurnoffLiveData.value = result mTurnoffLiveData.value = result

View File

@@ -154,8 +154,8 @@ class UserProfileViewModel : ViewModel() {
/** /**
*修改单位 *修改单位
*/ */
fun updateMeasureUnit(activity: BaseActivity<*>, measurementUnit: Int) { fun updateMeasureUnit(measurementUnit: Int) {
activity.showLoading(true) // activity.showLoading(true)
viewModelScope.launch { viewModelScope.launch {
val userId = MMKVUtil.getString(MMKVKey.UserId) val userId = MMKVUtil.getString(MMKVKey.UserId)
val result = NetworkApi.updateMeasureUnit(userId, measurementUnit) val result = NetworkApi.updateMeasureUnit(userId, measurementUnit)

View File

@@ -62,7 +62,7 @@ class MapDeviceNetView : BaseView {
override fun startDraw(canvas: Canvas) { override fun startDraw(canvas: Canvas) {
return // return
if (mNetType == NO_NET_TYPE) return if (mNetType == NO_NET_TYPE) return
canvas.apply { canvas.apply {
mPaint.apply { mPaint.apply {

Binary file not shown.

After

Width:  |  Height:  |  Size: 284 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 363 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 428 B

View File

@@ -17,7 +17,8 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_20" android:layout_marginTop="@dimen/dp_20"
android:paddingHorizontal="@dimen/dp_22" /> android:paddingHorizontal="@dimen/dp_22"
android:visibility="gone" />
<com.abbidot.tracker.widget.TypefaceTextView <com.abbidot.tracker.widget.TypefaceTextView
style="@style/my_TextView_style_v2" style="@style/my_TextView_style_v2"

View File

@@ -0,0 +1,101 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.fragment.map.MapV2Fragment">
<androidx.fragment.app.FragmentContainerView
android:id="@+id/fc_home_map_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<com.abbidot.tracker.widget.MapMarkerInfoView
android:id="@+id/mi_home_map_address_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<RelativeLayout
android:id="@+id/rl_home_map_top_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginHorizontal="@dimen/dp_8">
<include
android:id="@+id/ll_home_map_top_pet"
layout="@layout/layout_top_pet_data_small"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_8" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_home_map_device_msg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/ll_home_map_top_pet"
android:layout_centerInParent="true"
android:layout_marginTop="@dimen/dp_8" />
<com.abbidot.tracker.widget.NonSwipeRecyclerView
android:id="@+id/rv_home_map_device_state"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/ll_home_map_top_pet"
android:layout_alignParentEnd="true"
android:layout_marginTop="@dimen/dp_60"
android:layout_marginEnd="@dimen/dp_2"
android:layoutDirection="rtl" />
<include
android:id="@+id/il_home_map_pet_location"
layout="@layout/layout_pet_location_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="@dimen/dp_40" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/home_map_bluetooth_btn"
style="@style/map_image_white_btn_style"
android:layout_above="@id/il_home_map_pet_location"
android:layout_alignEnd="@id/rv_home_map_device_state"
android:layout_marginBottom="@dimen/dp_8"
android:padding="@dimen/dp_8"
android:src="@drawable/icon_map_bluetooth" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/home_map_refresh_btn"
style="@style/map_image_yellow_btn_style"
android:layout_above="@id/home_map_bluetooth_btn"
android:layout_alignEnd="@id/home_map_bluetooth_btn"
android:layout_marginBottom="@dimen/dp_8" />
<androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/home_map_live_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@id/home_map_refresh_btn"
android:background="@drawable/shape_white_alpha_circle_bg"
android:orientation="vertical"
android:paddingHorizontal="@dimen/dp_14"
android:paddingVertical="@dimen/dp_16"
android:visibility="visible">
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/icon_black_cir_ring"
android:padding="@dimen/dp_6"
android:src="@drawable/icon_red_dot" />
<com.abbidot.tracker.widget.TypefaceTextView
style="@style/my_TextView_style_v2"
android:layout_marginTop="@dimen/dp_2"
android:text="@string/txt_live"
android:textSize="@dimen/textSize12"
android:textStyle="bold" />
</androidx.appcompat.widget.LinearLayoutCompat>
</RelativeLayout>
</FrameLayout>

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/shape16_white_color_bg"
android:orientation="vertical"
android:paddingHorizontal="@dimen/dp_12">
<com.abbidot.tracker.widget.TypefaceTextView
android:id="@+id/tv_pet_location_reverse_geocode"
style="@style/my_TextView_style_v2"
android:layout_marginTop="@dimen/dp_28"
android:drawablePadding="@dimen/dp_2"
android:textSize="@dimen/textSize16"
app:typeface="@string/roboto_regular_font" />
<com.abbidot.tracker.widget.TypefaceTextView
style="@style/my_TextView_style_v2"
android:layout_below="@id/tv_pet_location_reverse_geocode"
android:layout_alignParentEnd="true"
android:layout_marginBottom="@dimen/dp_12"
android:textColor="@color/select_color3"
android:textSize="@dimen/textSize12"
app:typeface="@string/roboto_regular_font" />
</RelativeLayout>

View File

@@ -1049,4 +1049,6 @@
<string name="txt_fence_saved">Saved. Active when online.</string> <string name="txt_fence_saved">Saved. Active when online.</string>
<string name="txt_show_crash">The program has an exception and is about to exit</string> <string name="txt_show_crash">The program has an exception and is about to exit</string>
<string name="txt_activate_subscribe">Activate Subscription</string>
</resources> </resources>