diff --git a/app/build.gradle b/app/build.gradle index 018ae65..ea7cfe0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -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" diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/device/AddPairedSuccessActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/device/AddPairedSuccessActivity.kt index 7dd2a62..ecf73d6 100644 --- a/app/src/main/java/com/abbidot/tracker/ui/activity/device/AddPairedSuccessActivity.kt +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/device/AddPairedSuccessActivity.kt @@ -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::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?) { diff --git a/app/src/main/res/layout/activity_add_paired_success.xml b/app/src/main/res/layout/activity_add_paired_success.xml index 1dcb4eb..53723d1 100644 --- a/app/src/main/res/layout/activity_add_paired_success.xml +++ b/app/src/main/res/layout/activity_add_paired_success.xml @@ -62,12 +62,22 @@ app:lineHeight="@dimen/textSize20" app:typeface="@string/roboto_regular_font" /> + + +