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.data.ActivityV2Fragment
|
||||
import com.abbidot.tracker.ui.fragment.data.RouteV2Fragment
|
||||
import com.abbidot.tracker.ui.fragment.map.MapV2Fragment
|
||||
import com.abbidot.tracker.ui.fragment.map.MapV3Fragment
|
||||
import com.abbidot.tracker.ui.fragment.pet.PetV2Fragment
|
||||
import com.abbidot.tracker.util.BleReportManage
|
||||
import com.abbidot.tracker.util.SocketUtilManage
|
||||
@@ -92,7 +92,7 @@ class HomeV2Activity : BaseActivity<ActivityHomeV2Binding>(ActivityHomeV2Binding
|
||||
private val mFragments = mutableListOf<Fragment>(
|
||||
ActivityV2Fragment.newInstance(this),
|
||||
RouteV2Fragment.newInstance(this),
|
||||
MapV2Fragment.newInstance(this),
|
||||
MapV3Fragment.newInstance(this),
|
||||
PetV2Fragment.newInstance(this),
|
||||
AccountV2Fragment.newInstance(this)
|
||||
)
|
||||
@@ -338,7 +338,7 @@ class HomeV2Activity : BaseActivity<ActivityHomeV2Binding>(ActivityHomeV2Binding
|
||||
getPet(false)?.apply {
|
||||
mLogBleReportViewModel.uploadLog(mContext, macID)
|
||||
}
|
||||
(mFragments[2] as MapV2Fragment).showPetNameAndHead(mSelectPetPosition)
|
||||
(mFragments[2] as MapV3Fragment).showPetNameAndHead(mSelectPetPosition)
|
||||
} else {
|
||||
onChangeClick(mSelectPetPosition)
|
||||
when (mViewBinding.homeV2ViewPager2.currentItem) {
|
||||
@@ -453,7 +453,7 @@ class HomeV2Activity : BaseActivity<ActivityHomeV2Binding>(ActivityHomeV2Binding
|
||||
when (mViewBinding.homeV2ViewPager2.currentItem) {
|
||||
0 -> (mFragments[0] as ActivityV2Fragment).showPetNameAndHead(position)
|
||||
1 -> (mFragments[1] as RouteV2Fragment).showPetNameAndHead(position)
|
||||
2 -> (mFragments[2] as MapV2Fragment).showPetNameAndHead(position)
|
||||
2 -> (mFragments[2] as MapV3Fragment).showPetNameAndHead(position)
|
||||
3 -> (mFragments[3] as PetV2Fragment).showPetNameAndHead(position)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -126,9 +126,7 @@ class AddPairedSuccessActivity :
|
||||
MMKVUtil.putInt(MMKVKey.isBindDevice, ConstantInt.isBind)
|
||||
XEventBus.post(EventName.RefreshDevice)
|
||||
if (isFirstBind) {
|
||||
mUserProfileViewModel.updateMeasureUnit(
|
||||
this@AddPairedSuccessActivity, ConstantInt.Type1
|
||||
)
|
||||
mUserProfileViewModel.updateMeasureUnit(ConstantInt.Type1)
|
||||
// val intent = Intent(mContext, FirstSetPetTypeActivity::class.java)
|
||||
// intent.putExtra(ConstantString.isFirstBind, isFirstBind)
|
||||
// startActivityFinish(intent)
|
||||
|
||||
@@ -136,7 +136,7 @@ class LiveActivityV2 : BaseActivity<ActivityLiveV2Binding>(ActivityLiveV2Binding
|
||||
mFragment = mHomeMapCommon.getMapFragment(
|
||||
mContext, miLiveV2MapAddressView, dnLiveV2MapNetView
|
||||
) { mapLoadOk() }
|
||||
dnLiveV2MapNetView.setShowNetType(MapDeviceNetView.WIFI_NET_TYPE)
|
||||
dnLiveV2MapNetView.setShowNetType(MapDeviceNetView.NO_NET_TYPE)
|
||||
ViewUtil.instance.setMapSwitchLocationButtonImage(
|
||||
ivMapLiveV2RefreshBtn, mShowCenterLocation
|
||||
)
|
||||
|
||||
@@ -152,7 +152,7 @@ class FirstMeasurementUnitsActivity :
|
||||
})
|
||||
|
||||
btnFirstMeasurementUnitsSave -> mUserProfileViewModel.updateMeasureUnit(
|
||||
this@FirstMeasurementUnitsActivity, mMeasurementUnit
|
||||
mMeasurementUnit
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,7 +56,7 @@ class ChoosePlanActivity :
|
||||
if (packageTypeName == "Basic") {
|
||||
setTopBarTitle(R.string.txt_basic_plan)
|
||||
} else {
|
||||
setTopBarTitle(R.string.txt_premium_plan)
|
||||
setTopBarTitle(R.string.txt_choose_your_plan)
|
||||
}
|
||||
}
|
||||
setLeftBackImage(R.drawable.icon_white_back_svg)
|
||||
|
||||
@@ -241,8 +241,7 @@ class PaymentSuccessActivity :
|
||||
XEventBus.post(EventName.PayBack)
|
||||
mPayResult?.let {
|
||||
if (it.rechargeType == ConstantInt.Type0) {
|
||||
mUserProfileViewModel.updateMeasureUnit(
|
||||
this@PaymentSuccessActivity, ConstantInt.Type1
|
||||
mUserProfileViewModel.updateMeasureUnit( ConstantInt.Type1
|
||||
)
|
||||
|
||||
// val intent = Intent(mContext, FirstSetPetTypeActivity::class.java)
|
||||
|
||||
@@ -57,6 +57,7 @@ class RequestRefundActivity :
|
||||
override fun onResult(any: Any) {
|
||||
it.getOrNull()?.apply {
|
||||
if (isCanRefund == ConstantInt.Type0) {
|
||||
XEventBus.post(EventName.RefreshPackage)
|
||||
showToast(R.string.txt_successful, true)
|
||||
} else {
|
||||
mSetMealBean?.let { meal ->
|
||||
|
||||
@@ -42,7 +42,7 @@ class SubscriptionPlanActivity :
|
||||
|
||||
override fun initData() {
|
||||
super.initData()
|
||||
setTopBarTitle(R.string.txt_choose_your_plan)
|
||||
setTopBarTitle(R.string.txt_activate_subscribe)
|
||||
setLeftBackImage(R.drawable.icon_white_back_svg)
|
||||
|
||||
intent.extras?.apply {
|
||||
|
||||
@@ -45,7 +45,6 @@ class AccountV2Fragment :
|
||||
|
||||
private lateinit var mMenuAdapter: HomeAccountMenuAdapter
|
||||
private lateinit var mMenuList: MutableList<MenuTxtBean>
|
||||
private lateinit var mHomeV2Activity: HomeV2Activity
|
||||
private var mMeasurementUnit = 1
|
||||
|
||||
companion object {
|
||||
@@ -56,9 +55,8 @@ class AccountV2Fragment :
|
||||
}
|
||||
|
||||
override fun initData() {
|
||||
mHomeV2Activity = activity as HomeV2Activity
|
||||
mViewBinding.apply {
|
||||
mHomeV2Activity.edgeToEdgeAdapterBars(
|
||||
getHomeV2Activity()?.edgeToEdgeAdapterBars(
|
||||
llHomeAccountLayout, WindowInsetsCompat.Type.statusBars()
|
||||
)
|
||||
llHomeAccountTopUser.let {
|
||||
@@ -92,15 +90,25 @@ class AccountV2Fragment :
|
||||
mUserViewModel = ViewModelProvider(this)[UserProfileViewModel::class.java]
|
||||
mNotificationsViewModel = ViewModelProvider(this)[NotificationsViewModel::class.java]
|
||||
|
||||
mUserViewModel.getUserInfo(mHomeV2Activity)
|
||||
getHomeV2Activity()?.apply {
|
||||
mUserViewModel.getUserInfo(this)
|
||||
}
|
||||
}
|
||||
|
||||
private fun getHomeV2Activity(): HomeV2Activity? {
|
||||
return if (null == activity) {
|
||||
LogUtil.e("AccountV2Fragment,getHomeV2Activity,null == activity")
|
||||
null
|
||||
} else {
|
||||
activity as HomeV2Activity
|
||||
}
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
activity?.apply {
|
||||
mHomeV2Activity = this as HomeV2Activity
|
||||
getHomeV2Activity()?.apply {
|
||||
mNotificationsViewModel.getMessageList(this)
|
||||
}
|
||||
mNotificationsViewModel.getMessageList(mHomeV2Activity)
|
||||
}
|
||||
|
||||
private fun addListData() {
|
||||
@@ -180,7 +188,9 @@ class AccountV2Fragment :
|
||||
|
||||
override fun liveDataObserve() {
|
||||
XEventBus.observe(viewLifecycleOwner, EventName.UpdateUserInfo) {
|
||||
mUserViewModel.getUserInfo(mHomeV2Activity)
|
||||
getHomeV2Activity()?.let {
|
||||
mUserViewModel.getUserInfo(it)
|
||||
}
|
||||
}
|
||||
XEventBus.observe(viewLifecycleOwner, EventName.RefreshMessage) {
|
||||
getMessageCount()
|
||||
@@ -244,7 +254,7 @@ class AccountV2Fragment :
|
||||
for (message in this) {
|
||||
if (message.isRead) noReadNum--
|
||||
}
|
||||
mHomeV2Activity.runOnUiThread {
|
||||
getHomeV2Activity()?.runOnUiThread {
|
||||
mViewBinding.homeAccountMessageCountText.let {
|
||||
if (noReadNum > 0) it.visibility = View.VISIBLE
|
||||
else it.visibility = View.GONE
|
||||
@@ -258,7 +268,7 @@ class AccountV2Fragment :
|
||||
|
||||
fun setMeasureUnit(measurementUnit: Int) {
|
||||
mMeasurementUnit = measurementUnit
|
||||
mUserViewModel.updateMeasureUnit(mHomeV2Activity, measurementUnit)
|
||||
mUserViewModel.updateMeasureUnit(measurementUnit)
|
||||
}
|
||||
|
||||
override fun onClick(v: View?) {
|
||||
|
||||
@@ -10,6 +10,7 @@ import androidx.core.view.WindowInsetsCompat
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import com.abbidot.baselibrary.constant.MMKVKey
|
||||
import com.abbidot.baselibrary.util.AppUtils
|
||||
import com.abbidot.baselibrary.util.LogUtil
|
||||
import com.abbidot.baselibrary.util.MMKVUtil
|
||||
import com.abbidot.baselibrary.util.Utils
|
||||
import com.abbidot.tracker.R
|
||||
@@ -37,8 +38,6 @@ class ActivityV2Fragment :
|
||||
|
||||
private lateinit var mDataViewModel: DataViewModel
|
||||
|
||||
private lateinit var mHomeV2Activity: HomeV2Activity
|
||||
|
||||
//当前这个页面显示的宠物下标
|
||||
private var mCurrentShowPetPos = -1
|
||||
|
||||
@@ -52,12 +51,11 @@ class ActivityV2Fragment :
|
||||
}
|
||||
|
||||
override fun initData() {
|
||||
mHomeV2Activity = activity as HomeV2Activity
|
||||
|
||||
mToday = Utils.getCurrentTime(Utils.DATE_FORMAT_PATTERN_CN)
|
||||
mViewBinding.apply {
|
||||
|
||||
mHomeV2Activity.edgeToEdgeAdapterBars(
|
||||
getHomeV2Activity()?.edgeToEdgeAdapterBars(
|
||||
svHomeActivityScroll, WindowInsetsCompat.Type.statusBars()
|
||||
)
|
||||
|
||||
@@ -78,7 +76,7 @@ class ActivityV2Fragment :
|
||||
}
|
||||
|
||||
override fun onRefresh() {
|
||||
mHomeV2Activity.getPet()?.apply {
|
||||
getHomeV2Activity()?.getPet()?.apply {
|
||||
mDataViewModel.getHomeDeviceData(deviceId, mToday, petId)
|
||||
}
|
||||
}
|
||||
@@ -94,7 +92,7 @@ class ActivityV2Fragment :
|
||||
|
||||
if (AppUtils.isDebug()) {
|
||||
ilHomeActivityTopPet.homeDataPetHeadSmall.root.setOnLongClickListener {
|
||||
mHomeV2Activity.goToDebugActivity()
|
||||
getHomeV2Activity()?.goToDebugActivity()
|
||||
true
|
||||
}
|
||||
}
|
||||
@@ -110,6 +108,15 @@ class ActivityV2Fragment :
|
||||
initHomeData()
|
||||
}
|
||||
|
||||
private fun getHomeV2Activity(): HomeV2Activity? {
|
||||
return if (null == activity) {
|
||||
LogUtil.e("ActivityV2Fragment,getHomeV2Activity,null == activity")
|
||||
null
|
||||
} else {
|
||||
activity as HomeV2Activity
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private fun initHomeData() {
|
||||
val goal = MMKVUtil.getInt(MMKVKey.ActivityGoal)
|
||||
@@ -138,16 +145,15 @@ class ActivityV2Fragment :
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
activity?.apply {
|
||||
mHomeV2Activity = this as HomeV2Activity
|
||||
}
|
||||
if (mCurrentShowPetPos == mHomeV2Activity.mSelectPetPosition) {
|
||||
mHomeV2Activity.getPet()?.apply {
|
||||
getHomeV2Activity()?.let {
|
||||
if (mCurrentShowPetPos == it.mSelectPetPosition) {
|
||||
it.getPet()?.apply {
|
||||
mDataViewModel.getHomeDeviceData(deviceId, mToday, petId)
|
||||
}
|
||||
} else {
|
||||
//其他页面是否选择了宠物
|
||||
showPetNameAndHead(mHomeV2Activity.mSelectPetPosition)
|
||||
showPetNameAndHead(it.mSelectPetPosition)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -260,30 +266,28 @@ class ActivityV2Fragment :
|
||||
* 显示选择的宠物
|
||||
*/
|
||||
fun showPetNameAndHead(position: Int) {
|
||||
//变量初始化
|
||||
if (!::mHomeV2Activity.isInitialized) {
|
||||
return
|
||||
}
|
||||
if (mHomeV2Activity.mPetList.size == 0) {
|
||||
getHomeV2Activity()?.let {
|
||||
if (it.mPetList.size == 0) {
|
||||
return
|
||||
}
|
||||
mCurrentShowPetPos = position
|
||||
|
||||
ViewUtil.instance.selectPetDialogShow(
|
||||
mContext!!,
|
||||
mHomeV2Activity.mPetList,
|
||||
it.mPetList,
|
||||
position,
|
||||
mViewBinding.ilHomeActivityTopPet.homeDataPetNameSmall,
|
||||
mViewBinding.ilHomeActivityTopPet.homeDataPetHeadSmall.appHeadImage
|
||||
)
|
||||
|
||||
mHomeV2Activity.getPet()?.apply {
|
||||
it.getPet()?.apply {
|
||||
mDataViewModel.getHomeDeviceData(deviceId, mToday, petId)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun goActivityNeedPet(cls: Class<*>) {
|
||||
mHomeV2Activity.getPet()?.apply {
|
||||
getHomeV2Activity()?.getPet()?.apply {
|
||||
Intent(mContext, cls).let {
|
||||
it.putExtra(ConstantString.Pet, this)
|
||||
startActivity(it)
|
||||
@@ -294,7 +298,7 @@ class ActivityV2Fragment :
|
||||
override fun onClick(v: View?) {
|
||||
mViewBinding.apply {
|
||||
when (v!!) {
|
||||
ilHomeActivityTopPet.ivTopPetBtnSmall -> mHomeV2Activity.getPet()?.apply {
|
||||
ilHomeActivityTopPet.ivTopPetBtnSmall -> getHomeV2Activity()?.getPet()?.apply {
|
||||
ViewUtil.instance.viewAlphaAndRotationObjectAnimator(v)
|
||||
mDataViewModel.getHomeDeviceData(deviceId, mToday, petId)
|
||||
}
|
||||
@@ -303,7 +307,7 @@ class ActivityV2Fragment :
|
||||
|
||||
btnHomeMoreSleep -> goActivityNeedPet(MoreSleepActivity::class.java)
|
||||
|
||||
ilHomeActivityTopPet.homeDataPetNameSmall, ilHomeActivityTopPet.homeDataPetHeadSmall.root -> mHomeV2Activity.selectPetDialog()
|
||||
ilHomeActivityTopPet.homeDataPetNameSmall, ilHomeActivityTopPet.homeDataPetHeadSmall.root -> getHomeV2Activity()?.selectPetDialog()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ import com.abbidot.baselibrary.constant.EventName
|
||||
import com.abbidot.baselibrary.constant.MMKVKey
|
||||
import com.abbidot.baselibrary.eventbus.XEventBus
|
||||
import com.abbidot.baselibrary.util.AppUtils
|
||||
import com.abbidot.baselibrary.util.LogUtil
|
||||
import com.abbidot.baselibrary.util.MMKVUtil
|
||||
import com.abbidot.baselibrary.util.Utils
|
||||
import com.abbidot.tracker.R
|
||||
@@ -43,8 +44,6 @@ class RouteV2Fragment : BaseFragment<FragmentRouteV2Binding>(FragmentRouteV2Bind
|
||||
private val mDataDetailViewModel: DataDetailViewModel by viewModels()
|
||||
private val mGeoCoderViewModel: GeoCoderViewModel by viewModels()
|
||||
|
||||
private lateinit var mHomeV2Activity: HomeV2Activity
|
||||
|
||||
private lateinit var mFragment: Fragment
|
||||
|
||||
private var mFromCalenderDialog: ShowCalenderAndTimeDialog? = null
|
||||
@@ -81,9 +80,8 @@ class RouteV2Fragment : BaseFragment<FragmentRouteV2Binding>(FragmentRouteV2Bind
|
||||
}
|
||||
|
||||
override fun initData() {
|
||||
mHomeV2Activity = activity as HomeV2Activity
|
||||
mViewBinding.apply {
|
||||
mHomeV2Activity.edgeToEdgeAdapterBars(
|
||||
getHomeV2Activity()?.edgeToEdgeAdapterBars(
|
||||
root, WindowInsetsCompat.Type.statusBars()
|
||||
)
|
||||
mFragment = mHistoryDataMapCommon.getMapFragment(
|
||||
@@ -112,7 +110,7 @@ class RouteV2Fragment : BaseFragment<FragmentRouteV2Binding>(FragmentRouteV2Bind
|
||||
|
||||
if (AppUtils.isDebug()) {
|
||||
ilHomeRoutePetHead.homeDataPetHeadSmall.root.setOnLongClickListener {
|
||||
mHomeV2Activity.goToDebugActivity()
|
||||
getHomeV2Activity()?.goToDebugActivity()
|
||||
true
|
||||
}
|
||||
}
|
||||
@@ -132,6 +130,15 @@ class RouteV2Fragment : BaseFragment<FragmentRouteV2Binding>(FragmentRouteV2Bind
|
||||
initState()
|
||||
}
|
||||
|
||||
private fun getHomeV2Activity(): HomeV2Activity? {
|
||||
return if (null == activity) {
|
||||
LogUtil.e("RouteV2Fragment,getHomeV2Activity,null == activity")
|
||||
null
|
||||
} else {
|
||||
activity as HomeV2Activity
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 一开始获取24小时内的数据
|
||||
*/
|
||||
@@ -211,14 +218,12 @@ class RouteV2Fragment : BaseFragment<FragmentRouteV2Binding>(FragmentRouteV2Bind
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
activity?.apply {
|
||||
mHomeV2Activity = this as HomeV2Activity
|
||||
}
|
||||
//续费成功后,不执行
|
||||
if (mRechargeBackType == ConstantInt.Type1) {
|
||||
return
|
||||
}
|
||||
if (mCurrentShowPetPos == mHomeV2Activity.mSelectPetPosition) {
|
||||
getHomeV2Activity()?.apply {
|
||||
if (mCurrentShowPetPos == mSelectPetPosition) {
|
||||
if (!isSelectCustomDate) {
|
||||
if (mHistoryDataMapCommon.isMapLoadOk()) {
|
||||
get24HourTime()
|
||||
@@ -228,7 +233,8 @@ class RouteV2Fragment : BaseFragment<FragmentRouteV2Binding>(FragmentRouteV2Bind
|
||||
} else {
|
||||
//其他页面是否选择了宠物
|
||||
if (!isSelectCustomDate) get24HourTime()
|
||||
showPetNameAndHead(mHomeV2Activity.mSelectPetPosition)
|
||||
showPetNameAndHead(mSelectPetPosition)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -290,7 +296,9 @@ class RouteV2Fragment : BaseFragment<FragmentRouteV2Binding>(FragmentRouteV2Bind
|
||||
*/
|
||||
private fun mapLoadOk() {
|
||||
if (mCurrentShowPetPos == -1) return
|
||||
showPetNameAndHead(mHomeV2Activity.mSelectPetPosition)
|
||||
getHomeV2Activity()?.apply {
|
||||
showPetNameAndHead(mSelectPetPosition)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -304,18 +312,15 @@ class RouteV2Fragment : BaseFragment<FragmentRouteV2Binding>(FragmentRouteV2Bind
|
||||
* 显示选择的宠物
|
||||
*/
|
||||
fun showPetNameAndHead(position: Int) {
|
||||
//变量初始化
|
||||
if (!::mHomeV2Activity.isInitialized) {
|
||||
return
|
||||
}
|
||||
if (mHomeV2Activity.mPetList.size == 0) {
|
||||
getHomeV2Activity()?.apply {
|
||||
if (mPetList.size == 0) {
|
||||
return
|
||||
}
|
||||
mCurrentShowPetPos = position
|
||||
|
||||
ViewUtil.instance.selectPetDialogShow(
|
||||
mContext!!,
|
||||
mHomeV2Activity.mPetList,
|
||||
mContext,
|
||||
mPetList,
|
||||
position,
|
||||
mViewBinding.ilHomeRoutePetHead.homeDataPetNameSmall,
|
||||
mViewBinding.ilHomeRoutePetHead.homeDataPetHeadSmall.appHeadImage
|
||||
@@ -325,17 +330,18 @@ class RouteV2Fragment : BaseFragment<FragmentRouteV2Binding>(FragmentRouteV2Bind
|
||||
getHistoryDay(mViewBinding.tvHomeRouteCalendarFrom)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun setLatLngData(data: MutableList<HistoryDataBean>) {
|
||||
viewLifecycleOwner.lifecycleScope.launch {
|
||||
mHistoryDataList = data
|
||||
mHomeV2Activity.getPet(false)?.let {
|
||||
getHomeV2Activity()?.getPet(false)?.let {
|
||||
mHistoryDataMapCommon.setPetBean(it)
|
||||
}
|
||||
|
||||
if (isResumed) {
|
||||
mHomeV2Activity.getPet()?.let { pet ->
|
||||
if (Util.checkPackageLimit(mHomeV2Activity, pet.deviceId)) {
|
||||
getHomeV2Activity()?.getPet()?.let { pet ->
|
||||
if (Util.checkPackageLimit(getHomeV2Activity()!!, pet.deviceId)) {
|
||||
mRechargeBackType = pet.availableOrder
|
||||
mHistoryDataMapCommon.setPetUserLatLng()
|
||||
return@launch
|
||||
@@ -381,11 +387,11 @@ class RouteV2Fragment : BaseFragment<FragmentRouteV2Binding>(FragmentRouteV2Bind
|
||||
checkCorrectDate(cSelectView)
|
||||
}
|
||||
|
||||
mHomeV2Activity.getPet()?.apply {
|
||||
getHomeV2Activity()?.getPet()?.apply {
|
||||
initState()
|
||||
mViewBinding.miHomeRouteAddressView.visibility = View.GONE
|
||||
mDataDetailViewModel.getHistoryByDay(
|
||||
mHomeV2Activity, deviceId, mFromTimestamp / 1000, mToTimestamp / 1000
|
||||
getHomeV2Activity()!!, deviceId, mFromTimestamp / 1000, mToTimestamp / 1000
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -426,15 +432,15 @@ class RouteV2Fragment : BaseFragment<FragmentRouteV2Binding>(FragmentRouteV2Bind
|
||||
// mContext, NotificationV2Activity::class.java
|
||||
// )
|
||||
// )
|
||||
ilHomeRoutePetHead.homeDataPetNameSmall, ilHomeRoutePetHead.homeDataPetHeadSmall.root -> mHomeV2Activity.selectPetDialog()
|
||||
ilHomeRoutePetHead.homeDataPetNameSmall, ilHomeRoutePetHead.homeDataPetHeadSmall.root -> getHomeV2Activity()?.selectPetDialog()
|
||||
|
||||
llHomeRouteCalendarFrom -> {
|
||||
mHomeV2Activity.getPet()?.let {
|
||||
getHomeV2Activity()?.getPet()?.let {
|
||||
//防止执行多次弹窗
|
||||
if (Util.isTimeLimit(mLimitExecutionTime)) {
|
||||
return@apply
|
||||
}
|
||||
if (Util.checkPackageLimit(mHomeV2Activity, it.deviceId)) {
|
||||
if (Util.checkPackageLimit(getHomeV2Activity()!!, it.deviceId)) {
|
||||
mRechargeBackType = it.availableOrder
|
||||
mLimitExecutionTime = System.currentTimeMillis()
|
||||
return@apply
|
||||
@@ -458,12 +464,12 @@ class RouteV2Fragment : BaseFragment<FragmentRouteV2Binding>(FragmentRouteV2Bind
|
||||
}
|
||||
|
||||
llHomeRouteCalendarTo -> {
|
||||
mHomeV2Activity.getPet()?.let {
|
||||
getHomeV2Activity()?.getPet()?.let {
|
||||
//防止执行多次弹窗
|
||||
if (Util.isTimeLimit(mLimitExecutionTime)) {
|
||||
return@apply
|
||||
}
|
||||
if (Util.checkPackageLimit(mHomeV2Activity, it.deviceId)) {
|
||||
if (Util.checkPackageLimit(getHomeV2Activity()!!, it.deviceId)) {
|
||||
mRechargeBackType = it.availableOrder
|
||||
mLimitExecutionTime = System.currentTimeMillis()
|
||||
return@apply
|
||||
|
||||
@@ -68,8 +68,6 @@ class HomeTrackFragment :
|
||||
private val mDeviceDFUViewModel: DeviceDFUViewModel by viewModels()
|
||||
private val mDownLoadFileViewModel: DownLoadFileViewModel by viewModels()
|
||||
|
||||
private lateinit var mHomeV2Activity: HomeV2Activity
|
||||
|
||||
private lateinit var mHomePetTrackStateAdapter: HomePetTrackStateAdapter
|
||||
private lateinit var mTrackStateList: MutableList<MenuTxtBean>
|
||||
|
||||
@@ -101,7 +99,6 @@ class HomeTrackFragment :
|
||||
}
|
||||
|
||||
override fun initData() {
|
||||
mHomeV2Activity = activity as HomeV2Activity
|
||||
mViewBinding.apply {
|
||||
root.setBackgroundResource(R.color.transparent)
|
||||
addListData()
|
||||
@@ -142,7 +139,7 @@ class HomeTrackFragment :
|
||||
mFencesAdapter = FencesZoneAdapter(mContext!!, mFencesList, false).apply {
|
||||
setOnItemClickListener(object : BaseRecyclerAdapter.OnItemClickListener {
|
||||
override fun onItemClick(itemView: View?, pos: Int) {
|
||||
mHomeV2Activity.getPet()?.apply {
|
||||
getHomeV2Activity()?.getPet()?.apply {
|
||||
goPetDataActivity(VirtualFencesActivity::class.java)
|
||||
}
|
||||
}
|
||||
@@ -151,8 +148,8 @@ class HomeTrackFragment :
|
||||
override fun onAgainListener() {
|
||||
val share = MMKVUtil.getInt(MMKVKey.Shared)
|
||||
if (share == ConstantInt.NoShare) {
|
||||
mHomeV2Activity.getPet()?.let { pet ->
|
||||
if (Util.checkPackageLimit(mHomeV2Activity, pet.deviceId)) {
|
||||
getHomeV2Activity()?.getPet()?.let { pet ->
|
||||
if (Util.checkPackageLimit(getHomeV2Activity()!!, pet.deviceId)) {
|
||||
return
|
||||
}
|
||||
}
|
||||
@@ -202,10 +199,19 @@ class HomeTrackFragment :
|
||||
getPetTrackerInfoData()
|
||||
}
|
||||
|
||||
private fun getHomeV2Activity(): HomeV2Activity? {
|
||||
return if (null == activity) {
|
||||
LogUtil.e("HomeTrackFragment,getHomeV2Activity,null == activity")
|
||||
null
|
||||
} else {
|
||||
activity as HomeV2Activity
|
||||
}
|
||||
}
|
||||
|
||||
override fun liveDataObserve() {
|
||||
//接收蓝牙连接状态
|
||||
XEventBus.observe(this, EventName.ConnectDeviceState) { ble: BleTrackDeviceBean ->
|
||||
mHomeV2Activity.getPet()?.apply {
|
||||
getHomeV2Activity()?.getPet()?.apply {
|
||||
if (ble.mac == macID) {
|
||||
updateConState(ble)
|
||||
}
|
||||
@@ -213,7 +219,7 @@ class HomeTrackFragment :
|
||||
}
|
||||
//接收开蓝牙操作,然后搜索连接设备
|
||||
XEventBus.observe(this, EventName.ActionConDeviceState) { conState: Int ->
|
||||
mHomeV2Activity.getPet()?.apply {
|
||||
getHomeV2Activity()?.getPet()?.apply {
|
||||
if (BleManager.getInstance().isConnected(macID)) return@apply
|
||||
if (conState == ConState.CONNECTING || conState == ConState.CONNECTING_MAC) {
|
||||
mTrackStateList[4].apply {
|
||||
@@ -243,7 +249,7 @@ class HomeTrackFragment :
|
||||
}
|
||||
//蓝牙上报的数据
|
||||
XEventBus.observe(this, EventName.BleReportData) { reportData: BleReportDataBean ->
|
||||
mHomeV2Activity.getPet(false)?.apply {
|
||||
getHomeV2Activity()?.getPet(false)?.apply {
|
||||
if (macID == reportData.mac) updateBleReportData(reportData)
|
||||
}
|
||||
}
|
||||
@@ -306,10 +312,12 @@ class HomeTrackFragment :
|
||||
mDFUNewDialogDialog?.setDFUProgress(100)
|
||||
isDFUCallback = true
|
||||
mBleTrackDeviceBean?.let { ble ->
|
||||
getHomeV2Activity()?.apply {
|
||||
mConnectionDeviceViewModel.connectDeviceToMac(
|
||||
mHomeV2Activity, ble.mac, false
|
||||
this, ble.mac, false
|
||||
)
|
||||
}
|
||||
}
|
||||
} else if (progress == mDeviceDFUViewModel.mDFUFailCode) {
|
||||
// mTrackerDFUStateDialog?.dismiss()
|
||||
mDFUNewDialogDialog?.setDFUFail {
|
||||
@@ -351,13 +359,10 @@ class HomeTrackFragment :
|
||||
}
|
||||
|
||||
fun getPetTrackerInfoData() {
|
||||
//变量初始化
|
||||
if (!::mHomeV2Activity.isInitialized) {
|
||||
return
|
||||
}
|
||||
mHomeV2Activity.getPet()?.apply {
|
||||
getHomeV2Activity()?.let {
|
||||
it.getPet()?.apply {
|
||||
// mViewBinding.ivHomePetTrackPetHead.load(imgurl)
|
||||
mTrackerInfoViewModel.getPetTrackerInfo(mHomeV2Activity, deviceId)
|
||||
mTrackerInfoViewModel.getPetTrackerInfo(it, deviceId)
|
||||
|
||||
mTrackMenuList[1].menuValue = ""
|
||||
mTrackMenuList[2].menuValue = ""
|
||||
@@ -393,6 +398,7 @@ class HomeTrackFragment :
|
||||
mTrackMenuAdapter.notifyItemRangeChanged(1, 3)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 显示分享的设备状态
|
||||
@@ -724,7 +730,7 @@ class HomeTrackFragment :
|
||||
mTrackMenuList[3].menuValue = strVersion
|
||||
mTrackMenuList[3].isSwitch = false
|
||||
mTrackMenuAdapter.notifyItemChanged(3)
|
||||
mDeviceDFUViewModel.getFirmware(mHomeV2Activity, false)
|
||||
mDeviceDFUViewModel.getFirmware()
|
||||
mBleTrackDeviceBean?.apply {
|
||||
SRBleUtil.instance.writeData(
|
||||
bleDevice, SRBleCmdUtil.instance.ledState(SRBleCmdUtil.CMD_READ, 0)
|
||||
@@ -755,7 +761,7 @@ class HomeTrackFragment :
|
||||
}
|
||||
} else if (data0 == 4 && data1 == 1 && data2 == 0) {
|
||||
mMapDeviceBean?.let {
|
||||
mTrackerSetViewModel.turnOff(mHomeV2Activity, it.deviceServerId)
|
||||
mTrackerSetViewModel.turnOff(it.deviceServerId)
|
||||
}
|
||||
mTrackMenuList[1].menuValue = ""
|
||||
mTrackMenuList[2].menuValue = ""
|
||||
@@ -773,7 +779,7 @@ class HomeTrackFragment :
|
||||
}
|
||||
|
||||
fun goPetDataActivity(cls: Class<*>) {
|
||||
mHomeV2Activity.getPet()?.apply {
|
||||
getHomeV2Activity()?.getPet()?.apply {
|
||||
val intent = Intent(mContext, cls)
|
||||
intent.putExtra(ConstantString.Pet, this)
|
||||
startActivity(intent)
|
||||
@@ -792,7 +798,7 @@ class HomeTrackFragment :
|
||||
* 获取当前宠物的连接设备
|
||||
*/
|
||||
private fun getBleTrackDeviceBean(isShowBleUnConTip: Boolean = true): BleTrackDeviceBean? {
|
||||
mHomeV2Activity.getPet()?.apply {
|
||||
getHomeV2Activity()?.getPet()?.apply {
|
||||
if (null == mBleTrackDeviceBean) {
|
||||
mBleTrackDeviceBean = SRBleUtil.instance.getConnectMacDevice(macID)
|
||||
} else {
|
||||
@@ -829,8 +835,10 @@ class HomeTrackFragment :
|
||||
private fun connectionBtn(btnString: String) {
|
||||
if (btnString == getString(R.string.txt_unconnect_no)) {
|
||||
Util.checkBluetoothPermissionsEnabled(mContext!!, {
|
||||
mHomeV2Activity.getPet()?.apply {
|
||||
mConnectionDeviceViewModel.connectDeviceToMac(mHomeV2Activity, macID, false)
|
||||
getHomeV2Activity()?.getPet()?.apply {
|
||||
mConnectionDeviceViewModel.connectDeviceToMac(
|
||||
getHomeV2Activity()!!, macID, false
|
||||
)
|
||||
}
|
||||
})
|
||||
} else if (btnString == getString(R.string.txt_connected)) {
|
||||
@@ -926,28 +934,21 @@ class HomeTrackFragment :
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
activity?.apply {
|
||||
mHomeV2Activity = this as HomeV2Activity
|
||||
}
|
||||
//变量初始化
|
||||
if (!::mHomeV2Activity.isInitialized) {
|
||||
return
|
||||
}
|
||||
getHomeV2Activity()?.apply {
|
||||
DfuServiceListenerHelper.registerProgressListener(
|
||||
mContext!!, mDeviceDFUViewModel.mDfuProgressListener
|
||||
mContext, mDeviceDFUViewModel.mDfuProgressListener
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onPause() {
|
||||
super.onPause()
|
||||
//变量初始化
|
||||
if (!::mHomeV2Activity.isInitialized) {
|
||||
return
|
||||
}
|
||||
getHomeV2Activity()?.apply {
|
||||
DfuServiceListenerHelper.unregisterProgressListener(
|
||||
mContext!!, mDeviceDFUViewModel.mDfuProgressListener
|
||||
mContext, mDeviceDFUViewModel.mDfuProgressListener
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
override fun onClick(v: View?) {
|
||||
|
||||
@@ -117,7 +117,7 @@ class MapV2Fragment : BaseFragment<FragmentMapV2Binding>(FragmentMapV2Binding::i
|
||||
mContext!!, miHomeMapAddressView, dnHomeMapNetView
|
||||
) { mapLoadOk() }
|
||||
|
||||
dnHomeMapNetView.setShowNetType(MapDeviceNetView.WIFI_NET_TYPE)
|
||||
dnHomeMapNetView.setShowNetType(MapDeviceNetView.NO_NET_TYPE)
|
||||
llHomeMapTopPet.ivTopPetBtnSmall.setImageResource(R.drawable.icon_map_type)
|
||||
|
||||
ViewUtil.instance.setMapSwitchLocationButtonImage(
|
||||
@@ -521,6 +521,7 @@ class MapV2Fragment : BaseFragment<FragmentMapV2Binding>(FragmentMapV2Binding::i
|
||||
)
|
||||
|
||||
if (mHomeMapCommon.isMapLoadOk()) {
|
||||
isMoveCamera=true
|
||||
mHomeMapCommon.clearMarker()
|
||||
mViewBinding.miHomeMapAddressView.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.list.BaseRecyclerAdapter
|
||||
import com.abbidot.baselibrary.util.AppUtils
|
||||
import com.abbidot.baselibrary.util.LogUtil
|
||||
import com.abbidot.baselibrary.util.MMKVUtil
|
||||
import com.abbidot.baselibrary.util.Utils
|
||||
import com.abbidot.tracker.R
|
||||
@@ -43,8 +44,6 @@ class HomePetFragment : BaseFragment<FragmentHomePetBinding>(FragmentHomePetBind
|
||||
|
||||
private val mPetViewModel: PetInfoViewModel by viewModels()
|
||||
|
||||
private lateinit var mHomeV2Activity: HomeV2Activity
|
||||
|
||||
private lateinit var mPetLabelsAdapter: PetLabelsAdapter
|
||||
private lateinit var mPetsBadgesAdapter: PetsBadgesAdapter
|
||||
private lateinit var mFamilyAdapter: HomePetFamilyAdapter
|
||||
@@ -59,7 +58,6 @@ class HomePetFragment : BaseFragment<FragmentHomePetBinding>(FragmentHomePetBind
|
||||
}
|
||||
|
||||
override fun initData() {
|
||||
mHomeV2Activity = activity as HomeV2Activity
|
||||
mViewBinding.apply {
|
||||
root.setBackgroundResource(R.color.transparent)
|
||||
mPetLabelsAdapter = PetLabelsAdapter(mContext!!, null)
|
||||
@@ -87,8 +85,8 @@ class HomePetFragment : BaseFragment<FragmentHomePetBinding>(FragmentHomePetBind
|
||||
mFamilyAdapter = HomePetFamilyAdapter(mContext!!, null).apply {
|
||||
setOnAgainClickListener(object : BaseRecyclerAdapter.OnAgainClickListener {
|
||||
override fun onAgainListener() {
|
||||
mHomeV2Activity.getPet()?.let { pet ->
|
||||
if (Util.checkPackageLimit(mHomeV2Activity, pet.deviceId)) {
|
||||
getHomeV2Activity()?.getPet()?.let { pet ->
|
||||
if (Util.checkPackageLimit(getHomeV2Activity()!!, pet.deviceId)) {
|
||||
return
|
||||
}
|
||||
}
|
||||
@@ -116,15 +114,18 @@ class HomePetFragment : BaseFragment<FragmentHomePetBinding>(FragmentHomePetBind
|
||||
getPetAllInfoData()
|
||||
}
|
||||
|
||||
private fun getHomeV2Activity(): HomeV2Activity? {
|
||||
return if (null == activity) {
|
||||
LogUtil.e("HomePetFragment,getHomeV2Activity,null == activity")
|
||||
null
|
||||
} else {
|
||||
activity as HomeV2Activity
|
||||
}
|
||||
}
|
||||
|
||||
fun getPetAllInfoData() {
|
||||
activity?.apply {
|
||||
mHomeV2Activity = this as HomeV2Activity
|
||||
}
|
||||
//变量初始化
|
||||
if (!::mHomeV2Activity.isInitialized) {
|
||||
return
|
||||
}
|
||||
mHomeV2Activity.getPet(false)?.apply {
|
||||
getHomeV2Activity()?.let {
|
||||
it.getPet(false)?.apply {
|
||||
val share = MMKVUtil.getInt(MMKVKey.Shared)
|
||||
//被邀请的不显示家庭邀请信息
|
||||
mViewBinding.apply {
|
||||
@@ -138,7 +139,8 @@ class HomePetFragment : BaseFragment<FragmentHomePetBinding>(FragmentHomePetBind
|
||||
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.viewpager2.widget.ViewPager2
|
||||
import com.abbidot.baselibrary.util.AppUtils
|
||||
import com.abbidot.baselibrary.util.LogUtil
|
||||
import com.abbidot.tracker.adapter.ViewPagerAdapter
|
||||
import com.abbidot.tracker.base.BaseFragment
|
||||
import com.abbidot.tracker.databinding.FragmentPetV2Binding
|
||||
@@ -21,7 +22,6 @@ import com.abbidot.tracker.util.ViewUtil
|
||||
class PetV2Fragment : BaseFragment<FragmentPetV2Binding>(FragmentPetV2Binding::inflate) {
|
||||
|
||||
private lateinit var mFragments: MutableList<Fragment>
|
||||
private lateinit var mHomeV2Activity: HomeV2Activity
|
||||
|
||||
//当前这个页面显示的宠物下标
|
||||
private var mCurrentShowPetPos = -1
|
||||
@@ -34,13 +34,12 @@ class PetV2Fragment : BaseFragment<FragmentPetV2Binding>(FragmentPetV2Binding::i
|
||||
}
|
||||
|
||||
override fun initData() {
|
||||
mHomeV2Activity = activity as HomeV2Activity
|
||||
mFragments = mutableListOf(
|
||||
HomePetFragment.newInstance(mContext!!), HomeTrackFragment.newInstance(mContext!!)
|
||||
)
|
||||
|
||||
mViewBinding.apply {
|
||||
mHomeV2Activity.edgeToEdgeAdapterBars(
|
||||
getHomeV2Activity()?.edgeToEdgeAdapterBars(
|
||||
root, WindowInsetsCompat.Type.statusBars()
|
||||
)
|
||||
ilHomePetTopBar.ivTopPetBtnSmall.visibility = View.GONE
|
||||
@@ -75,26 +74,34 @@ class PetV2Fragment : BaseFragment<FragmentPetV2Binding>(FragmentPetV2Binding::i
|
||||
}
|
||||
if (AppUtils.isDebug()) {
|
||||
ilHomePetTopBar.homeDataPetHeadSmall.appHeadImage.setOnLongClickListener {
|
||||
mHomeV2Activity.goToDebugActivity()
|
||||
getHomeV2Activity()?.goToDebugActivity()
|
||||
true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun getHomeV2Activity(): HomeV2Activity? {
|
||||
return if (null == activity) {
|
||||
LogUtil.e("PetV2Fragment,getHomeV2Activity,null == activity")
|
||||
null
|
||||
} else {
|
||||
activity as HomeV2Activity
|
||||
}
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
activity?.apply {
|
||||
mHomeV2Activity = this as HomeV2Activity
|
||||
}
|
||||
(mFragments[1] as HomeTrackFragment).onResume()
|
||||
getHomeV2Activity()?.apply {
|
||||
//其他页面是否选择了宠物
|
||||
if (mCurrentShowPetPos != mHomeV2Activity.mSelectPetPosition) {
|
||||
showPetNameAndHead(mHomeV2Activity.mSelectPetPosition)
|
||||
if (mCurrentShowPetPos != mSelectPetPosition) {
|
||||
showPetNameAndHead(mSelectPetPosition)
|
||||
} else {
|
||||
(mFragments[1] as HomeTrackFragment).getPetTrackerInfoData()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onPause() {
|
||||
super.onPause()
|
||||
@@ -112,11 +119,8 @@ class PetV2Fragment : BaseFragment<FragmentPetV2Binding>(FragmentPetV2Binding::i
|
||||
* 显示选择宠物
|
||||
*/
|
||||
fun showPetNameAndHead(position: Int) {
|
||||
//变量初始化
|
||||
if (!::mHomeV2Activity.isInitialized) {
|
||||
return
|
||||
}
|
||||
if (mHomeV2Activity.mPetList.size == 0) {
|
||||
getHomeV2Activity()?.let {
|
||||
if (it.mPetList.size == 0) {
|
||||
return
|
||||
}
|
||||
mCurrentShowPetPos = position
|
||||
@@ -125,7 +129,7 @@ class PetV2Fragment : BaseFragment<FragmentPetV2Binding>(FragmentPetV2Binding::i
|
||||
|
||||
ViewUtil.instance.selectPetDialogShow(
|
||||
mContext!!,
|
||||
mHomeV2Activity.mPetList,
|
||||
it.mPetList,
|
||||
position,
|
||||
mViewBinding.ilHomePetTopBar.homeDataPetNameSmall,
|
||||
mViewBinding.ilHomePetTopBar.homeDataPetHeadSmall.appHeadImage
|
||||
@@ -134,11 +138,12 @@ class PetV2Fragment : BaseFragment<FragmentPetV2Binding>(FragmentPetV2Binding::i
|
||||
(mFragments[0] as HomePetFragment).getPetAllInfoData()
|
||||
(mFragments[1] as HomeTrackFragment).getPetTrackerInfoData()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onClick(v: View?) {
|
||||
mViewBinding.apply {
|
||||
when (v!!) {
|
||||
ilHomePetTopBar.homeDataPetNameSmall, ilHomePetTopBar.homeDataPetHeadSmall.root -> mHomeV2Activity.selectPetDialog()
|
||||
ilHomePetTopBar.homeDataPetNameSmall, ilHomePetTopBar.homeDataPetHeadSmall.root -> getHomeV2Activity()?.selectPetDialog()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,6 @@ import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import com.abbidot.baselibrary.util.LogUtil
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.base.BaseActivity
|
||||
import com.abbidot.tracker.bean.DFUStateBean
|
||||
import com.abbidot.tracker.bean.FirmwareBean
|
||||
import com.abbidot.tracker.retrofit2.NetworkApi
|
||||
@@ -48,8 +47,8 @@ class DeviceDFUViewModel(application: Application) : AndroidViewModel(applicatio
|
||||
/**
|
||||
* 获取固件信息
|
||||
*/
|
||||
fun getFirmware(activity: BaseActivity<*>, isShowLoading: Boolean = true) {
|
||||
activity.showLoading(isShowLoading)
|
||||
fun getFirmware() {
|
||||
// activity.showLoading(isShowLoading)
|
||||
viewModelScope.launch(Dispatchers.IO) {
|
||||
val result = NetworkApi.getFirmware("GPS_Tracker_01")
|
||||
mFirmwareInfoLiveData.postValue(result)
|
||||
|
||||
@@ -26,8 +26,8 @@ class TrackerSetViewModel : ViewModel() {
|
||||
/**
|
||||
* 关闭设备
|
||||
*/
|
||||
fun turnOff(activity: BaseActivity<*>, deviceInfoId: String, turnOff: Int = 0) {
|
||||
activity.showLoading(true)
|
||||
fun turnOff(deviceInfoId: String, turnOff: Int = 0) {
|
||||
// activity.showLoading(true)
|
||||
viewModelScope.launch {
|
||||
val result = NetworkApi.turnoff(deviceInfoId, turnOff)
|
||||
mTurnoffLiveData.value = result
|
||||
|
||||
@@ -154,8 +154,8 @@ class UserProfileViewModel : ViewModel() {
|
||||
/**
|
||||
*修改单位
|
||||
*/
|
||||
fun updateMeasureUnit(activity: BaseActivity<*>, measurementUnit: Int) {
|
||||
activity.showLoading(true)
|
||||
fun updateMeasureUnit(measurementUnit: Int) {
|
||||
// activity.showLoading(true)
|
||||
viewModelScope.launch {
|
||||
val userId = MMKVUtil.getString(MMKVKey.UserId)
|
||||
val result = NetworkApi.updateMeasureUnit(userId, measurementUnit)
|
||||
|
||||
@@ -62,7 +62,7 @@ class MapDeviceNetView : BaseView {
|
||||
|
||||
|
||||
override fun startDraw(canvas: Canvas) {
|
||||
return
|
||||
// return
|
||||
if (mNetType == NO_NET_TYPE) return
|
||||
canvas.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_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_20"
|
||||
android:paddingHorizontal="@dimen/dp_22" />
|
||||
android:paddingHorizontal="@dimen/dp_22"
|
||||
android:visibility="gone" />
|
||||
|
||||
<com.abbidot.tracker.widget.TypefaceTextView
|
||||
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_show_crash">The program has an exception and is about to exit</string>
|
||||
|
||||
<string name="txt_activate_subscribe">Activate Subscription</string>
|
||||
|
||||
</resources>
|
||||
Reference in New Issue
Block a user