1.map页改版前
This commit is contained in:
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -152,7 +152,7 @@ class FirstMeasurementUnitsActivity :
|
|||||||
})
|
})
|
||||||
|
|
||||||
btnFirstMeasurementUnitsSave -> mUserProfileViewModel.updateMeasureUnit(
|
btnFirstMeasurementUnitsSave -> mUserProfileViewModel.updateMeasureUnit(
|
||||||
this@FirstMeasurementUnitsActivity, mMeasurementUnit
|
mMeasurementUnit
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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 ->
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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?) {
|
||||||
|
|||||||
@@ -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()
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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?) {
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
BIN
app/src/main/res/drawable-xhdpi/icon_wifi_image.png
Normal file
BIN
app/src/main/res/drawable-xhdpi/icon_wifi_image.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 284 B |
BIN
app/src/main/res/drawable-xxhdpi/icon_wifi_image.png
Normal file
BIN
app/src/main/res/drawable-xxhdpi/icon_wifi_image.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 363 B |
BIN
app/src/main/res/drawable-xxxhdpi/icon_wifi_image.png
Normal file
BIN
app/src/main/res/drawable-xxxhdpi/icon_wifi_image.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 428 B |
@@ -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"
|
||||||
|
|||||||
101
app/src/main/res/layout/fragment_map_v3.xml
Normal file
101
app/src/main/res/layout/fragment_map_v3.xml
Normal 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>
|
||||||
28
app/src/main/res/layout/layout_pet_location_info.xml
Normal file
28
app/src/main/res/layout/layout_pet_location_info.xml
Normal 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>
|
||||||
@@ -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>
|
||||||
Reference in New Issue
Block a user