完善绑定设备流程,有套餐设备绑定也发送蓝牙1a指令

This commit is contained in:
yezhiqiu
2026-01-14 17:14:22 +08:00
parent ed0a3e803d
commit 8bb497b548
3 changed files with 151 additions and 33 deletions

View File

@@ -28,9 +28,9 @@ android {
applicationId "com.abbidot.tracker"
minSdkVersion 23
targetSdkVersion 35
versionCode 2103
// versionName "2.1.3"
versionName "2.1.3-Beta2"
versionCode 2104
// versionName "2.1.4"
versionName "2.1.4-Beta1"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

View File

@@ -2,8 +2,11 @@ package com.abbidot.tracker.ui.activity.device
import android.content.Intent
import android.text.TextUtils
import android.view.Gravity
import android.view.View
import androidx.activity.viewModels
import androidx.core.content.ContextCompat
import com.abbidot.baselibrary.constant.ConState
import com.abbidot.baselibrary.constant.EventName
import com.abbidot.baselibrary.constant.MMKVKey
import com.abbidot.baselibrary.eventbus.XEventBus
@@ -12,7 +15,9 @@ 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.bean.BleTrackDeviceBean
import com.abbidot.tracker.bean.PetBean
import com.abbidot.tracker.bean.ReceiveDeviceData
import com.abbidot.tracker.bean.SubscriptionsOrderBean
import com.abbidot.tracker.constant.ConstantInt
import com.abbidot.tracker.constant.ConstantString
@@ -22,9 +27,14 @@ import com.abbidot.tracker.deprecated.ui.activity.vm.AddTrackerDeviceViewModel
import com.abbidot.tracker.ui.activity.device.wifi.AddWifiPowerZone1Activity
import com.abbidot.tracker.ui.activity.subscribe.SubscriptionPlanActivity
import com.abbidot.tracker.util.Util
import com.abbidot.tracker.util.ViewUtil
import com.abbidot.tracker.util.bluetooth.SRBleCmdUtil
import com.abbidot.tracker.util.bluetooth.SRBleUtil
import com.abbidot.tracker.vm.ConnectionDeviceViewModel
import com.abbidot.tracker.vm.PetInfoViewModel
import com.abbidot.tracker.vm.PetRelationViewModel
import com.abbidot.tracker.vm.UserProfileViewModel
import com.clj.fastble.BleManager
class AddPairedSuccessActivity :
BaseActivity<ActivityAddPairedSuccessBinding>(ActivityAddPairedSuccessBinding::inflate) {
@@ -33,6 +43,7 @@ class AddPairedSuccessActivity :
private val mPetViewModel: PetInfoViewModel by viewModels()
private val mUserProfileViewModel: UserProfileViewModel by viewModels()
private val mPetRelationViewModel: PetRelationViewModel by viewModels()
private val mConnectionDeviceViewModel: ConnectionDeviceViewModel by viewModels()
private lateinit var mSubscriptionsOrderBean: SubscriptionsOrderBean
@@ -42,6 +53,9 @@ class AddPairedSuccessActivity :
private var mMac = ""
private var mPetBean: PetBean? = null
//判断设备可用套餐状态
private var mAvailableOrder = 0
override fun getTopBar() = mViewBinding.ilAddPairedSuccessTopBar.titleTopBar
override fun initData() {
@@ -61,13 +75,14 @@ class AddPairedSuccessActivity :
tvPairSuccessDeviceOutId.text = mDeviceOutId
setOnClickListenerViews(btnPairSuccessActivate)
}
setButtonEnabled(mViewBinding.btnPairSuccessActivate, ConstantInt.Type0)
mAddTrackerViewModel.getDeviceOrderStatus(this@AddPairedSuccessActivity, mDeviceOutId)
}
override fun liveDataObserve() {
mAddTrackerViewModel.apply {
//获取设备套餐可用状态
mDeviceOrderStatusLiveData.observe(this@AddPairedSuccessActivity) {
setButtonEnabled(mViewBinding.btnPairSuccessActivate, ConstantInt.Type1)
dealRequestResult(it, object : GetResultCallback {
override fun onResult(any: Any) {
it.getOrNull()?.apply {
@@ -80,35 +95,41 @@ class AddPairedSuccessActivity :
o.deviceId = mDeviceId
o.userId = MMKVUtil.getString(MMKVKey.UserId)
}
mNetworkRequestsFailRetryCount = 0
mAvailableOrder = availableOrder
//判断设备是否有可用套餐
if (availableOrder == ConstantInt.Type1) {
setButtonEnabled(
mViewBinding.btnPairSuccessActivate, ConstantInt.Type0
)
//刷新设备绑定
mAddTrackerViewModel.updatePayDeviceState(
this@AddPairedSuccessActivity, mDeviceId
)
bleNotify()
connectBle(mMac)
} else {
mAddTrackerViewModel.getIccId(
this@AddPairedSuccessActivity, mDeviceOutId
setButtonEnabled(
mViewBinding.btnPairSuccessActivate, ConstantInt.Type1
)
}
}
}
override fun onRequestError(exceptionCode: String?) {
LogUtil.e("获取设备套餐可用状态---->请求错误onRequestError再次请求")
if (exceptionCode == mNetworkRequestsFailLimit) {
finish()
} else {
mAddTrackerViewModel.getDeviceOrderStatus(
this@AddPairedSuccessActivity, mDeviceOutId
)
}
}
})
}
//获取设备sim卡IccId
mGetIccIdLiveData.observe(this@AddPairedSuccessActivity) {
setButtonEnabled(mViewBinding.btnPairSuccessActivate, ConstantInt.Type1)
dealRequestResult(it, object : GetResultCallback {
override fun onResult(any: Any) {
it.getOrNull()?.apply {
mSubscriptionsOrderBean.deviceOutId = mDeviceOutId
mSubscriptionsOrderBean.iccid = iccid
setButtonEnabled(mViewBinding.btnPairSuccessActivate, ConstantInt.Type0)
val intent = Intent(mContext, SubscriptionPlanActivity::class.java)
intent.putExtra(ConstantString.LkSetMeal, mSubscriptionsOrderBean)
@@ -116,6 +137,11 @@ class AddPairedSuccessActivity :
startActivityFinish(intent)
}
}
override fun onRequestError(exceptionCode: String?) {
super.onRequestError(exceptionCode)
setButtonEnabled(mViewBinding.btnPairSuccessActivate, ConstantInt.Type1)
}
})
}
@@ -126,20 +152,18 @@ class AddPairedSuccessActivity :
MMKVUtil.putInt(MMKVKey.isBindDevice, ConstantInt.isBind)
XEventBus.post(EventName.RefreshDevice)
mUserProfileViewModel.updateMeasureUnit(ConstantInt.Type1)
// if (isFirstBind) {
// mUserProfileViewModel.updateMeasureUnit(ConstantInt.Type1)
//// val intent = Intent(mContext, FirstSetPetTypeActivity::class.java)
//// intent.putExtra(ConstantString.isFirstBind, isFirstBind)
//// startActivityFinish(intent)
// } else finish()
SRBleUtil.instance.getConnectMacDevice(mMac)?.let { ble ->
SRBleUtil.instance.writeData(
ble.bleDevice, SRBleCmdUtil.instance.setWorkingStatus()
)
}
}
override fun onRequestError(exceptionCode: String?) {
LogUtil.e("支付成功后,更新绑定状态------->请求宠物数据错误onRequestError再次请求")
LogUtil.e("有套餐,更新绑定状态--->请求数据错误onRequestError再次请求")
if (exceptionCode == mNetworkRequestsFailLimit) {
setButtonEnabled(mViewBinding.btnPairSuccessActivate, ConstantInt.Type1)
} else {
setButtonEnabled(mViewBinding.btnPairSuccessActivate, ConstantInt.Type0)
mAddTrackerViewModel.updatePayDeviceState(
this@AddPairedSuccessActivity, mSubscriptionsOrderBean.deviceId
)
@@ -197,7 +221,7 @@ class AddPairedSuccessActivity :
}
//绑定默认宠物
mPetRelationViewModel.mBindPetLiveData.observe(this@AddPairedSuccessActivity) {
setButtonEnabled(mViewBinding.btnPairSuccessActivate, ConstantInt.Type1)
// setButtonEnabled(mViewBinding.btnPairSuccessActivate, ConstantInt.Type1)
dealRequestResult(it, object : GetResultCallback {
override fun onResult(any: Any) {
XEventBus.post(EventName.RefreshPet)
@@ -216,15 +240,96 @@ class AddPairedSuccessActivity :
}, 1500)
}
override fun onRequestError(exceptionCode: String?) {
super.onRequestError(exceptionCode)
setButtonEnabled(mViewBinding.btnPairSuccessActivate, ConstantInt.Type1)
}
// override fun onRequestError(exceptionCode: String?) {
// super.onRequestError(exceptionCode)
// setButtonEnabled(mViewBinding.btnPairSuccessActivate, ConstantInt.Type1)
// }
})
}
}
}
private fun bleNotify() {
//接收蓝牙连接状态
XEventBus.observe(this, EventName.ConnectDeviceState) { ble: BleTrackDeviceBean ->
if (TextUtils.isEmpty(mMac)) return@observe
mViewBinding.ilPairSuccessBluetoothTips.trbBleConnectState.let { view ->
val bgColor = if (ble.conState == ConState.CONNECTED) {
setButtonEnabled(mViewBinding.btnPairSuccessActivate, ConstantInt.Type1)
view.text = getString(R.string.tracker_manage_set_ble_connect)
ContextCompat.getColor(mContext, R.color.cyan_color1)
} else {
setButtonEnabled(mViewBinding.btnPairSuccessActivate, ConstantInt.Type0)
view.text = getString(R.string.tracker_manage_set_ble_unconnect)
ContextCompat.getColor(mContext, R.color.red_color4)
}
view.setBackgroundColor(bgColor)
ViewUtil.instance.bleConStateToast(this, ble.conState, Gravity.CENTER)
}
}
//搜索蓝牙的设备状态
XEventBus.observe(this, EventName.ActionConDeviceState) { conState: Int ->
if (TextUtils.isEmpty(mMac)) return@observe
setButtonEnabled(mViewBinding.btnPairSuccessActivate, ConstantInt.Type0)
if (conState == ConState.DEVICE_NOT_FOUND) {
// ViewUtil.instance.showDialog(
// mContext,
// R.string.txt_no_search_device,
// object : BaseDialog.OnDialogOkListener {
// override fun onOkClick(dialog: BaseDialog<*>) {
// dialog.dismiss()
// }
// },
// okTextResId = R.string.txt_sure,
// cancelTextResId = R.string.txt_cancel
// )
}
mViewBinding.ilPairSuccessBluetoothTips.trbBleConnectState.let { view ->
ViewUtil.instance.bleConActionState(this, view, conState)
}
}
//接收蓝牙返回数据
XEventBus.observe(this, EventName.DeviceReceiveData) { receiveData: ReceiveDeviceData ->
if (TextUtils.isEmpty(mMac)) return@observe
if (mMac == receiveData.mac) {
val data = receiveData.data
parseData(data)
}
}
}
/**
* 解析数据
*/
private fun parseData(data: ByteArray?) {
if (null != data && data.isNotEmpty()) {
val data0 = SRBleCmdUtil.instance.byteToInt(data[0])
val data1 = SRBleCmdUtil.instance.byteToInt(data[1])
val data2 = SRBleCmdUtil.instance.byteToInt(data[2])
if (data0 == 0x1A && data1 == 1 && data2 == 0) {
mUserProfileViewModel.updateMeasureUnit(ConstantInt.Type1)
}
}
}
private fun connectBle(mac: String) {
mViewBinding.ilPairSuccessBluetoothTips.root.visibility = View.VISIBLE
//是否连接了蓝牙
if (BleManager.getInstance().isConnected(mac)) {
mViewBinding.ilPairSuccessBluetoothTips.trbBleConnectState.let {
it.setBackgroundColor(
ContextCompat.getColor(mContext, R.color.cyan_color1)
)
it.text = getString(R.string.tracker_manage_set_ble_connect)
}
setButtonEnabled(mViewBinding.btnPairSuccessActivate, ConstantInt.Type1)
} else {
mConnectionDeviceViewModel.connectDeviceToMac(this@AddPairedSuccessActivity, mac)
}
}
private fun addBindActivateDevice() {
if (TextUtils.isEmpty(mDeviceOutId)) {
@@ -232,9 +337,12 @@ class AddPairedSuccessActivity :
return
}
setButtonEnabled(mViewBinding.btnPairSuccessActivate, ConstantInt.Type0)
mAddTrackerViewModel.getDeviceOrderStatus(
this@AddPairedSuccessActivity, mDeviceOutId
)
if (mAvailableOrder == ConstantInt.Type1) {
//刷新设备绑定
mAddTrackerViewModel.updatePayDeviceState(this@AddPairedSuccessActivity, mDeviceId)
} else {
mAddTrackerViewModel.getIccId(this@AddPairedSuccessActivity, mDeviceOutId)
}
}
override fun onClick(v: View?) {

View File

@@ -62,12 +62,22 @@
app:lineHeight="@dimen/textSize20"
app:typeface="@string/roboto_regular_font" />
<include
android:id="@+id/il_pair_success_bluetooth_tips"
layout="@layout/layout_ble_connect_state"
android:layout_width="wrap_content"
android:visibility="invisible"
android:layout_height="wrap_content"
android:layout_above="@id/btn_payment_success_continue"
android:layout_centerHorizontal="true"
android:layout_marginTop="@dimen/dp_38" />
<com.abbidot.tracker.widget.TypefaceButton
android:id="@+id/btn_pair_success_activate"
style="@style/my_match_RoundRect_Button_style"
android:layout_height="@dimen/dp_50"
android:layout_marginHorizontal="@dimen/dp_16"
android:layout_marginTop="@dimen/dp_60"
android:layout_marginBottom="@dimen/dp_49"
android:text="@string/txt_continue"
android:textStyle="bold"