1.修改基础套餐过期或退款,触发高级套餐功能提示过期去充值
2.去除地图启动移动动画 3.仅在首次启动APP时,提示一次蓝牙开关;去掉开启直播坚持蓝牙开关 4.输入wifi密码界面点击连接按钮收起键盘
This commit is contained in:
@@ -30,7 +30,7 @@ android {
|
||||
targetSdkVersion 35
|
||||
versionCode 2101
|
||||
// versionName "2.1.1"
|
||||
versionName "2.1.1-Beta1"
|
||||
versionName "2.1.1-Beta2"
|
||||
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
|
||||
|
||||
@@ -34,6 +34,9 @@ abstract class BaseFragment<T : ViewBinding>(
|
||||
var mContext: Context? = null
|
||||
var mLoadingDialog: QMUITipDialog? = null
|
||||
|
||||
//防止某个时间执行多次
|
||||
var mLimitExecutionTime = 0L
|
||||
|
||||
/**
|
||||
* Fragment中嵌套子Fragment时,如果父Fragment被销毁而子Fragment未被销毁,会导致子Fragment的视图不再显示
|
||||
*/
|
||||
|
||||
@@ -65,6 +65,7 @@ class PackageUpgradeDialog(activity: BaseActivity<*>, deviceId: String) :
|
||||
}
|
||||
}
|
||||
})
|
||||
mSubscriptionsOrderLiveData.removeObservers(mBaseActivity)
|
||||
}
|
||||
getSubscriptionsOrder()
|
||||
}
|
||||
|
||||
@@ -23,7 +23,6 @@ import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.adapter.ChangePetListDialogAdapter
|
||||
import com.abbidot.tracker.adapter.ViewPagerAdapter
|
||||
import com.abbidot.tracker.base.BaseActivity
|
||||
import com.abbidot.tracker.base.BaseDialog
|
||||
import com.abbidot.tracker.bean.BleTrackDeviceBean
|
||||
import com.abbidot.tracker.bean.PetBean
|
||||
import com.abbidot.tracker.bean.ReceiveDeviceData
|
||||
@@ -31,12 +30,10 @@ import com.abbidot.tracker.constant.ConstantInt
|
||||
import com.abbidot.tracker.constant.ConstantString
|
||||
import com.abbidot.tracker.constant.GetResultCallback
|
||||
import com.abbidot.tracker.databinding.ActivityHomeV2Binding
|
||||
import com.abbidot.tracker.dialog.CommonDialog2
|
||||
import com.abbidot.tracker.dialog.CommonListDialog
|
||||
import com.abbidot.tracker.receiver.BluetoothMonitorReceiver
|
||||
import com.abbidot.tracker.ui.DebugActivity
|
||||
import com.abbidot.tracker.ui.activity.device.AddNewTracker1Activity
|
||||
import com.abbidot.tracker.ui.activity.subscribe.SubscriptionPlanActivity
|
||||
import com.abbidot.tracker.ui.fragment.account.AccountV2Fragment
|
||||
import com.abbidot.tracker.ui.fragment.data.ActivityV2Fragment
|
||||
import com.abbidot.tracker.ui.fragment.data.RouteV2Fragment
|
||||
@@ -321,34 +318,6 @@ class HomeV2Activity : BaseActivity<ActivityHomeV2Binding>(ActivityHomeV2Binding
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 套餐过期查询订单回调,防止和升级套餐查询套餐回调冲突
|
||||
*/
|
||||
private fun packageExpiresObserve() {
|
||||
mSubscriptionViewModel.mSubscriptionsOrderLiveData.observe(this@HomeV2Activity) {
|
||||
dealRequestResult(it, object : GetResultCallback {
|
||||
override fun onResult(any: Any) {
|
||||
it.getOrNull()?.let { list ->
|
||||
val pet = mPetList[mSelectPetPosition]
|
||||
for (l in list) {
|
||||
if (l.deviceId == pet.deviceId) {
|
||||
Intent(
|
||||
mContext, SubscriptionPlanActivity::class.java
|
||||
).let { i ->
|
||||
i.putExtra(ConstantString.LkSetMeal, l)
|
||||
i.putExtra(ConstantString.RechargeType, ConstantInt.Type2)
|
||||
startActivity(i)
|
||||
}
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
mSubscriptionViewModel.mSubscriptionsOrderLiveData.removeObservers(this@HomeV2Activity)
|
||||
}
|
||||
}
|
||||
|
||||
private fun setPetData(petList: MutableList<PetBean>) {
|
||||
mPetList.addAll(petList)
|
||||
if (mSelectPetPosition > mPetList.size - 1) {
|
||||
@@ -369,6 +338,7 @@ class HomeV2Activity : BaseActivity<ActivityHomeV2Binding>(ActivityHomeV2Binding
|
||||
getPet(false)?.apply {
|
||||
mLogBleReportViewModel.uploadLog(mContext, macID)
|
||||
}
|
||||
(mFragments[2] as MapV2Fragment).showPetNameAndHead(mSelectPetPosition)
|
||||
} else {
|
||||
onChangeClick(mSelectPetPosition)
|
||||
when (mViewBinding.homeV2ViewPager2.currentItem) {
|
||||
@@ -394,7 +364,6 @@ class HomeV2Activity : BaseActivity<ActivityHomeV2Binding>(ActivityHomeV2Binding
|
||||
}
|
||||
}
|
||||
}
|
||||
(mFragments[2] as MapV2Fragment).showPetNameAndHead(mSelectPetPosition)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -406,16 +375,7 @@ class HomeV2Activity : BaseActivity<ActivityHomeV2Binding>(ActivityHomeV2Binding
|
||||
getPet(false)?.apply {
|
||||
//判断套餐有没有到期
|
||||
if (shared == ConstantInt.NoShare && availableOrder == ConstantInt.Type0) {
|
||||
CommonDialog2(
|
||||
mContext,
|
||||
getString(R.string.txt_subscription_expired),
|
||||
getString(R.string.txt_card_recharge),
|
||||
object : BaseDialog.OnDialogOkListener {
|
||||
override fun onOkClick(dialog: BaseDialog<*>) {
|
||||
packageExpiresObserve()
|
||||
mSubscriptionViewModel.getSubscriptionsOrder()
|
||||
}
|
||||
}).show()
|
||||
Util.checkPackageExpired(this@HomeV2Activity, deviceId)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -435,9 +395,11 @@ class HomeV2Activity : BaseActivity<ActivityHomeV2Binding>(ActivityHomeV2Binding
|
||||
* 检查获取定位蓝牙权限
|
||||
*/
|
||||
private fun checkPermissions() {
|
||||
val checkBleOpen = MMKVUtil.getBoolean(MMKVKey.isFirstCheckBleOpen, true)
|
||||
Util.checkBluetoothPermissionsEnabled(mContext, {
|
||||
// mAutomaticConnectionDeviceViewModel.autoConnectBleDevice(mContext)
|
||||
})
|
||||
}, isCheckBleOpen = checkBleOpen)
|
||||
if (checkBleOpen) MMKVUtil.putBoolean(MMKVKey.isFirstCheckBleOpen, false)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -556,7 +518,7 @@ class HomeV2Activity : BaseActivity<ActivityHomeV2Binding>(ActivityHomeV2Binding
|
||||
private fun autoConnectDevice() {
|
||||
getPet(false)?.apply {
|
||||
if (TextUtils.isEmpty(macID)) return@apply
|
||||
if (SRBleUtil.instance.isBlueEnable(mContext)) {
|
||||
if (SRBleUtil.instance.isBleEnable(mContext)) {
|
||||
if (BleManager.getInstance().isConnected(macID)) {
|
||||
SRBleUtil.instance.cancelBleScan("已连接设备,取消其他连接扫描")
|
||||
val bleTrack = SRBleUtil.instance.getConnectMacDevice(macID)
|
||||
@@ -570,6 +532,31 @@ class HomeV2Activity : BaseActivity<ActivityHomeV2Binding>(ActivityHomeV2Binding
|
||||
}
|
||||
}
|
||||
|
||||
// override fun onTrimMemory(level: Int) {
|
||||
// super.onTrimMemory(level)
|
||||
// LogUtil.e("系统级别:$level"+printLevel(level))
|
||||
// }
|
||||
// private fun printLevel( level:Int) :String{
|
||||
// var desc=""
|
||||
// when (level) {
|
||||
// TRIM_MEMORY_COMPLETE->//80
|
||||
// desc = "进程在LRU尾部,如果没有足够的内存, 将很快被杀死";
|
||||
// TRIM_MEMORY_MODERATE->//60
|
||||
// desc = "进程在LRU中部,如果系统进一步需要内存, 可能会被杀死";
|
||||
// TRIM_MEMORY_BACKGROUND->//40
|
||||
// desc = "进程在LRU头部,虽然本进程不会被高优杀死, 但系统已经开始准备杀死LRU列表中的其他进程";
|
||||
// TRIM_MEMORY_UI_HIDDEN->//20
|
||||
// desc = "界面不可见,建议释放UI资源";
|
||||
// TRIM_MEMORY_RUNNING_CRITICAL->//15
|
||||
// desc = "虽然进程不会被高优杀死, 但系统已经开始准备杀死LRU列表中的其他进程,应该释放无用资源以防止性能下降";
|
||||
// TRIM_MEMORY_RUNNING_LOW->//10
|
||||
// desc = "虽然进程不会被高优杀死, 但系统已经开始准备杀死LRU列表中的其他进程,应该释放不必要的资源来提供系统性能";
|
||||
// TRIM_MEMORY_RUNNING_MODERATE->//5
|
||||
// desc = "系统已经进入了低内存的状态,进程正在运行但是不会被杀死";
|
||||
// }
|
||||
// return desc;
|
||||
// }
|
||||
|
||||
private var mTempTime = 0L
|
||||
override fun listenBackPressed() {
|
||||
// 2s内再次选择back键有效
|
||||
|
||||
@@ -124,13 +124,6 @@ open class AddAndEditFencesZoneBaseActivity :
|
||||
isEditFences,
|
||||
this@AddAndEditFencesZoneBaseActivity
|
||||
) {
|
||||
// mFencesList?.apply {
|
||||
// mPetBean?.let {
|
||||
// mFencesMapCommon.setPetHeadAndCurrentLocation(
|
||||
// it.imgurl, latitude, longitude
|
||||
// )
|
||||
// }
|
||||
// }
|
||||
mapLoadOk()
|
||||
}
|
||||
supportFragmentManager.commit {
|
||||
@@ -392,6 +385,11 @@ open class AddAndEditFencesZoneBaseActivity :
|
||||
successTips(R.string.txt_save_successful)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onRequestError(exceptionCode: String?) {
|
||||
super.onRequestError(exceptionCode)
|
||||
setButtonEnabled(mViewBinding.btnSaveFencesZone, ConstantInt.Type1)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -688,6 +686,7 @@ open class AddAndEditFencesZoneBaseActivity :
|
||||
return
|
||||
}
|
||||
mActionType = ConstantInt.Type1
|
||||
setButtonEnabled(mViewBinding.btnSaveFencesZone, ConstantInt.Type0)
|
||||
mPetBean?.let {
|
||||
if (BleManager.getInstance().isConnected(it.macID)) {
|
||||
sendFenceData()
|
||||
|
||||
@@ -67,9 +67,6 @@ class PreviewFencesZoneActivity :
|
||||
mRightImageButton = addRightImageButton(R.drawable.icon_gray_delete_svg)
|
||||
}
|
||||
|
||||
val mapTypeSp = Util.getMapTypeSp()
|
||||
isSatelliteMap = mapTypeSp == ConstantInt.Type1
|
||||
|
||||
mFencesList = mutableListOf()
|
||||
|
||||
intent?.apply {
|
||||
@@ -286,15 +283,24 @@ class PreviewFencesZoneActivity :
|
||||
mFencesList.addAll(this.toList())
|
||||
}
|
||||
|
||||
var currentFencesId = ""
|
||||
mCurrentFences?.apply {
|
||||
currentFencesId = fenceId
|
||||
setCurrentFencesInfo(this)
|
||||
setFencesAndPetData()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun setFencesAndPetData() {
|
||||
var currentFencesId = ""
|
||||
val mapTypeSp = Util.getMapTypeSp()
|
||||
isSatelliteMap = mapTypeSp == ConstantInt.Type1
|
||||
mCurrentFences?.apply {
|
||||
currentFencesId = fenceId
|
||||
mFencesMapViewModel.setImageFencesData(
|
||||
mContext, mFencesList, mFragment, currentFencesId, isSatelliteMap
|
||||
)
|
||||
|
||||
}
|
||||
mGetFencesBean?.apply {
|
||||
mPetBean?.let {
|
||||
mCurrentFences?.deviceServiceId = it.deviceServiceId
|
||||
mCurrentFences?.deviceId = it.deviceId
|
||||
@@ -420,13 +426,10 @@ class PreviewFencesZoneActivity :
|
||||
cbPreviewFencesSwitch -> mCurrentFences?.apply { changeOnAndOff(this) }
|
||||
|
||||
ivPreviewFencesMapSwitchBtn -> {
|
||||
isSatelliteMap = !isSatelliteMap
|
||||
mPreviewFencesMapCommon.switchSatelliteAndNormalMapType()
|
||||
//切换卫星地图,围栏换颜色
|
||||
mCurrentFences?.apply {
|
||||
mFencesMapViewModel.setImageFencesData(
|
||||
mContext, mFencesList, mFragment, fenceId, isSatelliteMap
|
||||
)
|
||||
setFencesAndPetData()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -33,6 +33,7 @@ import com.clj.fastble.utils.HexUtil
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
|
||||
class AddWifiPasswordActivity :
|
||||
BaseActivity<ActivityAddWifiPasswordBinding>(ActivityAddWifiPasswordBinding::inflate) {
|
||||
|
||||
@@ -202,6 +203,7 @@ class AddWifiPasswordActivity :
|
||||
private fun sendPasswordStart() {
|
||||
showLoading(true, R.string.txt_please_wait)
|
||||
mViewBinding.apply {
|
||||
hideInputMethod(ilAddWifiPwdPassword.etInputContent)
|
||||
btnAddWifiPwdConnect.isEnabled = false
|
||||
lavAddWifiPwdAnim.playAnimation()
|
||||
lavAddWifiPwdAnim.visibility = View.VISIBLE
|
||||
|
||||
@@ -53,7 +53,12 @@ class AddWifiPowerZone2Activity :
|
||||
add(R.id.fc_wifi_power_zone2_map_fragment, mFragment)
|
||||
}
|
||||
|
||||
setOnClickListenerViews(btnAddWifiZone2Next, tbRefreshLocationBtn, tvWifiZone2LaterBtn)
|
||||
setOnClickListenerViews(
|
||||
btnAddWifiZone2Next,
|
||||
tbRefreshLocationBtn,
|
||||
tvWifiZone2LaterBtn,
|
||||
ivWifiPowerZone2MapTypeBtn
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -100,6 +105,8 @@ class AddWifiPowerZone2Activity :
|
||||
ViewUtil.instance.viewAlphaAndRotationObjectAnimator(v)
|
||||
mWifiZone2MapCommon.refreshLocation()
|
||||
}
|
||||
|
||||
ivWifiPowerZone2MapTypeBtn -> mWifiZone2MapCommon.switchSatelliteAndNormalMapType()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -130,6 +130,10 @@ class EditWifiPowerZoneActivity :
|
||||
mViewBinding.ilEditPowerZoneBluetoothTips.trbBleConnectState.let { view ->
|
||||
val bgColor = if (trackDevice.conState == ConState.CONNECTED) {
|
||||
view.text = getString(R.string.tracker_manage_set_ble_connect)
|
||||
mPetBean?.let {
|
||||
//查找当前Mac的设备
|
||||
mBleTrackDeviceBean = SRBleUtil.instance.getConnectMacDevice(it.macID)
|
||||
}
|
||||
ContextCompat.getColor(mContext, R.color.cyan_color1)
|
||||
} else {
|
||||
view.text = getString(R.string.tracker_manage_set_ble_unconnect)
|
||||
@@ -345,27 +349,30 @@ class EditWifiPowerZoneActivity :
|
||||
val data2 = SRBleCmdUtil.instance.byteToInt(data[2])
|
||||
|
||||
mRightImageButton?.isEnabled = true
|
||||
|
||||
if (data1 == 0x01 && data2 == 0x00) {
|
||||
//添加wifi 指令成功
|
||||
if (data0 == 0x10) {
|
||||
LogUtil.e("设置设备wifi指令成功")
|
||||
mWiFiZoneViewModel.addWifiZone(this, mWiFiZoneBean)
|
||||
if (data0 == 0x10 || data0 == 0x11) {
|
||||
if (data1 == 0x01 && data2 == 0x00) {
|
||||
//添加wifi 指令成功
|
||||
if (data0 == 0x10) {
|
||||
LogUtil.e("设置设备wifi指令成功")
|
||||
mWiFiZoneViewModel.addWifiZone(this, mWiFiZoneBean)
|
||||
}
|
||||
//删除成功
|
||||
else {
|
||||
LogUtil.e("删除设备wifi指令成功")
|
||||
mWiFiZoneViewModel.deleteWifiZone(
|
||||
this@EditWifiPowerZoneActivity, mWiFiZoneBean
|
||||
)
|
||||
}
|
||||
} else if (data1 == 0x01 && data2 == 0x01) {
|
||||
showLoading(false)
|
||||
setButtonEnabled(mViewBinding.btnSaveWifiZone, ConstantInt.Type1)
|
||||
showToast(R.string.txt_duplicate_wifi_not, gravity = Gravity.CENTER)
|
||||
} else {
|
||||
setButtonEnabled(mViewBinding.btnSaveWifiZone, ConstantInt.Type1)
|
||||
showLoading(false)
|
||||
showToast("Fail", gravity = Gravity.CENTER)
|
||||
LogUtil.e("设备wifi指令失败")
|
||||
}
|
||||
//删除成功
|
||||
else if (data0 == 0x11) {
|
||||
LogUtil.e("删除设备wifi指令成功")
|
||||
mWiFiZoneViewModel.deleteWifiZone(this@EditWifiPowerZoneActivity, mWiFiZoneBean)
|
||||
}
|
||||
} else if (data1 == 0x01 && data2 == 0x01) {
|
||||
showLoading(false)
|
||||
setButtonEnabled(mViewBinding.btnSaveWifiZone, ConstantInt.Type1)
|
||||
showToast(R.string.txt_duplicate_wifi_not, gravity = Gravity.CENTER)
|
||||
} else {
|
||||
setButtonEnabled(mViewBinding.btnSaveWifiZone, ConstantInt.Type1)
|
||||
showLoading(false)
|
||||
showToast("Fail", gravity = Gravity.CENTER)
|
||||
LogUtil.e("设备wifi指令失败")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import android.graphics.Typeface
|
||||
import android.view.View
|
||||
import android.widget.RelativeLayout
|
||||
import androidx.activity.viewModels
|
||||
import androidx.core.view.isGone
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.commit
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
@@ -82,7 +83,7 @@ class LiveActivityV2 : BaseActivity<ActivityLiveV2Binding>(ActivityLiveV2Binding
|
||||
private var mMapDeviceBean: MapDeviceBean? = null
|
||||
|
||||
//启动动画移动地图摄像机
|
||||
private var isAnimMoveCamera = true
|
||||
private var isMoveCamera = true
|
||||
|
||||
//是否显示围栏
|
||||
private var isShowFence = true
|
||||
@@ -343,6 +344,11 @@ class LiveActivityV2 : BaseActivity<ActivityLiveV2Binding>(ActivityLiveV2Binding
|
||||
|
||||
//接收蓝牙连接状态
|
||||
XEventBus.observe(this, EventName.ConnectDeviceState) { trackBle: BleTrackDeviceBean ->
|
||||
mPetBean?.apply {
|
||||
if (trackBle.mac == macID && trackBle.conState != ConState.CONNECTED) {
|
||||
mViewBinding.rvLiveV2MapDeviceMsg.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
mMapDeviceBean?.apply {
|
||||
if (trackBle.mac == deviceMacId) {
|
||||
updateConState(trackBle)
|
||||
@@ -485,14 +491,17 @@ class LiveActivityV2 : BaseActivity<ActivityLiveV2Binding>(ActivityLiveV2Binding
|
||||
mViewBinding.ilLiveV2BluetoothFindDevice.ilLiveV2RadarLightSwitch.cbDeviceLightSwitch.isChecked =
|
||||
isOpen
|
||||
|
||||
if (haveLocationData && liveFlag == ConstantInt.Type1) {
|
||||
// if (haveLocationData && liveFlag == ConstantInt.Type1) {
|
||||
if (liveFlag == ConstantInt.Type1) {
|
||||
if (!isStartLive) {
|
||||
isStartLive = true
|
||||
liveStartTip()
|
||||
}
|
||||
lifecycleScope.launch {
|
||||
locationList?.let { location ->
|
||||
liveDrawLines(location)
|
||||
if (haveLocationData) {
|
||||
lifecycleScope.launch {
|
||||
locationList?.let { location ->
|
||||
liveDrawLines(location)
|
||||
}
|
||||
}
|
||||
}
|
||||
mHomeMapCommon.setMapDeviceBean(it)
|
||||
@@ -642,7 +651,11 @@ class LiveActivityV2 : BaseActivity<ActivityLiveV2Binding>(ActivityLiveV2Binding
|
||||
if (null == bleConDevice) {
|
||||
if (isLiveJump) {
|
||||
//没有连接,一进入页面就尝试连接
|
||||
mConDeviceViewModel.connectDeviceToMac(this@LiveActivityV2, macID)
|
||||
if (SRBleUtil.instance.isBleEnable(mContext)) {
|
||||
mConDeviceViewModel.connectDeviceToMac(this@LiveActivityV2, macID)
|
||||
} else {
|
||||
openNetLive(ConstantInt.Type2)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
updateConState(bleConDevice)
|
||||
@@ -669,9 +682,9 @@ class LiveActivityV2 : BaseActivity<ActivityLiveV2Binding>(ActivityLiveV2Binding
|
||||
|
||||
mHomeMapCommon.let {
|
||||
it.setMapDeviceBean(this)
|
||||
it.refreshPetCurrentLocation(latitude, longitude, isAnimMoveCamera)
|
||||
it.refreshPetCurrentLocation(latitude, longitude, isMoveCamera)
|
||||
it.startRippleCircleAnim()
|
||||
isAnimMoveCamera = false
|
||||
isMoveCamera = false
|
||||
// val userAndPetDistance = it.getUserAndPetDistance()
|
||||
// mViewBinding.tvLiveV2Distance.text = String.format(
|
||||
// getString(R.string.txt_ft_unit), Utils.formatDecimal(userAndPetDistance)
|
||||
@@ -772,20 +785,18 @@ class LiveActivityV2 : BaseActivity<ActivityLiveV2Binding>(ActivityLiveV2Binding
|
||||
*/
|
||||
private fun liveStartTip() {
|
||||
LogUtil.e("直播开始了")
|
||||
// mStartLiveIndex = 2
|
||||
//直播开始显示Starting 5-min Live
|
||||
// mCountDownViewModel.startCountDown(2)
|
||||
if (mStartLiveIndex == 0) {
|
||||
mStartLiveIndex = 2
|
||||
//直播开始显示Starting 5-min Live
|
||||
mCountDownViewModel.startCountDown(1)
|
||||
mHomeMapCommon.greenRippleCircleAnim()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 直播画线
|
||||
*/
|
||||
private fun liveDrawLine(latitude: Double, longitude: Double) {
|
||||
if (mStartLiveIndex == 0) {
|
||||
mStartLiveIndex = 2
|
||||
//直播开始显示Starting 5-min Live
|
||||
mCountDownViewModel.startCountDown(1)
|
||||
}
|
||||
mHomeMapCommon.addTrackLine(latitude, longitude)
|
||||
val userAndPetDistance = mHomeMapCommon.getUserAndPetDistance()
|
||||
val distanceStr = Util.metricConvertUnits(
|
||||
@@ -798,11 +809,6 @@ class LiveActivityV2 : BaseActivity<ActivityLiveV2Binding>(ActivityLiveV2Binding
|
||||
* 直播画线
|
||||
*/
|
||||
private fun liveDrawLines(trackList: MutableList<HistoryDataBean>) {
|
||||
if (mStartLiveIndex == 0) {
|
||||
mStartLiveIndex = 2
|
||||
//直播开始显示Starting 5-min Live
|
||||
mCountDownViewModel.startCountDown(1)
|
||||
}
|
||||
mHomeMapCommon.addTrackLines(trackList)
|
||||
val userAndPetDistance = mHomeMapCommon.getUserAndPetDistance()
|
||||
val distanceStr = Util.metricConvertUnits(
|
||||
@@ -819,7 +825,7 @@ class LiveActivityV2 : BaseActivity<ActivityLiveV2Binding>(ActivityLiveV2Binding
|
||||
miLiveV2MapAddressView.visibility = View.GONE
|
||||
val relativeLayout = ivMapLiveV2RefreshBtn.layoutParams as RelativeLayout.LayoutParams
|
||||
ivMapLiveV2RefreshBtn.visibility = View.GONE
|
||||
if (ilLiveV2BluetoothFindDevice.root.visibility == View.GONE) {
|
||||
if (ilLiveV2BluetoothFindDevice.root.isGone) {
|
||||
//找蓝牙设备布局显示
|
||||
YoYo.with(Techniques.BounceInUp).duration(800).onStart {
|
||||
ilLiveV2OperateLayout.root.visibility = View.GONE
|
||||
@@ -863,7 +869,7 @@ class LiveActivityV2 : BaseActivity<ActivityLiveV2Binding>(ActivityLiveV2Binding
|
||||
private fun showLiveIssue() {
|
||||
mViewBinding.apply {
|
||||
miLiveV2MapAddressView.visibility = View.GONE
|
||||
if (ilMapLiveV2IssueLayout.root.visibility == View.GONE) {
|
||||
if (ilMapLiveV2IssueLayout.root.isGone) {
|
||||
YoYo.with(Techniques.BounceInUp).duration(700).onStart {
|
||||
ilLiveV2OperateLayout.root.visibility = View.GONE
|
||||
ilMapLiveV2IssueLayout.root.visibility = View.VISIBLE
|
||||
@@ -902,9 +908,6 @@ class LiveActivityV2 : BaseActivity<ActivityLiveV2Binding>(ActivityLiveV2Binding
|
||||
})
|
||||
}
|
||||
|
||||
// override fun onBackPressed() {
|
||||
// stopMapLive()
|
||||
// }
|
||||
override fun listenBackPressed() {
|
||||
if (isLiveJump) stopMapLive()
|
||||
else super.listenBackPressed()
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package com.abbidot.tracker.ui.activity.subscribe
|
||||
|
||||
import androidx.activity.viewModels
|
||||
import com.abbidot.baselibrary.constant.EventName
|
||||
import com.abbidot.baselibrary.eventbus.XEventBus
|
||||
import com.abbidot.baselibrary.util.AppUtils
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.adapter.MySubscriptionAdapter
|
||||
@@ -18,6 +20,7 @@ class MySubscriptionActivity :
|
||||
|
||||
private lateinit var mSubscriptionAdapter: MySubscriptionAdapter
|
||||
private var mPosition = 0
|
||||
private var mRefreshPackage = true
|
||||
|
||||
override fun getTopBar() = mViewBinding.ilMySubscriptionTopBar.titleTopBar
|
||||
|
||||
@@ -46,13 +49,16 @@ class MySubscriptionActivity :
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
mSubscriptionViewModel.getSubscriptionsOrder()
|
||||
if (mRefreshPackage) {
|
||||
mRefreshPackage = false
|
||||
mSubscriptionViewModel.getSubscriptionsOrder()
|
||||
}
|
||||
}
|
||||
|
||||
override fun liveDataObserve() {
|
||||
// XEventBus.observe(this, EventName.PayBack) {
|
||||
// mSubscriptionViewModel.getSubscriptionsOrder()
|
||||
// }
|
||||
XEventBus.observe(this, EventName.RefreshPackage) {
|
||||
mRefreshPackage = true
|
||||
}
|
||||
mSubscriptionViewModel.apply {
|
||||
mSubscriptionsOrderLiveData.observe(this@MySubscriptionActivity) {
|
||||
dealRequestResult(it, object : GetResultCallback {
|
||||
|
||||
@@ -101,6 +101,7 @@ class PaymentSuccessActivity :
|
||||
override fun liveDataObserve() {
|
||||
//接收蓝牙连接状态
|
||||
XEventBus.observe(this, EventName.ConnectDeviceState) { ble: BleTrackDeviceBean ->
|
||||
if (TextUtils.isEmpty(mMac)) return@observe
|
||||
mViewBinding.ilPaymentSuccessBluetoothTips.trbBleConnectState.let { view ->
|
||||
val bgColor = if (ble.conState == ConState.CONNECTED) {
|
||||
setButtonEnabled(mViewBinding.btnPaymentSuccessContinue, ConstantInt.Type1)
|
||||
@@ -118,6 +119,7 @@ class PaymentSuccessActivity :
|
||||
|
||||
//搜索蓝牙的设备状态
|
||||
XEventBus.observe(this, EventName.ActionConDeviceState) { conState: Int ->
|
||||
if (TextUtils.isEmpty(mMac)) return@observe
|
||||
setButtonEnabled(mViewBinding.btnPaymentSuccessContinue, ConstantInt.Type0)
|
||||
if (conState == ConState.DEVICE_NOT_FOUND) {
|
||||
// ViewUtil.instance.showDialog(
|
||||
@@ -139,6 +141,7 @@ class PaymentSuccessActivity :
|
||||
|
||||
//接收蓝牙返回数据
|
||||
XEventBus.observe(this, EventName.DeviceReceiveData) { receiveData: ReceiveDeviceData ->
|
||||
if (TextUtils.isEmpty(mMac)) return@observe
|
||||
mPayResult?.apply {
|
||||
if (mMac == receiveData.mac) {
|
||||
val data = receiveData.data
|
||||
|
||||
@@ -3,6 +3,8 @@ package com.abbidot.tracker.ui.activity.subscribe
|
||||
import android.text.TextUtils
|
||||
import android.view.View
|
||||
import androidx.activity.viewModels
|
||||
import com.abbidot.baselibrary.constant.EventName
|
||||
import com.abbidot.baselibrary.eventbus.XEventBus
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.base.BaseActivity
|
||||
import com.abbidot.tracker.bean.SubscriptionsOrderBean
|
||||
@@ -39,7 +41,7 @@ class RequestRefundActivity :
|
||||
val planName = getString(R.string.txt_plan) + " ${it.mealName}"
|
||||
tvRequestRefundPlanName.text = planName
|
||||
val refundRefund = getString(R.string.txt_refund) + ": " + String.format(
|
||||
mContext.getString(R.string.txt_money_unit), it.totalAmountWithTax
|
||||
mContext.getString(R.string.txt_money_unit), "${it.totalAmountWithTax}"
|
||||
)
|
||||
tvRequestRefundRefund.text = refundRefund
|
||||
}
|
||||
@@ -73,6 +75,7 @@ class RequestRefundActivity :
|
||||
mRefundLiveData.observe(this@RequestRefundActivity) {
|
||||
dealRequestResult(it, object : GetResultCallback {
|
||||
override fun onResult(any: Any) {
|
||||
XEventBus.post(EventName.RefreshPackage)
|
||||
showToast(R.string.txt_successful, true)
|
||||
}
|
||||
})
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package com.abbidot.tracker.ui.activity.subscribe
|
||||
|
||||
import androidx.activity.viewModels
|
||||
import com.abbidot.baselibrary.constant.EventName
|
||||
import com.abbidot.baselibrary.eventbus.XEventBus
|
||||
import com.abbidot.baselibrary.util.AppUtils
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.adapter.SubscriptionHistoryAdapter
|
||||
@@ -22,6 +24,7 @@ class SubscriptionHistoryActivity :
|
||||
private lateinit var mHistoryAdapter: SubscriptionHistoryAdapter
|
||||
private var mSubscriptionsOrderList = mutableListOf<SubscriptionsOrderBean>()
|
||||
private var mDeviceId = ""
|
||||
private var mRefreshPackage = true
|
||||
|
||||
override fun getTopBar() = mViewBinding.ilSubscriptionHistoryTopBar.titleTopBar
|
||||
|
||||
@@ -44,13 +47,16 @@ class SubscriptionHistoryActivity :
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
mSubscriptionViewModel.getSubscriptionsHistory(mDeviceId)
|
||||
if (mRefreshPackage) {
|
||||
mRefreshPackage = false
|
||||
mSubscriptionViewModel.getSubscriptionsHistory(mDeviceId)
|
||||
}
|
||||
}
|
||||
|
||||
override fun liveDataObserve() {
|
||||
// XEventBus.observe(this, EventName.UpdateData) {
|
||||
// mSubscriptionViewModel.getSubscriptionsHistory(mDeviceId)
|
||||
// }
|
||||
XEventBus.observe(this, EventName.RefreshPackage) {
|
||||
mRefreshPackage = true
|
||||
}
|
||||
mSubscriptionViewModel.mSubscriptionsHistoryLiveData.observe(this) {
|
||||
dealRequestResult(it, object : GetResultCallback {
|
||||
override fun onResult(any: Any) {
|
||||
|
||||
@@ -105,7 +105,7 @@ class PermissionsActivityCommon(context: Context) {
|
||||
PermissionLists.getBluetoothScanPermission(),
|
||||
PermissionLists.getBluetoothConnectPermission()
|
||||
)
|
||||
) && SRBleUtil.instance.isBlueEnable(mContext)
|
||||
) && SRBleUtil.instance.isBleEnable(mContext)
|
||||
) {
|
||||
list[0].state = ConstantInt.Type1
|
||||
list[0].selected = false
|
||||
|
||||
@@ -76,15 +76,15 @@ class HomeMapCommon @Inject constructor() : BaseMapCommon() {
|
||||
if (null != mHomeMapBaiduMapFragment) {
|
||||
mHomeMapBaiduMapFragment!!.mBaiduMap?.clear()
|
||||
} else if (null != mHomeMapGoogleMapFragment) {
|
||||
mHomeMapGoogleMapFragment!!.mGoogleMap?.clear()
|
||||
mHomeMapGoogleMapFragment!!.clearAllMarker()
|
||||
}
|
||||
}
|
||||
|
||||
fun refreshPetCurrentLocation(latitude: Double, longitude: Double, isAnimMoveCamera: Boolean) {
|
||||
fun refreshPetCurrentLocation(latitude: Double, longitude: Double, isMoveCamera: Boolean) {
|
||||
if (null != mHomeMapBaiduMapFragment) {
|
||||
mHomeMapBaiduMapFragment?.apply {
|
||||
refreshPetCurrentLocation(
|
||||
latitude, longitude, isAnimMoveCamera = isAnimMoveCamera
|
||||
latitude, longitude, isMoveCamera
|
||||
)
|
||||
}
|
||||
} else if (null != mHomeMapGoogleMapFragment) {
|
||||
@@ -92,9 +92,7 @@ class HomeMapCommon @Inject constructor() : BaseMapCommon() {
|
||||
MMKVUtil.putDouble(MMKVKey.MapShowDefaultLon, longitude)
|
||||
mHomeMapGoogleMapFragment?.apply {
|
||||
refreshPetCurrentLocation(
|
||||
LatLng(latitude, longitude),
|
||||
isAnimMoveCamera = isAnimMoveCamera,
|
||||
needMoveCamera = isAnimMoveCamera
|
||||
LatLng(latitude, longitude), needMoveCamera = isMoveCamera
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -174,6 +172,10 @@ class HomeMapCommon @Inject constructor() : BaseMapCommon() {
|
||||
}
|
||||
}
|
||||
|
||||
fun greenRippleCircleAnim() {
|
||||
mHomeMapGoogleMapFragment?.greenRippleCircleAnim()
|
||||
}
|
||||
|
||||
fun setMarkerInfoViewOffset() {
|
||||
if (null != mHomeMapBaiduMapFragment) {
|
||||
} else if (null != mHomeMapGoogleMapFragment) {
|
||||
|
||||
@@ -32,6 +32,13 @@ class WifiZone2MapCommon : BaseMapCommon() {
|
||||
mWiFiZone2GoogleMapFragment?.getLastLocation()
|
||||
}
|
||||
|
||||
/**
|
||||
* 切换地图类型
|
||||
*/
|
||||
fun switchSatelliteAndNormalMapType() {
|
||||
switchSatelliteAndNormalMapType(mBaiduMapFragment, mWiFiZone2GoogleMapFragment)
|
||||
}
|
||||
|
||||
fun getDecWiFiAddressData(): HistoryDataBean? {
|
||||
if (null != mWiFiZone2GoogleMapFragment) {
|
||||
if (null !== mWiFiZone2GoogleMapFragment!!.mDecWifiAddressData) return mWiFiZone2GoogleMapFragment!!.mDecWifiAddressData
|
||||
|
||||
@@ -9,7 +9,9 @@ import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.commit
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
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.MMKVUtil
|
||||
import com.abbidot.baselibrary.util.Utils
|
||||
@@ -68,6 +70,9 @@ class RouteV2Fragment : BaseFragment<FragmentRouteV2Binding>(FragmentRouteV2Bind
|
||||
private var isFirst = true
|
||||
private var mProgress = -1
|
||||
|
||||
//充值续费或升级返回类型
|
||||
private var mRechargeBackType = ConstantInt.SpecialType
|
||||
|
||||
companion object {
|
||||
@JvmStatic
|
||||
fun newInstance(context: Context) = RouteV2Fragment().apply {
|
||||
@@ -209,6 +214,10 @@ class RouteV2Fragment : BaseFragment<FragmentRouteV2Binding>(FragmentRouteV2Bind
|
||||
activity?.apply {
|
||||
mHomeV2Activity = this as HomeV2Activity
|
||||
}
|
||||
//续费成功后,不执行
|
||||
if (mRechargeBackType == ConstantInt.Type1) {
|
||||
return
|
||||
}
|
||||
if (mCurrentShowPetPos == mHomeV2Activity.mSelectPetPosition) {
|
||||
if (!isSelectCustomDate) {
|
||||
if (mHistoryDataMapCommon.isMapLoadOk()) {
|
||||
@@ -224,6 +233,14 @@ class RouteV2Fragment : BaseFragment<FragmentRouteV2Binding>(FragmentRouteV2Bind
|
||||
}
|
||||
|
||||
override fun liveDataObserve() {
|
||||
//更新套餐数据
|
||||
XEventBus.observe(this, EventName.RefreshPackage) {
|
||||
//监听续费成功
|
||||
if (mRechargeBackType == ConstantInt.Type0) {
|
||||
mRechargeBackType = ConstantInt.Type1
|
||||
}
|
||||
}
|
||||
|
||||
mDataDetailViewModel.mHistoryDetailLive.observe(this) {
|
||||
dealRequestResult(it, object : GetResultCallback {
|
||||
override fun onResult(any: Any) {
|
||||
@@ -319,6 +336,7 @@ class RouteV2Fragment : BaseFragment<FragmentRouteV2Binding>(FragmentRouteV2Bind
|
||||
if (isResumed) {
|
||||
mHomeV2Activity.getPet()?.let { pet ->
|
||||
if (Util.checkPackageLimit(mHomeV2Activity, pet.deviceId)) {
|
||||
mRechargeBackType = pet.availableOrder
|
||||
mHistoryDataMapCommon.setPetUserLatLng()
|
||||
return@launch
|
||||
}
|
||||
@@ -412,7 +430,15 @@ class RouteV2Fragment : BaseFragment<FragmentRouteV2Binding>(FragmentRouteV2Bind
|
||||
|
||||
llHomeRouteCalendarFrom -> {
|
||||
mHomeV2Activity.getPet()?.let {
|
||||
if (Util.checkPackageLimit(mHomeV2Activity, it.deviceId)) return@apply
|
||||
//防止执行多次弹窗
|
||||
if (Util.isTimeLimit(mLimitExecutionTime)) {
|
||||
return@apply
|
||||
}
|
||||
if (Util.checkPackageLimit(mHomeV2Activity, it.deviceId)) {
|
||||
mRechargeBackType = it.availableOrder
|
||||
mLimitExecutionTime = System.currentTimeMillis()
|
||||
return@apply
|
||||
}
|
||||
}
|
||||
|
||||
if (null == mFromCalenderDialog) {
|
||||
@@ -433,7 +459,15 @@ class RouteV2Fragment : BaseFragment<FragmentRouteV2Binding>(FragmentRouteV2Bind
|
||||
|
||||
llHomeRouteCalendarTo -> {
|
||||
mHomeV2Activity.getPet()?.let {
|
||||
if (Util.checkPackageLimit(mHomeV2Activity, it.deviceId)) return@apply
|
||||
//防止执行多次弹窗
|
||||
if (Util.isTimeLimit(mLimitExecutionTime)) {
|
||||
return@apply
|
||||
}
|
||||
if (Util.checkPackageLimit(mHomeV2Activity, it.deviceId)) {
|
||||
mRechargeBackType = it.availableOrder
|
||||
mLimitExecutionTime = System.currentTimeMillis()
|
||||
return@apply
|
||||
}
|
||||
}
|
||||
if (null == mToCalenderDialog) {
|
||||
mToCalenderDialog = ShowCalenderAndTimeDialog(
|
||||
|
||||
@@ -85,8 +85,8 @@ class MapV2Fragment : BaseFragment<FragmentMapV2Binding>(FragmentMapV2Binding::i
|
||||
private lateinit var mDeviceMsgList: MutableList<DataBean>
|
||||
private lateinit var mDeviceMsgAdapter: HomeMapDeviceMsgAdapter
|
||||
|
||||
//启动动画移动地图摄像机
|
||||
private var isAnimMoveCamera = true
|
||||
//启动移动地图摄像机
|
||||
private var isMoveCamera = true
|
||||
private var mShowCenterLocationType = ConstantInt.PetLocationType
|
||||
|
||||
//是否显示围栏
|
||||
@@ -169,9 +169,7 @@ class MapV2Fragment : BaseFragment<FragmentMapV2Binding>(FragmentMapV2Binding::i
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
activity?.apply {
|
||||
mHomeV2Activity = this as HomeV2Activity
|
||||
}
|
||||
|
||||
//其他页面是否选择了宠物
|
||||
if (mCurrentShowPetPos != mHomeV2Activity.mSelectPetPosition) {
|
||||
showPetNameAndHead(mHomeV2Activity.mSelectPetPosition)
|
||||
@@ -192,6 +190,15 @@ class MapV2Fragment : BaseFragment<FragmentMapV2Binding>(FragmentMapV2Binding::i
|
||||
}
|
||||
}
|
||||
|
||||
private fun getHomeV2Activity(): HomeV2Activity? {
|
||||
return if (null == activity) {
|
||||
LogUtil.e("getHomeV2Activity,null == activity")
|
||||
null
|
||||
} else {
|
||||
activity as HomeV2Activity
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 地图加载好了
|
||||
*/
|
||||
@@ -282,6 +289,8 @@ class MapV2Fragment : BaseFragment<FragmentMapV2Binding>(FragmentMapV2Binding::i
|
||||
mHomeV2Activity.getPet(false)?.apply {
|
||||
//蓝牙断开就重新获取服务器数据,蓝牙数据上报断开
|
||||
if (trackBle.mac == macID && trackBle.conState != ConState.CONNECTED) {
|
||||
//隐藏蓝牙nearby
|
||||
mViewBinding.rvHomeMapDeviceMsg.visibility = View.GONE
|
||||
updateMapDeviceStatus()
|
||||
}
|
||||
}
|
||||
@@ -306,7 +315,7 @@ class MapV2Fragment : BaseFragment<FragmentMapV2Binding>(FragmentMapV2Binding::i
|
||||
}
|
||||
mHomeMapCommon.setMapDeviceBean(mMapDeviceBean)
|
||||
mHomeMapCommon.refreshPetCurrentLocation(
|
||||
it.latitude, it.longitude, isAnimMoveCamera
|
||||
it.latitude, it.longitude, isMoveCamera
|
||||
)
|
||||
mHomeMapCommon.startRefreshUserLocation()
|
||||
}
|
||||
@@ -424,17 +433,17 @@ class MapV2Fragment : BaseFragment<FragmentMapV2Binding>(FragmentMapV2Binding::i
|
||||
private fun updateMapDeviceStatus(
|
||||
isNeedCountDown: Boolean = true, useBleLocation: Boolean = false
|
||||
) {
|
||||
mShowCenterLocationType = ConstantInt.PetLocationType
|
||||
ViewUtil.instance.setMapSwitchLocationButtonImage(
|
||||
mViewBinding.homeMapRefreshBtn, mShowCenterLocationType
|
||||
)
|
||||
// mShowCenterLocationType = ConstantInt.PetLocationType
|
||||
// ViewUtil.instance.setMapSwitchLocationButtonImage(
|
||||
// mViewBinding.homeMapRefreshBtn, mShowCenterLocationType
|
||||
// )
|
||||
if (mHomeV2Activity.mPetList.size <= mCurrentShowPetPos) return
|
||||
mHomeV2Activity.getPet()?.apply {
|
||||
//蓝牙连接上,就直接用蓝牙上报的位置刷新
|
||||
if (useBleLocation && BleManager.getInstance().isConnected(macID)) {
|
||||
mMapDeviceBean?.let {
|
||||
mHomeMapCommon.refreshPetCurrentLocation(
|
||||
it.latitude, it.longitude, isAnimMoveCamera
|
||||
it.latitude, it.longitude, isMoveCamera
|
||||
)
|
||||
mHomeMapCommon.startRefreshUserLocation()
|
||||
}
|
||||
@@ -546,14 +555,14 @@ class MapV2Fragment : BaseFragment<FragmentMapV2Binding>(FragmentMapV2Binding::i
|
||||
}
|
||||
}
|
||||
|
||||
mShowCenterLocationType = ConstantInt.PetLocationType
|
||||
ViewUtil.instance.setMapSwitchLocationButtonImage(
|
||||
mViewBinding.homeMapRefreshBtn, mShowCenterLocationType
|
||||
)
|
||||
mHomeMapCommon.refreshPetCurrentLocation(latitude, longitude, isAnimMoveCamera)
|
||||
// mShowCenterLocationType = ConstantInt.PetLocationType
|
||||
// ViewUtil.instance.setMapSwitchLocationButtonImage(
|
||||
// mViewBinding.homeMapRefreshBtn, mShowCenterLocationType
|
||||
// )
|
||||
mHomeMapCommon.refreshPetCurrentLocation(latitude, longitude, isMoveCamera)
|
||||
mHomeMapCommon.startRefreshUserLocation()
|
||||
|
||||
isAnimMoveCamera = false
|
||||
isMoveCamera = false
|
||||
}
|
||||
}
|
||||
|
||||
@@ -578,7 +587,7 @@ class MapV2Fragment : BaseFragment<FragmentMapV2Binding>(FragmentMapV2Binding::i
|
||||
}
|
||||
}
|
||||
} else if (type == 1) {
|
||||
if (!SRBleUtil.instance.isBlueEnable(mContext!!)) {
|
||||
if (!SRBleUtil.instance.isBleEnable(mContext!!)) {
|
||||
SRBleUtil.instance.openBluetooth(mContext!!)
|
||||
} else if (mHomeV2Activity.isRequestPetData && mHomeV2Activity.mPetList.size == 0) {
|
||||
showToast(R.string.no_bind_pet)
|
||||
@@ -606,17 +615,27 @@ class MapV2Fragment : BaseFragment<FragmentMapV2Binding>(FragmentMapV2Binding::i
|
||||
if (mShowCenterLocationType == ConstantInt.PetLocationType) {
|
||||
mShowCenterLocationType = ConstantInt.UserLocationType
|
||||
mHomeMapCommon.switchShowLocation(mShowCenterLocationType)
|
||||
|
||||
ViewUtil.instance.setMapSwitchLocationButtonImage(
|
||||
homeMapRefreshBtn, mShowCenterLocationType
|
||||
)
|
||||
} else {
|
||||
isAnimMoveCamera = true
|
||||
mShowCenterLocationType = ConstantInt.PetLocationType
|
||||
isMoveCamera = true
|
||||
updateMapDeviceStatus(useBleLocation = true)
|
||||
}
|
||||
ViewUtil.instance.setMapSwitchLocationButtonImage(
|
||||
homeMapRefreshBtn, mShowCenterLocationType
|
||||
)
|
||||
}
|
||||
|
||||
homeMapLiveBtn -> {
|
||||
// locationPermissionsTip()
|
||||
mHomeV2Activity.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)
|
||||
}
|
||||
}
|
||||
|
||||
homeMapLiveBtn -> locationPermissionsTip()
|
||||
llHomeMapTopPet.ivTopPetBtnSmall -> showMapTypeDialog()
|
||||
homeMapBluetoothBtn -> checkPermissions(1)
|
||||
llHomeMapTopPet.homeDataPetNameSmall, llHomeMapTopPet.homeDataPetHeadSmall.root -> mHomeV2Activity.selectPetDialog()
|
||||
|
||||
@@ -292,7 +292,7 @@ abstract class BaseBaiduMapFragment :
|
||||
lat: Double,
|
||||
lon: Double,
|
||||
needMoveCamera: Boolean = true,
|
||||
isAnimMoveCamera: Boolean = true,
|
||||
isAnimMoveCamera: Boolean = false,
|
||||
needConvertGCJ02: Boolean = true,
|
||||
headBgResId: Int = R.drawable.pic_map_gps_avatar
|
||||
) {
|
||||
@@ -316,7 +316,7 @@ abstract class BaseBaiduMapFragment :
|
||||
fun refreshPetCurrentLocation(
|
||||
latLng: LatLng,
|
||||
needMoveCamera: Boolean = true,
|
||||
isAnimMoveCamera: Boolean = true,
|
||||
isAnimMoveCamera: Boolean = false,
|
||||
headBgResId: Int = R.drawable.pic_map_gps_avatar
|
||||
) {
|
||||
refreshPetCurrentLocation(
|
||||
@@ -341,7 +341,7 @@ abstract class BaseBaiduMapFragment :
|
||||
* @param needConvertGCJ02 是否需要转换GCJ02坐标
|
||||
*/
|
||||
fun moveCameraLocation(
|
||||
lat: Double, lon: Double, needConvertGCJ02: Boolean = true, isAnimMoveCamera: Boolean = true
|
||||
lat: Double, lon: Double, needConvertGCJ02: Boolean = true, isAnimMoveCamera: Boolean = false
|
||||
) {
|
||||
val latLng = getBaiduMapLatLng(lat, lon, needConvertGCJ02)
|
||||
|
||||
@@ -359,7 +359,7 @@ abstract class BaseBaiduMapFragment :
|
||||
* 改变地图手势的中心点(地图的中心点)
|
||||
* @param latLng 已经是转换好的坐标
|
||||
*/
|
||||
fun moveCameraLocation(latLng: LatLng, isAnimMoveCamera: Boolean = true) {
|
||||
fun moveCameraLocation(latLng: LatLng, isAnimMoveCamera: Boolean = false) {
|
||||
moveCameraLocation(latLng.latitude, latLng.longitude, false, isAnimMoveCamera)
|
||||
}
|
||||
|
||||
|
||||
@@ -131,7 +131,8 @@ abstract class BaseGoogleMapFragment :
|
||||
//默认华盛顿经纬度
|
||||
val lat = MMKVUtil.getDouble(MMKVKey.MapShowDefaultLat, 38.913611)
|
||||
val lon = MMKVUtil.getDouble(MMKVKey.MapShowDefaultLon, -77.013222)
|
||||
val position = CameraPosition.fromLatLngZoom(LatLng(lat, lon), 4f)
|
||||
//不使用地图摄像头移动动画,默认级别一样大
|
||||
val position = CameraPosition.fromLatLngZoom(LatLng(lat, lon), mGoogleMapZoom)
|
||||
camera(position)
|
||||
}
|
||||
mGoogleMapView = MapView(this.requireActivity(), options)
|
||||
@@ -244,7 +245,7 @@ abstract class BaseGoogleMapFragment :
|
||||
/**
|
||||
* 根据CameraUpdate移动摄像机
|
||||
*/
|
||||
fun moveCameraUpdate(lat: Double, lon: Double, isAnimMoveCamera: Boolean = true) {
|
||||
fun moveCameraUpdate(lat: Double, lon: Double, isAnimMoveCamera: Boolean = false) {
|
||||
if (null == mCameraUpdate) {
|
||||
moveCameraLocation(lat, lon, isAnimMoveCamera)
|
||||
LogUtil.e("moveCameraUpdate---------->CameraUpdate=null,摄像机移动靠moveCameraLocation经纬度")
|
||||
@@ -263,14 +264,14 @@ abstract class BaseGoogleMapFragment :
|
||||
/**
|
||||
* 根据CameraUpdate移动摄像机
|
||||
*/
|
||||
fun moveCameraUpdate(latLng: LatLng, isAnimMoveCamera: Boolean = true) {
|
||||
fun moveCameraUpdate(latLng: LatLng, isAnimMoveCamera: Boolean = false) {
|
||||
moveCameraUpdate(latLng.latitude, latLng.longitude, isAnimMoveCamera)
|
||||
}
|
||||
|
||||
/**
|
||||
* 移动到某个位置 为中心点
|
||||
*/
|
||||
fun moveCameraLocation(latLng: LatLng, isAnimMoveCamera: Boolean = true) {
|
||||
fun moveCameraLocation(latLng: LatLng, isAnimMoveCamera: Boolean = false) {
|
||||
mGoogleMap?.apply {
|
||||
//animateCamera使用动画
|
||||
if (isAnimMoveCamera) {
|
||||
@@ -288,7 +289,7 @@ abstract class BaseGoogleMapFragment :
|
||||
/**
|
||||
* 移动到某个位置 为中心点
|
||||
*/
|
||||
fun moveCameraLocation(lat: Double, lon: Double, isAnimMoveCamera: Boolean = true) {
|
||||
fun moveCameraLocation(lat: Double, lon: Double, isAnimMoveCamera: Boolean = false) {
|
||||
moveCameraLocation(LatLng(lat, lon), isAnimMoveCamera)
|
||||
}
|
||||
|
||||
@@ -373,7 +374,7 @@ abstract class BaseGoogleMapFragment :
|
||||
fun refreshPetCurrentLocation(
|
||||
latLng: LatLng,
|
||||
needMoveCamera: Boolean = true,
|
||||
isAnimMoveCamera: Boolean = true,
|
||||
isAnimMoveCamera: Boolean = false,
|
||||
headBgResId: Int = R.drawable.pic_map_gps_avatar
|
||||
) {
|
||||
mPetLatLng = latLng
|
||||
|
||||
@@ -113,7 +113,7 @@ class FencesAddEditGoogleMapFragment : BaseGoogleMapFragment() {
|
||||
mFencesCircleView.postDelayed({
|
||||
isMapZoomReady = true
|
||||
restoreEditFences()
|
||||
}, 1500)
|
||||
}, 1000)
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
@@ -251,14 +251,14 @@ class HomeMapGoogleMapFragment : BaseGoogleMapFragment() {
|
||||
// addUserAndPetLine(latLng)
|
||||
refreshPetCurrentLocation(latLng, needMoveCamera = isMoveCamera)
|
||||
|
||||
mRippleCircle?.apply {
|
||||
//一像素对应几米
|
||||
val pxDis = 2.0.pow(15.5 - getGoogleMapZoom())
|
||||
mRippleCircleRadius = (pxDis * 150).toInt()
|
||||
fillColor = (ContextCompat.getColor(mContext!!, R.color.select_color5))
|
||||
strokeColor = (ContextCompat.getColor(mContext!!, R.color.select_color5))
|
||||
mValueAnimator?.duration = 2000
|
||||
}
|
||||
// mRippleCircle?.apply {
|
||||
// //一像素对应几米
|
||||
// val pxDis = 2.0.pow(15.5 - getGoogleMapZoom())
|
||||
// mRippleCircleRadius = (pxDis * 150).toInt()
|
||||
// fillColor = (ContextCompat.getColor(mContext!!, R.color.select_color5))
|
||||
// strokeColor = (ContextCompat.getColor(mContext!!, R.color.select_color5))
|
||||
// mValueAnimator?.duration = 2000
|
||||
// }
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -277,15 +277,6 @@ class HomeMapGoogleMapFragment : BaseGoogleMapFragment() {
|
||||
}
|
||||
}
|
||||
// addPolyLines(mGoogleMap!!, latLngList)
|
||||
|
||||
mRippleCircle?.apply {
|
||||
//一像素对应几米
|
||||
val pxDis = 2.0.pow(15.5 - getGoogleMapZoom())
|
||||
mRippleCircleRadius = (pxDis * 150).toInt()
|
||||
fillColor = (ContextCompat.getColor(mContext!!, R.color.select_color5))
|
||||
strokeColor = (ContextCompat.getColor(mContext!!, R.color.select_color5))
|
||||
mValueAnimator?.duration = 2000
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -301,6 +292,20 @@ class HomeMapGoogleMapFragment : BaseGoogleMapFragment() {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 直播开始之后,改变绿色波纹动画
|
||||
*/
|
||||
fun greenRippleCircleAnim() {
|
||||
mRippleCircle?.apply {
|
||||
//一像素对应几米
|
||||
val pxDis = 2.0.pow(15.5 - getGoogleMapZoom())
|
||||
mRippleCircleRadius = (pxDis * 150).toInt()
|
||||
fillColor = (ContextCompat.getColor(mContext!!, R.color.select_color5))
|
||||
strokeColor = (ContextCompat.getColor(mContext!!, R.color.select_color5))
|
||||
mValueAnimator?.duration = 2000
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDetach() {
|
||||
super.onDetach()
|
||||
mValueAnimator?.cancel()
|
||||
|
||||
@@ -8,6 +8,7 @@ import android.os.Build
|
||||
import android.os.Parcelable
|
||||
import android.provider.Settings
|
||||
import androidx.lifecycle.LifecycleCoroutineScope
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import cn.jpush.android.api.JPushInterface
|
||||
import com.abbidot.baselibrary.constant.EventName
|
||||
import com.abbidot.baselibrary.constant.MMKVKey
|
||||
@@ -18,20 +19,25 @@ import com.abbidot.baselibrary.util.MMKVUtil
|
||||
import com.abbidot.baselibrary.util.Utils
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.base.BaseActivity
|
||||
import com.abbidot.tracker.base.BaseDialog
|
||||
import com.abbidot.tracker.bean.BleReportDataBean
|
||||
import com.abbidot.tracker.bean.MapDeviceBean
|
||||
import com.abbidot.tracker.bean.MessageBean
|
||||
import com.abbidot.tracker.bean.UserBean
|
||||
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.dialog.CommonDialog2
|
||||
import com.abbidot.tracker.dialog.PackageUpgradeDialog
|
||||
import com.abbidot.tracker.ui.activity.HomeV2Activity
|
||||
import com.abbidot.tracker.ui.activity.SayHelloActivity
|
||||
import com.abbidot.tracker.ui.activity.device.AddNewTracker1Activity
|
||||
import com.abbidot.tracker.ui.activity.pet.ShowInviteDeviceActivity
|
||||
import com.abbidot.tracker.ui.activity.pet.first.FirstSetPetTypeActivity
|
||||
import com.abbidot.tracker.ui.activity.subscribe.SubscriptionPlanActivity
|
||||
import com.abbidot.tracker.util.bluetooth.SRBleUtil
|
||||
import com.abbidot.tracker.vm.SubscriptionManageViewModel
|
||||
import com.baidu.mapapi.utils.DistanceUtil
|
||||
import com.clj.fastble.BleManager
|
||||
import com.google.android.gms.maps.model.LatLng
|
||||
@@ -623,7 +629,7 @@ class Util {
|
||||
PermissionLists.getBluetoothScanPermission(),
|
||||
PermissionLists.getBluetoothConnectPermission()
|
||||
)
|
||||
) || !SRBleUtil.instance.isBlueEnable(context)
|
||||
) || !SRBleUtil.instance.isBleEnable(context)
|
||||
) {
|
||||
hasPermissions = false
|
||||
}
|
||||
@@ -658,14 +664,17 @@ class Util {
|
||||
* 检查蓝牙权限和开关
|
||||
*/
|
||||
fun checkBluetoothPermissionsEnabled(
|
||||
context: Context, successAuthorize: () -> Unit, isShowToast: Boolean = true
|
||||
context: Context,
|
||||
successAuthorize: () -> Unit,
|
||||
isShowToast: Boolean = true,
|
||||
isCheckBleOpen: Boolean = true
|
||||
) {
|
||||
checkPermissions(
|
||||
context,
|
||||
object : RequestPermissionCallback {
|
||||
override fun onRequestPermissionSuccess() {
|
||||
//判断蓝牙是否打开
|
||||
if (!SRBleUtil.instance.isBlueEnable(context)) {
|
||||
if (isCheckBleOpen && !SRBleUtil.instance.isBleEnable(context)) {
|
||||
SRBleUtil.instance.openBluetooth(context)
|
||||
return
|
||||
}
|
||||
@@ -715,13 +724,60 @@ class Util {
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* 套餐过期提示充值
|
||||
*/
|
||||
fun checkPackageExpired(activity: BaseActivity<*>, deviceId: String) {
|
||||
LogUtil.e("套餐过期deviceId=$deviceId")
|
||||
CommonDialog2(
|
||||
activity,
|
||||
activity.getString(R.string.txt_subscription_expired),
|
||||
activity.getString(R.string.txt_card_recharge),
|
||||
object : BaseDialog.OnDialogOkListener {
|
||||
override fun onOkClick(dialog: BaseDialog<*>) {
|
||||
ViewModelProvider(activity)[SubscriptionManageViewModel::class.java].apply {
|
||||
mSubscriptionsOrderLiveData.observe(activity) {
|
||||
activity.dealRequestResult(it, object : GetResultCallback {
|
||||
override fun onResult(any: Any) {
|
||||
it.getOrNull()?.let { list ->
|
||||
for (l in list) {
|
||||
if (l.deviceId == deviceId) {
|
||||
Intent(
|
||||
activity,
|
||||
SubscriptionPlanActivity::class.java
|
||||
).let { i ->
|
||||
i.putExtra(ConstantString.LkSetMeal, l)
|
||||
i.putExtra(
|
||||
ConstantString.RechargeType,
|
||||
ConstantInt.Type2
|
||||
)
|
||||
activity.startActivity(i)
|
||||
}
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
mSubscriptionsOrderLiveData.removeObservers(activity)
|
||||
}
|
||||
getSubscriptionsOrder()
|
||||
}
|
||||
}
|
||||
}).show()
|
||||
}
|
||||
|
||||
/**
|
||||
* 基础套餐权限控制
|
||||
*/
|
||||
fun checkPackageLimit(
|
||||
activity: BaseActivity<*>, deviceId: String
|
||||
): Boolean {
|
||||
fun checkPackageLimit(activity: BaseActivity<*>, deviceId: String): Boolean {
|
||||
LogUtil.e("基础套餐权限控制deviceId=$deviceId")
|
||||
//先判断有没有过期
|
||||
val availableOrder = MMKVUtil.getInt(MMKVKey.AvailableOrder, 1)
|
||||
if (availableOrder == ConstantInt.Type0) {
|
||||
checkPackageExpired(activity, deviceId)
|
||||
return true
|
||||
}
|
||||
val mealType = MMKVUtil.getInt(MMKVKey.MealType)
|
||||
if (ConstantInt.BasicPackage == mealType) {
|
||||
PackageUpgradeDialog(activity, deviceId).show()
|
||||
@@ -768,6 +824,13 @@ class Util {
|
||||
return updateMin > ConstantInt.ReportTimeOutTime
|
||||
}
|
||||
|
||||
/***
|
||||
* 是否限制时间执行
|
||||
*/
|
||||
fun isTimeLimit(cTime: Long, limitSecond: Int = 1): Boolean {
|
||||
return System.currentTimeMillis() - cTime < limitSecond * 1000
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取保存的地图模式 地图类型,0标准 1卫星地图
|
||||
*/
|
||||
|
||||
@@ -985,6 +985,9 @@ class ViewUtil private constructor() {
|
||||
MMKVUtil.putInt(MMKVKey.PetSelectPosition, selectPos)
|
||||
//保存当前设备的套餐类型,控制权限
|
||||
MMKVUtil.putInt(MMKVKey.MealType, petBean.mealType)
|
||||
//套餐是否过期
|
||||
MMKVUtil.putInt(MMKVKey.AvailableOrder, petBean.availableOrder)
|
||||
LogUtil.e("保存宠物相关数据到本地,savePetSP")
|
||||
//保存当前宠物是否分享的
|
||||
MMKVUtil.putInt(MMKVKey.Shared, petBean.shared)
|
||||
}
|
||||
|
||||
@@ -16,12 +16,10 @@ import com.abbidot.baselibrary.eventbus.XEventBus
|
||||
import com.abbidot.baselibrary.util.AppUtils
|
||||
import com.abbidot.baselibrary.util.LogUtil
|
||||
import com.abbidot.tracker.bean.BleTrackDeviceBean
|
||||
import com.abbidot.tracker.bean.FencesBean
|
||||
import com.abbidot.tracker.bean.ReceiveDeviceData
|
||||
import com.abbidot.tracker.util.Util
|
||||
import com.clj.fastble.BleManager
|
||||
import com.clj.fastble.callback.BleGattCallback
|
||||
import com.clj.fastble.callback.BleMtuChangedCallback
|
||||
import com.clj.fastble.callback.BleNotifyCallback
|
||||
import com.clj.fastble.callback.BleRssiCallback
|
||||
import com.clj.fastble.callback.BleWriteCallback
|
||||
@@ -112,7 +110,7 @@ class SRBleUtil private constructor() {
|
||||
/**
|
||||
* 判断当前Android设备的蓝牙是否已经打开
|
||||
*/
|
||||
fun isBlueEnable(context: Context): Boolean {
|
||||
fun isBleEnable(context: Context): Boolean {
|
||||
// BleManager.getInstance().isBlueEnable
|
||||
// 获取BluetoothManager服务
|
||||
val bluetoothManager =
|
||||
@@ -173,7 +171,7 @@ class SRBleUtil private constructor() {
|
||||
LogUtil.e("蓝牙断开${bleDevice.name},${bleDevice.mac},activeDisConnected=$isActiveDisConnected,status=$status")
|
||||
notifyDeviceState(bleDevice, ConState.DISCONNECTED)
|
||||
mContext?.apply {
|
||||
if (isBlueEnable(this) && !isActiveDisConnected) {
|
||||
if (isBleEnable(this) && !isActiveDisConnected) {
|
||||
connect(bleDevice)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ class ConnectionDeviceViewModel : ViewModel() {
|
||||
|
||||
fun autoConnectBleDevice(context: Context) {
|
||||
//判断蓝牙是否打开
|
||||
if (!SRBleUtil.instance.isBlueEnable(context)) {
|
||||
if (!SRBleUtil.instance.isBleEnable(context)) {
|
||||
LogUtil.e("automaticConnection,蓝牙没打开")
|
||||
return
|
||||
}
|
||||
@@ -144,6 +144,10 @@ class ConnectionDeviceViewModel : ViewModel() {
|
||||
if (TextUtils.isEmpty(mac)) {
|
||||
return
|
||||
}
|
||||
if (BleManager.getInstance().isConnected(mac)) {
|
||||
LogUtil.e("设备已经连接")
|
||||
return
|
||||
}
|
||||
if (SRBleUtil.instance.isBleConnecting) {
|
||||
LogUtil.e("已经有设备在连接中...")
|
||||
XEventBus.post(EventName.ActionConDeviceState, ConState.CONNECTING_MAC)
|
||||
|
||||
@@ -64,7 +64,7 @@ class FindBleDeviceViewModel : ViewModel() {
|
||||
if (TextUtils.isEmpty(mac)) {
|
||||
return
|
||||
}
|
||||
if (!SRBleUtil.instance.isBlueEnable(activity)) {
|
||||
if (!SRBleUtil.instance.isBleEnable(activity)) {
|
||||
activity.showToast(R.string.txt_ble_enable)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -48,7 +48,14 @@
|
||||
style="@style/map_image_yellow_btn_style"
|
||||
android:layout_gravity="bottom|end"
|
||||
android:layout_marginEnd="@dimen/dp_18"
|
||||
android:layout_marginBottom="@dimen/dp_36" />
|
||||
android:layout_marginBottom="@dimen/dp_36"
|
||||
android:visibility="gone" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/iv_wifi_power_zone2_map_type_btn"
|
||||
style="@style/map_image_white_btn_style"
|
||||
android:layout_gravity="bottom|end"
|
||||
android:layout_margin="@dimen/dp_16" />
|
||||
|
||||
</androidx.cardview.widget.CardView>
|
||||
|
||||
|
||||
@@ -37,6 +37,8 @@ import androidx.annotation.StringDef
|
||||
MMKVKey.MapType,
|
||||
MMKVKey.ShowFence,
|
||||
MMKVKey.isCrash,
|
||||
MMKVKey.AvailableOrder,
|
||||
MMKVKey.isFirstCheckBleOpen,
|
||||
MMKVKey.Shared
|
||||
)
|
||||
@Retention(AnnotationRetention.SOURCE)
|
||||
@@ -93,9 +95,13 @@ annotation class MMKVKey {
|
||||
|
||||
//套餐类型
|
||||
const val MealType = "mealType"
|
||||
//套餐是否可用
|
||||
const val AvailableOrder = "availableOrder"
|
||||
|
||||
//是否分享的
|
||||
const val Shared = "shared"
|
||||
const val isCrash = "isCrash"
|
||||
//首次检查蓝牙是否开关
|
||||
const val isFirstCheckBleOpen = "isFirstCheckBleOpen"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user