diff --git a/app/build.gradle b/app/build.gradle
index dd90890..071b6ac 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -2,6 +2,7 @@ apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
apply plugin: 'com.huawei.agconnect'
+apply plugin: 'kotlin-parcelize'
def rely = rootProject.ext.relyOn
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index d04148e..dcb9e42 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -142,6 +142,10 @@
+
+
-
+
@@ -387,14 +391,14 @@
android:exported="true"
android:label="@string/app_name"
android:launchMode="singleTask"
- android:taskAffinity="com.xty.healthuser"
+ android:taskAffinity="com.zj365.dc"
android:theme="@style/Theme.AppCompat.NoActionBar.Transparent">
@@ -409,9 +413,15 @@
android:name="com.hihonor.push.app_id"
android:value="${HONOR_APPID}" />
-
+
+
+
diff --git a/app/src/main/java/com/zj365/dc/activity/DeviceActiveAct.kt b/app/src/main/java/com/zj365/dc/activity/DeviceActiveAct.kt
new file mode 100644
index 0000000..837ef52
--- /dev/null
+++ b/app/src/main/java/com/zj365/dc/activity/DeviceActiveAct.kt
@@ -0,0 +1,515 @@
+package com.zj365.dc.activity
+
+import android.annotation.SuppressLint
+import android.content.Intent
+import android.graphics.Color
+import android.os.Build
+import android.os.Bundle
+import android.provider.Settings
+import android.text.SpannableString
+import android.text.Spanned
+import android.text.TextPaint
+import android.text.style.ClickableSpan
+import android.view.View
+import android.widget.TextView
+import androidx.core.content.ContextCompat
+import com.alibaba.android.arouter.facade.annotation.Route
+import com.google.gson.Gson
+import com.tamsiree.rxkit.RxActivityTool
+import com.tamsiree.rxkit.RxKeyboardTool
+import com.xty.base.act.BaseVmAct
+import com.xty.common.*
+import com.xty.common.aMapUtils.AmapInit
+import com.xty.common.arouter.ARouterUrl
+import com.xty.common.arouter.RouteManager
+import com.xty.common.bracelet.*
+import com.xty.common.event.BindDevEvent
+import com.xty.common.event.BlueToothConnectEvent
+import com.xty.common.event.BluetoothEvent
+import com.xty.common.event.MyInfoEvent
+import com.xty.common.util.CommonToastUtils
+import com.xty.common.util.CommonUtils
+import com.xty.common.util.PermissionUtils
+import com.xty.common.xqr_code.XQRCodeAct
+
+
+import com.xuexiang.xqrcode.XQRCode
+import com.yanzhenjie.permission.runtime.Permission
+import com.zj365.dc.databinding.ActDeviceActiveBinding
+import com.zj365.dc.model.ScanInfoBean
+import com.zj365.dc.vm.BasicInfoVm
+import com.zj365.health.weight.SignDialog
+import com.zj365.mime.weight.FactorySettingDialog
+import com.zj365.mime.weight.NoticeSettingDialog
+import org.greenrobot.eventbus.EventBus
+import org.greenrobot.eventbus.Subscribe
+import org.greenrobot.eventbus.ThreadMode
+
+/**
+ *
+ * 设备激活
+ */
+@SuppressLint("ObsoleteSdkInt")
+@Route(path = ARouterUrl.DEVICE_ACTIVE)
+class DeviceActiveAct : BaseVmAct() {
+
+ val binding by lazy { ActDeviceActiveBinding.inflate(layoutInflater) }
+ override fun setLayout() = binding.root
+
+ // var user: SettingBean.User? = null
+ var signPath = ""//签名地址
+ var isAgree = false
+ val SERVER_AGREEMENT = 1000 //服务协议
+ var isLogin: Boolean = false
+
+ //签名
+ val dialog by lazy {
+ SignDialog(this) {
+ signPath = it
+ binding.mImageSign.setImage(this, it)
+ }
+ }
+
+ private val factorySettingDialog by lazy {
+ FactorySettingDialog(
+ this,
+ "蓝牙手表需要访问位置、蓝牙权限。"
+ ) {
+ getBluePermission(baseContext) {
+ if (it) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
+ && !isGpsOpen(baseContext)
+ ) {
+ requestGPSPermission()
+ }
+ } else {
+ finish()
+ }
+ }
+ }
+ }
+
+ private var headerPath = ""
+ private var name = ""
+ private var sexType = ""
+ private var idCard = ""
+ private var height = ""
+ private var wieght = ""
+ private var address = ""
+ private var otherName = ""
+ private var otherPhone = ""
+ private var rela = ""
+ private var provincey = ""
+ private var city = ""
+ private var district = ""
+ private var lat = ""
+ private var lng = ""
+ private var medicName = ""
+ private var medicIds = ""
+ private var diseaseList = ""
+ private var birthDay = ""
+ private var birthdayType = -1
+ private var type = 0//0:蓝牙设备 默认 1:4G设备
+ private var watchName = ""
+
+ override fun initData() {
+ super.initData()
+ isDarkBar = true
+ isLogin = intent.getBooleanExtra("isLogin", false)
+ intent.extras?.let {
+ headerPath = getIntentStringData(it, "headerPath")
+ name = getIntentStringData(it, "name")
+ sexType = getIntentStringData(it, "sexType")
+ idCard = getIntentStringData(it, "idCard")
+ height = getIntentStringData(it, "height")
+ wieght = getIntentStringData(it, "wieght")
+ address = getIntentStringData(it, "address")
+ otherName = getIntentStringData(it, "otherName")
+ otherPhone = getIntentStringData(it, "otherPhone")
+ rela = getIntentStringData(it, "rela")
+ provincey = getIntentStringData(it, "provincey")
+ city = getIntentStringData(it, "city")
+ district = getIntentStringData(it, "district")
+
+ lat = getIntentStringData(it, "lat")
+ lng = getIntentStringData(it, "lng")
+ medicName = getIntentStringData(it, "medicName")
+
+ medicIds = getIntentStringData(it, "medicIds")
+ diseaseList = getIntentStringData(it, "diseaseList")
+ birthDay = getIntentStringData(it, "birthDay")
+
+ birthdayType = it.getInt("birthdayType", -1)
+ type = it.getInt("type", 0)
+ }
+
+ }
+
+ private fun getIntentStringData(it: Bundle, key: String): String {
+ return if (it.getString(key).isNullOrEmpty()) "" else it.getString(key).toString()
+ }
+
+ override fun initView() {
+ super.initView()
+ statusBar(binding.title.mView)
+ binding.title.mTvTitle.text = getString(R.string.active_action)
+ binding.title.mIvBack.setOnClickListener {
+ if (isLogin) { //如果是走注册流程过来的,退出该界面,则进入主界面
+ RouteManager.goAct(ARouterUrl.MAIN_ACT)
+ RxActivityTool.finishAllActivity()
+ } else {
+ /* EventBus.getDefault().post(BindDevEvent())
+ CommonToastUtils.showToast("绑定成功")*/
+ finish()
+ }
+ }
+
+ binding.mSign.setOnClickListener {//签名信息填写
+ dialog.show()
+ }
+
+ binding.mSubmit.setOnClickListener {
+ submitData()
+ }
+
+ if (type == 0) {//是蓝牙设备
+ factorySettingDialog.isShow()
+
+ binding.mBlueTooth.setOnClickListener {//蓝牙设备搜索绑定
+ RxKeyboardTool.hideSoftInput(this)
+ bundle.clear()
+ bundle.putString("devMac", if (it.tag == null) "" else it.tag.toString())
+ bundle.putString("devName", (it as TextView).text.toString())
+ RouteManager.goAct(ARouterUrl.DEVICE_CONNECT, bundle)
+ }
+ binding.mDeviceLayout.visibility = View.VISIBLE
+ if (YCBBlueConnectHelper.getBlueStatus(false)) {//如果当前已经连接手表
+ binding.mBlueTooth.text = Const.connectBlueDevice.deviceName
+ binding.mBlueTooth.tag = Const.connectBlueDevice.deviceMac
+ }
+ } else {//4G设备
+ binding.mDeviceLayout.visibility = View.GONE
+ binding.title.mIvReight.apply {
+ visibility = View.VISIBLE
+ setImageResource(com.zj365.health.R.mipmap.ic_scan)
+ setOnClickListener {
+ startScan()
+ }
+ }
+ }
+ setPrive()
+ }
+
+ private val reqGpsPermissionDialog by lazy {
+ NoticeSettingDialog(this, "请打开GPS权限", {
+ finish()
+ }) {
+ // 转到手机设置界面,用户设置GPS
+ var intent = Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)
+ startActivityForResult(intent, 1001); // 设置完成后返回到原来的界面
+ }
+ }
+
+
+ private fun requestGPSPermission() {
+ reqGpsPermissionDialog.show()
+ }
+
+// /**
+// * 检测拍摄权限
+// */
+// private fun checkCameraPermissions() {
+// val permission = arrayOf(Manifest.permission.CAMERA)
+// Acp.getInstance(this).request(
+// AcpOptions.Builder()
+// .setPermissions(
+// *permission
+// ).build(),
+// object : AcpListener {
+// override fun onGranted() {
+//
+// }
+//
+// override fun onDenied(permissions: List) {
+// finish()
+// }
+// })
+// }
+
+ /**
+ * 扫码
+ */
+ private fun startScan() {
+ PermissionUtils.requestPermission(this,
+ {
+ XQRCodeAct.start(
+ this@DeviceActiveAct,
+ XQRCodeAct.QRCODE_AGREEMENT,
+ com.zj365.health.R.style.XQRCodeTheme_Custom
+ )
+ }, Permission.CAMERA)
+
+ }
+
+ /**
+ * 隐私协议
+ */
+ private fun setPrive() {
+ binding.mPrivate.setOnClickListener {
+ if (!isAgree) {
+ forwardPrivate()
+ return@setOnClickListener
+ }
+ it.isSelected = !it.isSelected
+ }
+ binding.mPrivate.movementMethod = MyLinkedMovementMethod().getInstance()
+ var span = SpannableString(getString(R.string.agree_private_active))
+ span.setSpan(object : ClickableSpan() {
+ override fun onClick(widget: View) {
+ forwardPrivate()
+ }
+
+ override fun updateDrawState(ds: TextPaint) {
+ super.updateDrawState(ds)
+ ds.color =
+ ContextCompat.getColor(this@DeviceActiveAct, R.color.col_02c)
+ ds.isUnderlineText = false
+ }
+
+ }, 2, 8, Spanned.SPAN_INCLUSIVE_INCLUSIVE)
+ binding.mPrivate.text = span
+ binding.mPrivate.highlightColor = Color.TRANSPARENT
+ }
+
+ /**
+ * 跳转至隐私协议页面
+ */
+ private fun forwardPrivate() {
+ bundle.clear()
+ bundle.putString("title", "服务协议")
+ bundle.putInt("type", Const.AGREEMENT_6)
+ RouteManager.goActRequest(
+ ARouterUrl.RICH_TEXT,
+ this@DeviceActiveAct,
+ SERVER_AGREEMENT,
+ bundle
+ )
+ }
+
+
+ private fun submitData() {
+ RxKeyboardTool.hideSoftInput(this)
+ if (!isAgree) {
+ CommonToastUtils.showToast(R.string.please_agree_server)
+ return
+ }
+
+ if (type == 0 && binding.mBlueTooth.text.isNullOrEmpty()) {
+ CommonToastUtils.showToast(R.string.please_input_device_code)
+ return
+ }
+
+ if (signPath.isNullOrEmpty()) {
+ CommonToastUtils.showToast("请完善签名")
+ return
+ }
+
+ if (binding.mDevNum.text.isNullOrEmpty()) {
+ CommonToastUtils.showToast(R.string.please_input_device_code)
+ return
+ }
+
+ if (binding.mActiveCode.text.isNullOrEmpty()) {
+ CommonToastUtils.showToast(R.string.please_input_active_code)
+ return
+ }
+
+ var devMc = if (type == 0) {
+ if (binding.mBlueTooth.tag == null) "" else binding.mBlueTooth.tag as String
+ } else {//4G直接传设备号
+ binding.mDevNum.text.toString()
+ }
+
+ var devName = if (type == 0) {
+ binding.mBlueTooth.text.toString()
+ } else {
+ if (watchName.isNullOrEmpty()) {
+ if (devMc.startsWith("818") && devMc.length > 6) {
+ "A3-${devMc.substring(devMc.length - 7)}"
+ } else {
+ "4G-$devMc"
+ }
+ } else {
+ watchName
+ }
+ }
+
+ if (otherPhone.isNullOrEmpty() || height.isNullOrEmpty() || wieght.isNullOrEmpty() || otherName.isNullOrEmpty()) {
+ mViewModel.activeDevice(
+ signPath,
+ binding.mDevNum.text.toString(),
+ binding.mActiveCode.text.toString(),
+ devMc,
+ devName
+ )
+ } else {
+ mViewModel.submit(
+ headerPath,
+ name,
+ sexType,
+ idCard,
+ height,
+ wieght,
+ address,
+ otherName,
+ otherPhone,
+ rela,
+ provincey,
+ city,
+ district,
+ lat,
+ lng,
+ medicName,
+ medicIds,
+ signPath,
+ binding.mDevNum.text.toString(),
+ binding.mActiveCode.text.toString(),
+ devMc,
+ devName,
+ diseaseList,
+ birthDay,
+ birthdayType
+ )
+ }
+ }
+
+ /**
+ * 设置扫码信息
+ */
+ private fun setScanInfo(scanInfo: ScanInfoBean) {
+ binding.mDevNum.setText(scanInfo.deviceCode)
+ binding.mActiveCode.setText(scanInfo.activationCode)
+ watchName = scanInfo.watchName
+ }
+
+
+ override fun onRestart() {
+ super.onRestart()
+ if (type == 0) {//是蓝牙设备
+ factorySettingDialog.isShow()
+ }
+ }
+
+ override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
+ super.onActivityResult(requestCode, resultCode, data)
+ if (resultCode === RESULT_OK) {
+ when (requestCode) {
+ SERVER_AGREEMENT -> {
+ isAgree = true
+ binding.mPrivate.isSelected = isAgree
+ }
+
+ XQRCodeAct.QRCODE_AGREEMENT -> {
+ when (data!!.getIntExtra(XQRCode.RESULT_TYPE, 0)) {
+ XQRCode.RESULT_SUCCESS -> {
+ try {
+ val result = data.extras!!.getString(XQRCode.RESULT_DATA)
+ LogUtils.d("扫描结果:$result")
+ if (!result.isNullOrEmpty()) {
+ val gson = Gson()
+ setScanInfo(gson.fromJson(result, ScanInfoBean::class.java))
+ } else {
+ CommonToastUtils.showToast("扫码失败,请重试...")
+ }
+ } catch (e: Exception) {
+ LogUtils.e("二维码扫描:$e")
+ CommonToastUtils.showToast("请确认二维码是否正确!")
+ }
+ }
+
+ XQRCode.RESULT_FAILED -> {
+ LogUtils.d("扫描失败")
+ }
+ }
+ }
+ }
+ }
+ }
+
+
+ @Subscribe(threadMode = ThreadMode.MAIN)
+ fun bloothConnect(event: BluetoothEvent) {
+ binding.mBlueTooth.text = event.devName
+ binding.mBlueTooth.tag = event.devMac
+ }
+
+ private var isActiveSuccess = false
+// private val dialogWear by lazy {
+// WearDialog(this) {
+// RouteManager.goAct(ARouterUrl.MAIN_ACT)
+// finish()
+// }
+// }
+
+ override fun liveObserver() {
+ mViewModel.activeLive.observe(this) {
+ activeSuccess()
+ }
+ mViewModel.setBasic.observe(this) {
+ activeSuccess()
+ }
+// mViewModel.prevLive.observe(this) {
+// dialogWear.showContent(it.data.content)
+// }
+ }
+
+ private fun activeSuccess() {
+ isActiveSuccess = true
+ CommonToastUtils.showSucceedToast("设备激活成功")
+ LogUtils.d("设备激活成功")
+ MMkvHelper.put(Const.Watch_Device_Type, type)
+ if (type == 0) {
+ YCBManager.deleteHistory(YCBOrder.DELETE_LocalALL)
+ EventBus.getDefault().post(BlueToothConnectEvent())
+ }
+ EventBus.getDefault().post(MyInfoEvent())
+ EventBus.getDefault().post(BindDevEvent())
+ // CommonToastUtils.showToast("绑定成功")
+ finish()
+ /* if (CommonUtils.getMyUserInfo() == null) {
+ bundle.clear()
+ bundle.putInt("isBind", 0)
+ RouteManager.goAct(ARouterUrl.BASE_INFO_CHANGE, bundle)
+ finish()
+ }
+ CommonUtils.getMyUserInfo()?.let { bean ->
+ if (bean.urgentPhone.isNullOrEmpty()) {//如果紧急联系人电话并且签名为空则认为没有完善信息
+ bundle.clear()
+ bundle.putInt("isBind", 0)
+ RouteManager.goAct(ARouterUrl.BASE_INFO_CHANGE, bundle)
+ finish()
+ } else {
+ RouteManager.goAct(ARouterUrl.MAIN_ACT)
+ finish()
+ }
+ }*/
+// mViewModel.getPrev(7)
+ }
+
+ override fun onDestroy() {
+ AmapInit.stopLocation()
+ if (!isActiveSuccess && type == 0) {
+ YCBBlueConnectHelper.disconnect()
+ }
+ super.onDestroy()
+ }
+
+ override fun onBackPressed() {
+ if (isLogin) { //如果是走注册流程过来的,退出该界面,则进入主界面
+ RouteManager.goAct(ARouterUrl.MAIN_ACT)
+ RxActivityTool.finishAllActivity()
+ } else {
+ super.onBackPressed()
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/zj365/dc/activity/DeviceChoiceAct.kt b/app/src/main/java/com/zj365/dc/activity/DeviceChoiceAct.kt
index 2165794..44c357d 100644
--- a/app/src/main/java/com/zj365/dc/activity/DeviceChoiceAct.kt
+++ b/app/src/main/java/com/zj365/dc/activity/DeviceChoiceAct.kt
@@ -68,10 +68,19 @@ class DeviceChoiceAct : BaseVmAct() {
val device = adapter.data[position] as DeviceBean
val type = device.watchType
if (type != 0) {
- bundle.clear()
- bundle.putInt("type", type)
- bundle.putBoolean("isLogin", isLogin)
- RouteManager.goAct(ARouterUrl.DEVICE_ACTIVE, bundle)
+ if(device.bindType == 1){
+ bundle.clear()
+ bundle.putInt("type", type)
+ bundle.putBoolean("isLogin", isLogin)
+ RouteManager.goAct(ARouterUrl.ONE_KEY_DEVICE_ACTIVE, bundle)
+ }else{
+ bundle.clear()
+ bundle.putInt("type", type)
+ bundle.putBoolean("isLogin", isLogin)
+ RouteManager.goAct(ARouterUrl.DEVICE_ACTIVE, bundle)
+
+ }
+
} else {
if (!checkBlueConnectPermission(this)) {
FactorySettingDialog(this, "蓝牙手表需要访问位置、蓝牙权限。") {
diff --git a/app/src/main/java/com/zj365/dc/activity/MainActivity.kt b/app/src/main/java/com/zj365/dc/activity/MainActivity.kt
index 54afd70..8680cb7 100644
--- a/app/src/main/java/com/zj365/dc/activity/MainActivity.kt
+++ b/app/src/main/java/com/zj365/dc/activity/MainActivity.kt
@@ -7,6 +7,7 @@ import android.content.Intent
import android.content.IntentFilter
import android.net.Uri
import android.os.Build
+import android.text.TextUtils
import android.util.Log
import android.view.LayoutInflater
import android.view.View
@@ -152,7 +153,20 @@ class MainActivity : BaseVmAct(), Consumer {
""
} else {
MMkvHelper.getLong(Const.USER_ID).toString()
+
+
+ }
+
+ if(!TextUtils.isEmpty(userId)){
+ // if (BuildConfig.isRelease) {//设置极光推送别名
+ JPushInterface.setAlias(
+ this,
+ MMkvHelper.getLong(Const.USER_ID).toInt(),
+ "user_release_${MMkvHelper.getLong(Const.USER_ID)}"
+ )
+ // }
}
+
mViewModel.getUserEquipmentInformationizationRequest(userId)
mViewModel.getBanners(userId,3)
mViewModel.getIsDemonstate()
diff --git a/app/src/main/java/com/zj365/dc/activity/OneKeyBinderDeviceAct.kt b/app/src/main/java/com/zj365/dc/activity/OneKeyBinderDeviceAct.kt
index a8ff655..4597ea8 100644
--- a/app/src/main/java/com/zj365/dc/activity/OneKeyBinderDeviceAct.kt
+++ b/app/src/main/java/com/zj365/dc/activity/OneKeyBinderDeviceAct.kt
@@ -20,7 +20,7 @@ import com.zj365.dc.vm.OneKeyBinderDeviceVm
import com.zj365.health.R
import org.greenrobot.eventbus.EventBus
-@Route(path = ARouterUrl.DEVICE_ACTIVE)
+@Route(path = ARouterUrl.ONE_KEY_DEVICE_ACTIVE)
class OneKeyBinderDeviceAct : BaseVmAct() {
val binding by lazy { ActBinderDeviceOneKeyBinding.inflate(layoutInflater) }
diff --git a/app/src/main/java/com/zj365/dc/activity/WelcomeAct.kt b/app/src/main/java/com/zj365/dc/activity/WelcomeAct.kt
index 708c535..6a00ebd 100644
--- a/app/src/main/java/com/zj365/dc/activity/WelcomeAct.kt
+++ b/app/src/main/java/com/zj365/dc/activity/WelcomeAct.kt
@@ -231,7 +231,7 @@ class WelcomeAct : BaseVmAct() {
Log.i("terry", "useId:$userId")
JPushInterface.setAlias(this,userId.toInt(),"user_release_${userId}")
}
- JPushHelper(this).stopOrResumeJPush(MMkvHelper.getBoolean(Const.NOTICE_FLAG))
+ // JPushHelper(this).stopOrResumeJPush(MMkvHelper.getBoolean(Const.NOTICE_FLAG))
}
diff --git a/app/src/main/java/com/zj365/dc/fragment/DynamicManagementFrag.kt b/app/src/main/java/com/zj365/dc/fragment/DynamicManagementFrag.kt
index 9da8f75..ea78f59 100644
--- a/app/src/main/java/com/zj365/dc/fragment/DynamicManagementFrag.kt
+++ b/app/src/main/java/com/zj365/dc/fragment/DynamicManagementFrag.kt
@@ -57,6 +57,7 @@ import com.xty.common.work.MyWorkManger
import com.xty.common.xqr_code.XQRCodeAct
import com.zj365.mime.weight.NoticeSettingDialog
import com.xty.network.MyRetrofit
+import com.xty.network.model.DeviceFunctionBean
import com.xty.network.model.FamilyBean
import com.xty.network.model.HealthMonitoringListBean
import com.xty.network.model.MainBean
@@ -140,6 +141,7 @@ class DynamicManagementFrag : BaseVmFrag(){
private var tenJob: Job? = null
private val tenLive by lazy { MutableLiveData() }
private var isShrinkage = false//记录是否收缩
+ private var functionList= ArrayList()
/**
* -1:步数 0:心率 1:血氧 2:呼吸率 3:体温 4:睡眠 5:血压 6:血糖 7:心电|血脂
@@ -182,17 +184,18 @@ class DynamicManagementFrag : BaseVmFrag(){
binding.mGriddingList.mGridView.adapter = mHealthAdapter
binding.mGriddingList.mGridView.setOnItemClickListener { _, _, position, _ ->
val index = mHealthAdapter.getItem(position).type
+ val functionType = mHealthAdapter.getItem(position).functionType
onEventObject(requireContext(), UmengEventId.HealthMonitor, pageNames[index])
- when (pageIndexs[index]) {
+ when (functionType) {
//( )0.心率、1.血氧、2.呼吸率、3.体温、4.步数、5.睡眠、6.血压、7.血糖、8.心电、9.尿酸、10.血脂。
//(U32)0.心率、1.血氧、2.呼吸率、3.体温、 、4.睡眠、5.血压、6.血糖、7.尿酸、8.心电,9血脂
//(A3 )0.心率、1.血氧、2.呼吸率、3.体温、 、4.睡眠、5.血压、6.血糖、7.尿酸,8.血脂
//(x1 )0.心率、1.血氧、2.呼吸率、 、3.睡眠、4.血压、5.血糖、6.尿酸,7.血脂
- 0, 1, 2, 3 -> {
- goPage(index)
+ "hr", "so", "resp", "temp" -> {
+ goPage(index,functionType)
}
- 4 -> {//步数
+ "step" -> {//步数
if (isDemonstrate) {
return@setOnItemClickListener
}
@@ -201,7 +204,7 @@ class DynamicManagementFrag : BaseVmFrag(){
bundle.putInt("status", data.adorn.health + 1)
bundle.putInt("type", 1)
if (showIdInfo.isEmpty()) {
- bundle.putString("userId", CommonUtils.getMyUserId())
+ bundle.putString("userId", MMkvHelper.getLong(Const.USER_ID).toString())
} else showIdInfo.let {
bundle.putString("userId", it)
}
@@ -209,85 +212,30 @@ class DynamicManagementFrag : BaseVmFrag(){
}
}
- 5 -> {
- val deviceType = MMkvHelper.getString(Const.DEVICE_TYPE)
- /*if (deviceType == "U32" || deviceType == "A3") {
- goPage(index - 1)
- } else {
+ "sleep" -> {
+ goPage(index - 1,functionType)
- }*/
- goPage(index - 1)
- /*if (deviceType == "X1" || deviceType == "X2") {
- goPage(index - 2)
- } else {
- goPage(index - 1)
- }*/
}
- 6 -> {
- val deviceType = MMkvHelper.getString(Const.DEVICE_TYPE)
- /*if (deviceType == "X1" || deviceType == "X2") {
- goPage(4)
- } else {*/
- goPage(index - 1)
- // }
+ "dbp" -> {
+ goPage(index - 1,functionType)
}
- 9 -> { //心电隐藏的前提下,尿酸为8 否则为9
- val deviceType = MMkvHelper.getString(Const.DEVICE_TYPE)
- /* if (deviceType == "X1" || deviceType == "X2") {
- goPage(6)
- } else {*/
- goPage(7)
- // }
+ "uric" -> { //心电隐藏的前提下,尿酸为8 否则为9
+ goPage(7,functionType)
}
- 7 -> { //血糖
- val deviceType = MMkvHelper.getString(Const.DEVICE_TYPE)
- /*if (deviceType == "X1" || deviceType == "X2") {
- goPage(5)
- } else {*/
- goPage(index - 1)
- // }
- }
+ "sugar" -> { //血糖
+ goPage(index - 1,functionType)
- 10 -> { // //心电隐藏的前提下血脂为9 否则为10
+ }
+ "bloodFat" -> { // //心电隐藏的前提下血脂为9 否则为10
CommonToastUtils.showToast("尊敬的用户您好,血脂功能暂未开放,敬请期待哦~")
- /*when (MMkvHelper.getString(Const.DEVICE_TYPE)) {
- "X1", "X2" -> {
- goPage(7)
- }
- "U32","" -> {
- goPage(9)
- }
- "A3" -> {
- goPage(8)
- }
- else -> {
- goPage(7)
- }
- }*/
-
}
-
- /*8 -> {//心电 暂时隐藏 尿酸就改成8
-// if (MMkvHelper.getInt(Const.Watch_Device_Type) == -1) { //演示模式
-// showToast("尊敬的用户您好,心电功能暂未开放,敬请期待哦~")
-// } else
- if (MMkvHelper.getInt(Const.Watch_Device_Type) == Const.Companion.WatchDevice.LightA3.ordinal) {//4G手表
- CommonToastUtils.showToast("尊敬的用户您好,心电功能暂未开放,敬请期待哦~")
- } else {
- goPage(8)
-// if (showIdInfo.isEmpty()) {
-// goPage(8)
-// } else {
-// bundle.clear()
-// bundle.putString("id", showIdInfo)
-// RouteManager.goAct(ARouterUrl.XD_HISTORY, bundle)
-// }
- }
- }*/
+ "ecg" ->{ //心电 暂时隐藏
+ CommonToastUtils.showToast("尊敬的用户您好,心电功能暂未开放,敬请期待哦~")
+ }
}
}
}
@@ -346,7 +294,7 @@ class DynamicManagementFrag : BaseVmFrag(){
}
//健康监测
R.id.mSub -> {
- goPage(0)
+ goPage(0,"")
}
//健康对比
R.id.ll_compare -> {
@@ -391,6 +339,8 @@ class DynamicManagementFrag : BaseVmFrag(){
bundle.putBoolean("isDemonstrate", isDemonstrate)
bundle.putInt("pageType", 0)
bundle.putString("titleName", "日报")
+ bundle.putParcelableArrayList("functionList",functionList)
+
RouteManager.goAct(ARouterUrl.HEALTH_SKY_HOUR_REPORT, bundle)
}
//周报
@@ -401,6 +351,7 @@ class DynamicManagementFrag : BaseVmFrag(){
bundle.putSerializable("index", ReportVm.ReportInfoType.Week)
bundle.putBoolean("isDemonstrate", isDemonstrate)
bundle.putString("titleName", "周报")
+ bundle.putParcelableArrayList("functionList",functionList)
RouteManager.goAct(ARouterUrl.HEALTH_WEEK_MONTH_HOUR_REPORT, bundle)
}
@@ -412,6 +363,8 @@ class DynamicManagementFrag : BaseVmFrag(){
bundle.putSerializable("index", ReportVm.ReportInfoType.Month)
bundle.putBoolean("isDemonstrate", isDemonstrate)
bundle.putString("titleName", "月报")
+ bundle.putParcelableArrayList("functionList",functionList)
+
RouteManager.goAct(ARouterUrl.HEALTH_WEEK_MONTH_HOUR_REPORT, bundle)
}
//年报
@@ -422,6 +375,8 @@ class DynamicManagementFrag : BaseVmFrag(){
bundle.putSerializable("index", ReportVm.ReportInfoType.Year)
bundle.putBoolean("isDemonstrate", isDemonstrate)
bundle.putString("titleName", "年报")
+ bundle.putParcelableArrayList("functionList",functionList)
+
RouteManager.goAct(ARouterUrl.HEALTH_WEEK_MONTH_HOUR_REPORT, bundle)
}
//24小时健康评估
@@ -432,6 +387,7 @@ class DynamicManagementFrag : BaseVmFrag(){
bundle.putString("titleName", "24小时健康评估")
bundle.putBoolean("isDemonstrate", isDemonstrate)
bundle.putBoolean("isEstimate", true)
+ bundle.putParcelableArrayList("functionList",functionList)
RouteManager.goAct(ARouterUrl.HEALTH_SKY_HOUR_REPORT, bundle)
}
//近7天健康评估
@@ -443,6 +399,7 @@ class DynamicManagementFrag : BaseVmFrag(){
bundle.putString("titleName", "近7天健康评估")
bundle.putBoolean("isNearMouth", false)
bundle.putBoolean("isEstimate", true)
+ bundle.putParcelableArrayList("functionList",functionList)
RouteManager.goAct(ARouterUrl.HEALTH_WEEK_MONTH_HOUR_REPORT, bundle)
}
//近30天健康评估
@@ -454,17 +411,22 @@ class DynamicManagementFrag : BaseVmFrag(){
bundle.putString("titleName", "近30天健康评估")
bundle.putBoolean("isNearMouth", true)
bundle.putBoolean("isEstimate", true)
+ bundle.putParcelableArrayList("functionList",functionList)
RouteManager.goAct(ARouterUrl.HEALTH_WEEK_MONTH_HOUR_REPORT, bundle)
}
}
}
//界面跳转
- private fun goPage(page: Int) {
+ private fun goPage(page: Int,functionType:String) {
if (isBind()) {
bundle.clear()
bundle.putInt("page", page)
bundle.putBoolean("isDemonstrate", isDemonstrate)
+ if(functionList.size > 0){
+ bundle.putParcelableArrayList("functionList",functionList)
+ }
+ bundle.putString("functionType",functionType)
if (!TextUtils.isEmpty(showIdInfo)) {
bundle.putString("id", showIdInfo)
bundle.putString("sex", sex)
@@ -759,6 +721,16 @@ class DynamicManagementFrag : BaseVmFrag(){
}
}
+ mViewModel.functionLiveData.observe(this){
+ LogUtils.e("DynamicManagementFrag","functionList:${it.data.size}")
+ functionList.addAll(it.data)
+ if (showIdInfo ==MMkvHelper.getLong(Const.USER_ID).toString()) {
+ Const.functionListDate.value = functionList
+ }
+
+
+ }
+
//获取首页所有信息返回
mViewModel.allData.observe(this) {
it.data.let { bean ->
@@ -774,7 +746,7 @@ class DynamicManagementFrag : BaseVmFrag(){
}
- if (showIdInfo == CommonUtils.getMyUserId()) { //自己
+ if (showIdInfo ==MMkvHelper.getLong(Const.USER_ID).toString()) { //自己
Const.otherLiveData.value = bean
}
Const.battery = bean.power
@@ -808,7 +780,7 @@ class DynamicManagementFrag : BaseVmFrag(){
} else if (Const.Companion.WatchDevice.LightA3.ordinal == bean.watchType) {//如果是4G设备,设置连接状态与电量信息
} else {*/
- if (showIdInfo ==CommonUtils.getMyUserId()) { //自己
+ if (showIdInfo == MMkvHelper.getLong(Const.USER_ID).toString()) { //自己
val localBlueMac = MMkvHelper.getString(Const.Blue_Tooth)
if (YCBBlueConnectHelper.getBleNowStatus() == YCBBlueConnectHelper.BLEConnectState.DisConnect) {//如果本地有蓝牙信息且属于未连接状态,则直接连接
LogUtils.d("startConnect::${localBlueMac}")
@@ -832,9 +804,13 @@ class DynamicManagementFrag : BaseVmFrag(){
healthMonitoringList.clear()
healthMonitoringListExceed.clear()
mHealthAdapter.mainBean.clear()
+
+ LogUtils.e("DynamicManagementFrag","11111111")
+
val healthMonitoringListData = mViewModel.setHealthMonitoringListData(
requireContext(),
- bean
+ bean,
+ mViewModel.functionLiveData.value?.data
)
val deviceType = bean.deviceType
if (TextUtils.isEmpty(deviceType)) {
@@ -903,7 +879,7 @@ class DynamicManagementFrag : BaseVmFrag(){
binding.mHeader.mBtnBind.visibility = View.GONE
binding.mHeader.mLayoutResult.visibility = View.VISIBLE
} else { //没有绑定手表
- if (/*mFamilyAdapter.position == 0 &&*/ it.data.user?.id.toString() == CommonUtils.getMyUserId()) { //是自己,显示绑定手表
+ if (/*mFamilyAdapter.position == 0 &&*/ it.data.user?.id.toString() == MMkvHelper.getLong(Const.USER_ID).toString()) { //是自己,显示绑定手表
binding.mHeader.mBtnBind.visibility = View.VISIBLE
binding.mHeader.mLayoutResult.visibility = View.GONE
} else { //不是自己隐藏数据
@@ -1026,7 +1002,7 @@ class DynamicManagementFrag : BaseVmFrag(){
return@observe
}
- if ((!showIdInfo.isNullOrEmpty() && showIdInfo != CommonUtils.getMyUserId())) {//不是当前用户
+ if ((!showIdInfo.isNullOrEmpty() && showIdInfo !=MMkvHelper.getLong(Const.USER_ID).toString())) {//不是当前用户
LogUtils.d("当前用户与showIdInfo不匹配!")
return@observe
}
@@ -1538,6 +1514,16 @@ class DynamicManagementFrag : BaseVmFrag(){
MMkvHelper.getLong(Const.USER_ID).toString()
}
+ if(!TextUtils.isEmpty(showIdInfo)){
+ // if (BuildConfig.isRelease) {//设置极光推送别名
+ JPushInterface.setAlias(
+ requireContext(),
+ MMkvHelper.getLong(Const.USER_ID).toInt(),
+ "user_release_${MMkvHelper.getLong(Const.USER_ID)}"
+ )
+ // }
+ }
+
getXtInfo(showIdInfo)
get24HourReportInfo(showIdInfo)
request()
diff --git a/app/src/main/java/com/zj365/dc/fragment/HealthHomeFrag.kt b/app/src/main/java/com/zj365/dc/fragment/HealthHomeFrag.kt
index 141d6cc..82c4b25 100644
--- a/app/src/main/java/com/zj365/dc/fragment/HealthHomeFrag.kt
+++ b/app/src/main/java/com/zj365/dc/fragment/HealthHomeFrag.kt
@@ -148,7 +148,7 @@ HealthHomeFrag : BaseVmFrag() {
val req = WXLaunchMiniProgram.Req()
req.userName = bannerBean.wxId// 填小程序原始id
- // req.path = it ////拉起小程序页面的可带参路径,不填默认拉起小程序首页,对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar"。
+ req.path = bannerBean.linkAddress ////拉起小程序页面的可带参路径,不填默认拉起小程序首页,对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar"。
if(bannerBean.wxType == 3){
req.miniprogramType =
@@ -205,7 +205,7 @@ HealthHomeFrag : BaseVmFrag() {
val req = WXLaunchMiniProgram.Req()
req.userName = bannerBean.wxId // 填小程序原始id
- //req.path = it ////拉起小程序页面的可带参路径,不填默认拉起小程序首页,对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar"。
+ req.path = bannerBean.linkAddress ////拉起小程序页面的可带参路径,不填默认拉起小程序首页,对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar"。
if(bannerBean.wxType == 3){
req.miniprogramType =
@@ -281,7 +281,7 @@ HealthHomeFrag : BaseVmFrag() {
val req = WXLaunchMiniProgram.Req()
req.userName = contentData.wxId // 填小程序原始id
- // req.path = it ////拉起小程序页面的可带参路径,不填默认拉起小程序首页,对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar"。
+ req.path = contentData.jumpUrl ////拉起小程序页面的可带参路径,不填默认拉起小程序首页,对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar"。
if(contentData.wxType == 3){
req.miniprogramType =
@@ -374,7 +374,7 @@ HealthHomeFrag : BaseVmFrag() {
val req = WXLaunchMiniProgram.Req()
req.userName = contentData.wxId // 填小程序原始id
- //req.path = it ////拉起小程序页面的可带参路径,不填默认拉起小程序首页,对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar"。
+ req.path = contentData.jumpUrl ////拉起小程序页面的可带参路径,不填默认拉起小程序首页,对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar"。
if(contentData.wxType == 3){
req.miniprogramType =
WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE // 可选打开 开发版,体验版和正式版
diff --git a/app/src/main/java/com/zj365/dc/fragment/MineFrag.kt b/app/src/main/java/com/zj365/dc/fragment/MineFrag.kt
index ca8ea62..3f322ec 100644
--- a/app/src/main/java/com/zj365/dc/fragment/MineFrag.kt
+++ b/app/src/main/java/com/zj365/dc/fragment/MineFrag.kt
@@ -216,6 +216,12 @@ class MineFrag : BaseVmFrag() {
bundle.putInt("page", 0)
bundle.putBoolean("isDemonstrate", (requireActivity() as MainActivity).isDemonstrate)
+ Const.functionListDate.value?.let {
+ if(it.size > 0){
+ bundle.putParcelableArrayList("functionList",it)
+ }
+ }
+
val id = if (MMkvHelper.getLong(Const.USER_ID).toString() == "0") {
""
} else {
@@ -239,6 +245,11 @@ class MineFrag : BaseVmFrag() {
bundle.putBoolean("isDemonstrate", isDemonstrate)
bundle.putInt("pageType", 0)
bundle.putString("titleName", "日报")
+ Const.functionListDate.value?.let {
+ if(it.size > 0){
+ bundle.putParcelableArrayList("functionList",it)
+ }
+ }
RouteManager.goAct(ARouterUrl.HEALTH_SKY_HOUR_REPORT, bundle)
}
}
@@ -269,6 +280,12 @@ class MineFrag : BaseVmFrag() {
}else {
bundle.clear()
bundle.putString("id", user?.id)
+ Const.functionListDate.value?.let {
+ if(it.size > 0){
+ bundle.putParcelableArrayList("functionList",it)
+ }
+ }
+
RouteManager.goAct(ARouterUrl.COMPARE_PAGE_DATA_ACT, bundle)
}
}
diff --git a/app/src/main/java/com/zj365/dc/vm/BasicInfoVm.kt b/app/src/main/java/com/zj365/dc/vm/BasicInfoVm.kt
new file mode 100644
index 0000000..f3462b0
--- /dev/null
+++ b/app/src/main/java/com/zj365/dc/vm/BasicInfoVm.kt
@@ -0,0 +1,295 @@
+package com.zj365.dc.vm
+
+import androidx.lifecycle.MutableLiveData
+import com.xty.base.vm.BaseVm
+import com.xty.common.TimeUtils
+import com.xty.common.util.CommonToastUtils
+import com.xty.network.model.ImageUploadBean
+import com.xty.network.model.NotAccepted
+import com.xty.network.model.PrevBean
+import com.xty.network.model.RespBody
+import com.zj365.dc.R
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.async
+import kotlinx.coroutines.withContext
+import okhttp3.MultipartBody
+import org.json.JSONArray
+import org.json.JSONObject
+import java.io.File
+
+class BasicInfoVm : BaseVm() {
+
+ val setBasic by lazy {MutableLiveData()}
+ val prevLive by lazy{MutableLiveData>()}
+ val activeLive by lazy {MutableLiveData()}
+
+ fun submit(path: String,name:String,sex:String, icCard:String,height:String,weight:String,area:String,urgent:String,urgentPhone:String,urgentRelation:String
+ ,province:String,city:String,district:String,lat:String,lng:String,medicNames:String,medicIds:String,signPath:String,devNum:String,code:String,devMc:String,devName:String,diseaseList:String,birthDay:String,birthdayType:Int) {
+
+// if(icCard.length!=18){
+// ToastUtils.show("请输入正确的身份证号")
+// return
+// }
+ if(height.isNullOrEmpty()){
+ CommonToastUtils.showToast("请输入身高")
+ return
+ }
+
+ if (height.toFloat() < 50 || height.toFloat() > 260){
+ CommonToastUtils.showToast("请输入正确身高")
+ return
+ }
+
+ if(weight.isNullOrEmpty()){
+ CommonToastUtils.showToast("请输入体重")
+ return
+ }
+
+ if(weight.toFloat() < 3 || weight.toFloat() > 300){
+ CommonToastUtils.showToast("请输入正确体重")
+ return
+ }
+
+ if (TimeUtils.getAgeByBirth(birthDay) < 14){
+ CommonToastUtils.showToast("需要年满14岁才可使用")
+ return
+ }
+
+ if(area.isNullOrEmpty()){
+ CommonToastUtils.showToast("请输入家庭住址")
+ return
+ }
+
+ if(medicIds.isNullOrEmpty()){
+ CommonToastUtils.showToast("请选择病史")
+ return
+ }
+
+
+ if(urgent.isNullOrEmpty()){
+ CommonToastUtils.showToast("请输入紧急联系人姓名")
+ return
+ }
+
+
+ if(urgentPhone.isNullOrEmpty()){
+ CommonToastUtils.showToast("请输入紧急联系人联系方式")
+ return
+ }
+
+
+ if(urgentRelation.isNullOrEmpty()){
+ CommonToastUtils.showToast("请输入关系")
+ return
+ }
+
+ if(devMc.isNullOrEmpty()){
+ CommonToastUtils.showToast(R.string.please_connect_device)
+ return
+ }
+ if(devNum.isNullOrEmpty()){
+ CommonToastUtils.showToast(R.string.please_input_device_code)
+ return
+ }
+ if(code.isNullOrEmpty()){
+ CommonToastUtils.showToast(R.string.please_input_active_code)
+ return
+ }
+ if(signPath.isNullOrEmpty()){
+ CommonToastUtils.showToast("请完善签名")
+ return
+ }
+ startHttp {
+ withContext(Dispatchers.IO) {
+ var fileId:String?=null
+ if(!path.isNullOrEmpty()){
+ var image = async { uploadImage(path) }
+ val await = image.await()
+
+ fileId = await.fileId
+ }
+ var upload = async {uploadInfo(name,sex, icCard,height,weight,area,urgent,urgentPhone,urgentRelation,fileId,province,city,
+ district,lat,lng,medicNames,medicIds,diseaseList,birthDay,birthdayType) }
+
+ val infoUpload = upload.await() //个人信息上传
+ if(infoUpload.code==0){
+ var activeDev =async { active(signPath,devNum,code,devMc,devName) }
+ var signUpload=activeDev.await()
+ if(signUpload.code==0){
+ setBasic.postValue(infoUpload.data)
+ }else{
+ CommonToastUtils.showToast(signUpload.msg)
+ }
+ }else{
+ CommonToastUtils.showToast(infoUpload.msg)
+ }
+ }
+
+ }
+ }
+ fun submitNew(path: String,name:String,sex:String, icCard:String,height:String,weight:String,area:String,urgent:String,urgentPhone:String,urgentRelation:String
+ ,province:String,city:String,district:String,lat:String,lng:String,medicNames:String,medicIds:String ,diseaseList:String,birthDay:String,birthdayType:Int) {
+
+// if(icCard.length!=18){
+// ToastUtils.show("请输入正确的身份证号")
+// return
+// }
+ if(height.isNullOrEmpty()){
+ CommonToastUtils.showToast("请输入身高")
+ return
+ }
+
+ if (height.toFloat() < 50 || height.toFloat() > 260){
+ CommonToastUtils.showToast("请输入正确身高")
+ return
+ }
+
+ if(weight.isNullOrEmpty()){
+ CommonToastUtils.showToast("请输入体重")
+ return
+ }
+
+ if(weight.toFloat() < 3 || weight.toFloat() > 300){
+ CommonToastUtils.showToast("请输入正确体重")
+ return
+ }
+
+ if (TimeUtils.getAgeByBirth(birthDay) < 14){
+ CommonToastUtils.showToast("需要年满14岁才可使用")
+ return
+ }
+
+ if(area.isNullOrEmpty()){
+ CommonToastUtils.showToast("请输入家庭住址")
+ return
+ }
+
+ if(medicIds.isNullOrEmpty()){
+ CommonToastUtils.showToast("请选择病史")
+ return
+ }
+
+
+ if(urgent.isNullOrEmpty()){
+ CommonToastUtils.showToast("请输入紧急联系人姓名")
+ return
+ }
+
+
+ if(urgentPhone.isNullOrEmpty()){
+ CommonToastUtils.showToast("请输入紧急联系人联系方式")
+ return
+ }
+
+
+ if(urgentRelation.isNullOrEmpty()){
+ CommonToastUtils.showToast("请输入关系")
+ return
+ }
+
+ startHttp {
+ withContext(Dispatchers.IO) {
+ var fileId:String?=null
+ if(!path.isNullOrEmpty()){
+ var image = async { uploadImage(path) }
+ val await = image.await()
+
+ fileId = await.fileId
+ }
+ var upload = async {uploadInfo(name,sex, icCard,height,weight,area,urgent,urgentPhone,urgentRelation,fileId,province,city,
+ district,lat,lng,medicNames,medicIds,diseaseList,birthDay,birthdayType) }
+
+ val infoUpload = upload.await() //个人信息上传
+ if(infoUpload.code==0){
+ CommonToastUtils.showSucceedToast("提交成功")
+ setBasic.postValue(infoUpload.data)
+ }else{
+ CommonToastUtils.showToast(infoUpload.msg)
+ }
+ }
+
+ }
+ }
+
+ fun activeDevice(path:String,devNum:String,code:String,devMc:String,devName:String){
+ startHttp {
+ withContext(Dispatchers.IO){
+ var file= File(path)
+ var fileBody=MultipartBody.Part.createFormData("file",file.name,retrofits.getMultiPartFileRb(file))
+ var response= apiInterface().activite(fileBody,retrofits.getRequestBody(devNum.replace(" ", "")),retrofits.getRequestBody(code.replace(" ", "")),retrofits.getRequestBody(devMc),retrofits.getRequestBody(devName))
+ if (response.code == 0){
+ activeLive.postValue(response.data)
+ }else{
+ CommonToastUtils.showToast(response.msg)
+ }
+ }
+ }
+ }
+
+ /**
+ * 激活设备 签名文件上传
+ */
+ private suspend fun active(path:String,devNum:String,code:String,devMc:String,devName:String):RespBody{
+ var file= File(path)
+ var fileBody=MultipartBody.Part.createFormData("file",file.name,retrofits.getMultiPartFileRb(file))
+ var response= apiInterface().activite(fileBody,retrofits.getRequestBody(devNum.replace(" ", "")),retrofits.getRequestBody(code.replace(" ", "")),retrofits.getRequestBody(devMc),retrofits.getRequestBody(devName))
+ return response
+ }
+
+
+ private suspend fun uploadInfo(name:String,sex:String, icCard:String,height:String,weight:String,area:String,
+ urgent:String,urgentPhone:String,urgentRelation:String,
+ fileId:String?,province:String,city:String,district:String,lat:String,lng:String,medicNames:String,medicIds:String,diseaseList:String,birthDay:String,birthdayType:Int): RespBody {
+ var json=JSONObject()
+ json.put("name",name)
+ json.put("sex",sex)
+ json.put("idCard",icCard)
+ json.put("height",height)
+ json.put("weight",weight)
+ json.put("area",area)
+
+ json.put("medicalHistory",medicNames)
+ json.put("historyId",medicIds)
+ json.put("latitude",lat)
+ json.put("longitude",lng)
+ json.put("province",province)
+ json.put("city",city)
+ json.put("district",district)
+ json.put("birthday",birthDay)
+ json.put("birthdayType",birthdayType)
+ if(diseaseList.isEmpty()){
+ json.put("diseaseList","")
+ }else{
+ var array=JSONArray(diseaseList) //去掉转移的斜杠
+ json.put("diseaseList",array)
+ }
+
+ json.put("urgent",urgent)
+ json.put("urgentPhone",urgentPhone)
+ json.put("urgentRelation",urgentRelation)
+
+ if(!fileId.isNullOrEmpty()){
+ json.put("avatarUrl",fileId)
+ }
+ var rb=retrofits.getRequestBody(json.toString())
+ var body=apiInterface().setUpdateUser(rb)
+ return body
+ }
+
+ private suspend fun uploadImage(path: String): ImageUploadBean {
+ var f = File(path)
+ var fileRb =
+ MultipartBody.Part.createFormData("file", f.name, retrofits.getMultiPartFileRb(f))
+ var body = apiInterface().uploadImage(fileRb)
+ return body.data
+ }
+
+
+ //1:用户协议 2:管家协议 3:隐私协议 7:佩戴须知
+// fun getPrev(type:Int){
+// startHttp {
+// var response=apiInterface().getPrev(type)
+// response.getCodeStatus(prevLive,nowData)
+// }
+// }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/zj365/dc/vm/DynamicManagementVm.kt b/app/src/main/java/com/zj365/dc/vm/DynamicManagementVm.kt
index 9cd5caa..f5c37ce 100644
--- a/app/src/main/java/com/zj365/dc/vm/DynamicManagementVm.kt
+++ b/app/src/main/java/com/zj365/dc/vm/DynamicManagementVm.kt
@@ -14,6 +14,8 @@ import com.xty.common.Dateutils
import com.xty.common.MMkvHelper
import com.xty.common.TimeUtils
import com.xty.common.util.CommonUtils
+import com.xty.common.util.DeviceFunctionUtils
+import com.xty.network.model.DeviceFunctionBean
import com.xty.network.model.FamilyBean
import com.xty.network.model.HealthMonitoringListBean
import com.xty.network.model.MainBean
@@ -28,6 +30,9 @@ import com.xty.network.model.TipsBean
import com.xty.network.model.WeatherBean
import com.xty.network.model.XTangInfoBean
import com.zj365.dc.R
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.async
+import kotlinx.coroutines.withContext
import org.json.JSONArray
import org.json.JSONObject
import java.text.SimpleDateFormat
@@ -53,15 +58,26 @@ class DynamicManagementVm : BaseVm() {
val weatherLiveDate by lazy { MutableLiveData>() }
+ val functionLiveData by lazy { MutableLiveData>>() }
+
/**
* 获取所有信息
*/
fun getAllInfo(id: String, isShowDialog: Boolean) {
startHttp(isShowDialog) {
- val json = JSONObject()
- json.put("id", id)
- val body = apiInterface().getMainInfo(retrofits.getRequestBody(json.toString()))
- body.getCodeStatus(allData, nowData)
+ withContext(Dispatchers.IO){
+ val list = async { getDeviceFunctionLists(id) }.await()
+
+ if (list){
+ val allInfo = async {
+ val json = JSONObject()
+ json.put("id", id)
+ val body = apiInterface().getMainInfo(retrofits.getRequestBody(json.toString()))
+ body.getCodeStatus(allData, nowData)
+ }
+ }
+ }
+
}
}
@@ -257,14 +273,15 @@ class DynamicManagementVm : BaseVm() {
@SuppressLint("SimpleDateFormat")
fun setHealthMonitoringListData(
context: Context,
- bean: MainBean
+ bean: MainBean,
+ functionList:MutableList?
): MutableList {
val healthMonitoringList: MutableList = mutableListOf()
+
bean.apply {
- /*when (deviceType) {
- "U32", "" -> { //其他界面要用到是否为x1,x2的设备判断,这里坐下缓存*/
- MMkvHelper.put(Const.X1_X2_Device, false)
- //心率
+ MMkvHelper.put(Const.X1_X2_Device, false)
+ functionList?.forEach {
+ if (DeviceFunctionUtils.hasFunction(it,"hr")){ //心率
val statusXL = if (hrData.hr == 0) {
0
} else if (hrData.hrMessage.contains("正常")) {
@@ -283,11 +300,12 @@ class DynamicManagementVm : BaseVm() {
R.mipmap.bg_xl,
R.mipmap.ic_xl,
0,
+ it.type,
calorie = hrData.count
)
)
- //血氧
+ }else if (DeviceFunctionUtils.hasFunction(it,"so")){ //血氧
val statusXY = if (soData.so == 0) {
0
} else if (soData.soMessage.contains("正常")) {
@@ -306,11 +324,11 @@ class DynamicManagementVm : BaseVm() {
R.mipmap.bg_oo,
R.mipmap.ic_oo,
1,
+ it.type,
calorie = soData.count
)
)
-
- //呼吸率
+ }else if(DeviceFunctionUtils.hasFunction(it,"resp")){ //呼吸率
val statusHXL = if (respiratoryData.respiratory == 0) {
0
} else if (respiratoryData.respiratoryMessage.contains("正常")) {
@@ -330,11 +348,11 @@ class DynamicManagementVm : BaseVm() {
R.mipmap.bg_breath,
R.mipmap.ic_h_breath,
2,
+ it.type,
calorie = respiratoryData.count
)
)
-
- //体温
+ }else if(DeviceFunctionUtils.hasFunction(it,"temp")){ //体温
val statusTW = if (tempData.tempInt == 0) {
0
} else if (tempData.tempMessage.contains("正常")) {
@@ -354,11 +372,11 @@ class DynamicManagementVm : BaseVm() {
R.mipmap.bg_temp,
R.mipmap.ic_temp,
3,
+ it.type,
calorie = tempData.count
)
)
-
- //步数
+ }else if(DeviceFunctionUtils.hasFunction(it,"step")){ //步数
val contentBS =
if (stepData.step == 0) "--" else stepData.step.toString()
val mTimeBS = if (stepData.stepTime.isNullOrEmpty()) {
@@ -380,18 +398,11 @@ class DynamicManagementVm : BaseVm() {
R.mipmap.bg_step,
R.mipmap.ic_steps,
4,
+ it.type,
calorie = calorieBS
)
)
-
- //睡眠
-// val statusSM = if (sleepData.sleep == 0) {
-// 0
-// } else if (sleepData.sleepMessage.contains("正常")) {
-// R.mipmap.ic_health_normal
-// } else {
-// R.mipmap.ic_health_error
-// }
+ }else if(DeviceFunctionUtils.hasFunction(it,"sleep")){ //睡眠
val statusSM = 0
val contentSM = if (sleepData.sleep.toLong() <= 0) {
"-小时-分"
@@ -422,11 +433,11 @@ class DynamicManagementVm : BaseVm() {
R.mipmap.bg_h_sleep,
R.mipmap.ic_h_sleep,
5,
+ it.type,
calorie = sleepData.count
)
)
-
- //血压
+ }else if(DeviceFunctionUtils.hasFunction(it,"dbp")){ //血压
val statusXYa = if (dbpData.GDbp == 0 && dbpData.DDbp == 0) {
0
} else if (dbpData.DbpMessage.contains("正常")) {
@@ -449,11 +460,11 @@ class DynamicManagementVm : BaseVm() {
R.mipmap.bg_xya,
R.mipmap.ic_xya,
6,
+ it.type,
calorie = dbpData.count
)
)
-
- //血糖
+ }else if(DeviceFunctionUtils.hasFunction(it,"sugar")){ //血糖
var statusXT = 0
var contentXT = ""
var mTimeXT = ""
@@ -529,11 +540,11 @@ class DynamicManagementVm : BaseVm() {
R.mipmap.bg_bloodsugar,
R.mipmap.ic_bloodsugar,
7,
+ it.type,
calorie = bloodSugarData.count
)
)
-
- /*//心电
+ }else if(DeviceFunctionUtils.hasFunction(it,"ecg")){ //心电
val statusXD = 0
val contentXD =
if (TextUtils.isEmpty(heartData.hrData) || heartData.hrData == "0") {
@@ -550,26 +561,11 @@ class DynamicManagementVm : BaseVm() {
contentXD,
R.mipmap.bg_ecg,
R.mipmap.ic_ecg,
- 8
+ 8,
+ it.type,
)
- )*/
-
- //尿酸
-// val statusNS = if (uricAcidData.value == "0") {
-// 0
-// } else if (uricAcidData.message.contains("正常")) {
-// R.mipmap.ic_health_normal
-// } else {
-// R.mipmap.ic_health_error
-// }
-// val contentNS =
-// if (!TextUtils.isEmpty(uricAcidData.value)) uricAcidData.value else "--"
-// val mTimeNS = uricAcidData.time.toLong().let {
-// RxTimeTool.milliseconds2String(
-// it,
-// SimpleDateFormat("yyyy-MM-dd HH:mm")
-// )
-// }.toString()
+ )
+ }else if(DeviceFunctionUtils.hasFunction(it,"uric")){ //尿酸
var statusNS = 0
var contentNS = ""
var mTimeNS = ""
@@ -597,13 +593,6 @@ class DynamicManagementVm : BaseVm() {
} else {
"${
milliseconds2String(uricAcidData.time)
- /* RxTimeTool.simpleDateFormat(
- "yyyy-MM-dd HH",
- RxTimeTool.string2Date(
- "yyyy-MM-dd HH:mm:ss",
- uricAcidData.time
- )
- )*/
}:00"
}
}
@@ -631,12 +620,12 @@ class DynamicManagementVm : BaseVm() {
R.mipmap.bg_niaosuan,
R.mipmap.ic_niaosuan,
9,
+ it.type,
sex = user.sex.toString(),
calorie = uricAcidData.count
)
)
-
- //血脂
+ }else if(DeviceFunctionUtils.hasFunction(it,"bloodFat")){ //血脂
healthMonitoringList.add(
HealthMonitoringListBean(
"血脂",
@@ -646,865 +635,39 @@ class DynamicManagementVm : BaseVm() {
R.mipmap.bg_fat,
R.mipmap.ic_fat,
10,
+ it.type,
calorie = bean.healthCount.toString()
)
)
- /*var statusXZ = 0
- var contentXZ = ""
- var mTimeXZ = ""
- when (bloodFatData.status) {
- //0 未开通 1:建模中 2:建模完成
- 0 -> {
- if (TextUtils.isEmpty(bloodFatData.expireTime)) {
- contentXZ = "未开通"
- mTimeXZ = "免费体验100天"
- statusXZ = 3
- } else {
- contentXZ = "续费"
- mTimeXZ = RxTimeTool.getCurrentDateTime("yyyy-MM-dd HH:mm")
- statusXZ = 0
- }
- }
-
- 1 -> {
- statusXZ = 1
- contentXZ = "建模中"
- mTimeXZ = if (bloodFatData.time.isNullOrEmpty()) {
- "${RxTimeTool.getCurrentDateTime("yyyy-MM-dd HH")}:00"
- } else if (bloodFatData.time.contains("-")) {
- bloodFatData.time
- } else {
-// "${
-// RxTimeTool.simpleDateFormat(
-// "yyyy-MM-dd HH",
-// RxTimeTool.string2Date(
-// "yyyy-MM-dd HH:mm:ss",
-// bloodFatData.time
-// )
-// )
-// }:00"
- milliseconds2String(bloodFatData.time)
- }
- }
-
- 2 -> {
- statusXZ =
- if (bloodFatData.value == "0" || TextUtils.isEmpty(bloodFatData.value)) {
- 0
- } else if (bloodFatData.message.contains("正常")) {
- 1
- } else {
- 2
- }
- contentXZ =
- if (!TextUtils.isEmpty(bloodFatData.value)) bloodFatData.value else "--"
- mTimeXZ = milliseconds2String(bloodFatData.time)
- }
- }
- healthMonitoringList.add(
- HealthMonitoringListBean(
- "血脂",
- statusXZ,
- mTimeXZ,
- contentXZ,
- R.mipmap.bg_fat,
- R.mipmap.ic_fat,
- 10
- )
- )*/
-// }
-
- /*"A3" -> {
- //其他界面要用到是否为x1,x2的设备判断,这里坐下缓存
- MMkvHelper.put(Const.X1_X2_Device, false)
- //心率
- val statusXL = if (hrData.hr == 0) {
- 0
- } else if (hrData.hrMessage.contains("正常")) {
- 1
- } else {
- 2
- }
- val contentXL = if (hrData.hr == 0) "--" else hrData.hr.toString()
- val mTimeXL = milliseconds2String(hrData.hrTime)
- healthMonitoringList.add(
- HealthMonitoringListBean(
- "心率",
- statusXL,
- mTimeXL,
- contentXL,
- R.mipmap.bg_xl,
- R.mipmap.ic_xl,
- 0
- )
- )
-
- //血氧
- val statusXY = if (soData.so == 0) {
- 0
- } else if (soData.soMessage.contains("正常")) {
- 1
- } else {
- 2
- }
- val contentXY = if (soData.so == 0) "--" else soData.so.toString()
- val mTimeXY = milliseconds2String(soData.soTime)
- healthMonitoringList.add(
- HealthMonitoringListBean(
- "血氧",
- statusXY,
- mTimeXY,
- contentXY,
- R.mipmap.bg_oo,
- R.mipmap.ic_oo,
- 1
- )
- )
-
- //呼吸率
- val statusHXL = if (respiratoryData.respiratory == 0) {
- 0
- } else if (respiratoryData.respiratoryMessage.contains("正常")) {
- 1
- } else {
- 2
- }
- val contentHXL =
- if (respiratoryData.respiratory == 0) "--" else respiratoryData.respiratory.toString()
- val mTimeHXL = milliseconds2String(respiratoryData.respiratoryTime)
- healthMonitoringList.add(
- HealthMonitoringListBean(
- "呼吸率",
- statusHXL,
- mTimeHXL,
- contentHXL,
- R.mipmap.bg_breath,
- R.mipmap.ic_h_breath,
- 2
- )
- )
-
- //体温
- val statusTW = if (tempData.tempInt == 0) {
- 0
- } else if (tempData.tempMessage.contains("正常")) {
- 1
- } else {
- 2
- }
- val contentTW =
- if (tempData.tempInt == 0) "--" else "${tempData.tempInt}.${tempData.tempFloat}"
- val mTimeTW = milliseconds2String(tempData.tempTime)
- healthMonitoringList.add(
- HealthMonitoringListBean(
- "体温",
- statusTW,
- mTimeTW,
- contentTW,
- R.mipmap.bg_temp,
- R.mipmap.ic_temp,
- 3
- )
- )
-
- //步数
- val contentBS =
- if (stepData.step == 0) "--" else stepData.step.toString()
- val mTimeBS = if (stepData.stepTime.isNullOrEmpty()) {
- RxTimeTool.getCurrentDateTime("yyyy-MM-dd HH:mm")
- } else (if (stepData.stepTime.contains("-")) {
- stepData.stepTime.let {
- it.substring(0, it.length - 3)
- }
- } else {
- milliseconds2String(stepData.stepTime)
- })
- val calorieBS = caloriesData
- healthMonitoringList.add(
- HealthMonitoringListBean(
- "步数",
- 0,
- mTimeBS,
- contentBS,
- R.mipmap.bg_step,
- R.mipmap.ic_steps,
- 4,
- calorie = calorieBS
- )
- )
-
- //睡眠
- val statusSM = 0
- val contentSM = if (sleepData.sleep.toLong() <= 0) {
- "-小时-分"
- } else {
- sleepData.sleep.toLong().let {
- TimeUtils.secToSpan(
- it,
- 18,
- ContextCompat.getColor(
- context,
- R.color.col_464
- ),
- Typeface.BOLD,
- ).toString()
- }
- }
- val mTimeSM = if (sleepData.sleepTime == 0) {
- RxTimeTool.getCurrentDateTime("yyyy-MM-dd HH:mm")
- } else {
- milliseconds2String(sleepData.sleepTime.toString())
- }
- healthMonitoringList.add(
- HealthMonitoringListBean(
- "睡眠",
- statusSM,
- mTimeSM,
- contentSM,
- R.mipmap.bg_h_sleep,
- R.mipmap.ic_h_sleep,
- 5
- )
- )
+ }
+ }
+ }
+ return healthMonitoringList
+ }
- //血压
- val statusXYa = if (dbpData.GDbp == 0 && dbpData.DDbp == 0) {
- 0
- } else if (dbpData.DbpMessage.contains("正常")) {
- 1
- } else {
- 2
- }
- val contentXYa = if (dbpData.GDbp == 0 && dbpData.DDbp == 0) {
- "--"
- } else {
- "${dbpData.GDbp}/${dbpData.DDbp}"
- }
- val mTimeXYa = milliseconds2String(dbpData.DbpTime)
- healthMonitoringList.add(
- HealthMonitoringListBean(
- "血压",
- statusXYa,
- mTimeXYa,
- contentXYa,
- R.mipmap.bg_xya,
- R.mipmap.ic_xya,
- 6
- )
- )
+ @SuppressLint("SimpleDateFormat")
+ private fun milliseconds2String(strTime: String): String {
+ return RxTimeTool.milliseconds2String(
+ strTime.toLong() * 1000,
+ SimpleDateFormat("yyyy-MM-dd HH:mm")
+ )
+ }
- //血糖
- var statusXT = 0
- var contentXT = ""
- var mTimeXT = ""
- when (bloodSugarData.model) {//如果有errorMsg则为建模中
- //0 未开通 1:建模中 2:建模完成
- 0 -> {
- if (TextUtils.isEmpty(bloodSugarData.expireTime)) {
- contentXT = "未开通"
- mTimeXT = "免费体验100天"
- statusXT = 3
- } else {
- contentXT = "续费"
- mTimeXT = RxTimeTool.getCurrentDateTime("yyyy-MM-dd HH:mm")
- statusXT = 0
- }
- }
+ fun getWeather(){
+ startHttp {
+ val json = JSONObject()
+ json.put("longitude", MMkvHelper.getDouble(Const.LONGITUDE))
+ json.put("latitude", MMkvHelper.getDouble(Const.LATITUDE))
+ val body = apiInterface().getWeather(retrofits.getRequestBody(json.toString()))
+ body.getCodeStatus(weatherLiveDate, nowData)
+ }
+ }
- 1 -> {
- statusXT = 1
- contentXT = "建模中"
- mTimeXT = if (bloodSugarData.time.isNullOrEmpty()) {
- "${RxTimeTool.getCurrentDateTime("yyyy-MM-dd HH")}:00"
- } else if (bloodSugarData.time.contains("-")) {
- bloodSugarData.time
- } else {
- "${
- RxTimeTool.simpleDateFormat(
- "yyyy-MM-dd HH",
- RxTimeTool.string2Date(
- "yyyy-MM-dd HH:mm:ss",
- bloodSugarData.time
- )
- )
- }:00"
- }
- }
-
- 2 -> {
- statusXT =
- if (bloodSugarData.bloodsugar.toFloat() == 0f) {
- 0
- } else if (OrganStatusCalcUtil.bloodSugarStatu(bloodSugarData.bloodsugar.toFloat()) == 0) {
- 1
- } else {
- 2
- }
- contentXT = if (bloodSugarData.bloodsugar.toFloat() == 0f) {
- "--"
- } else {
- bloodSugarData.bloodsugar.toString()
- }
- mTimeXT = if (bloodSugarData.time.isNullOrEmpty()) {
- "${RxTimeTool.getCurrentDateTime("yyyy-MM-dd HH")}:00"
- } else {
- "${
- RxTimeTool.simpleDateFormat(
- "yyyy-MM-dd HH",
- RxTimeTool.string2Date(
- "yyyy-MM-dd HH:mm:ss",
- bloodSugarData.time
- )
- )
- }:00"
- }
- }
- }
- healthMonitoringList.add(
- HealthMonitoringListBean(
- "血糖",
- statusXT,
- mTimeXT,
- contentXT,
- R.mipmap.bg_bloodsugar,
- R.mipmap.ic_bloodsugar,
- 7
- )
- )
-
- //尿酸
-// val statusNS = if (uricAcidData.value == "0") {
-// 0
-// } else if (uricAcidData.message.contains("正常")) {
-// R.mipmap.ic_health_normal
-// } else {
-// R.mipmap.ic_health_error
-// }
-// val contentNS =
-// if (!TextUtils.isEmpty(uricAcidData.value)) uricAcidData.value else "--"
-// val mTimeNS = uricAcidData.time.toLong().let {
-// RxTimeTool.milliseconds2String(
-// it,
-// SimpleDateFormat("yyyy-MM-dd HH:mm")
-// )
-// }.toString()
- var statusNS = 0
- var contentNS = ""
- var mTimeNS = ""
- when (uricAcidData.status) {
- //0 未开通 1:建模中 2:建模完成
- 0 -> {
- if (TextUtils.isEmpty(uricAcidData.expireTime)) {
- contentNS = "未开通"
- mTimeNS = "免费体验100天"
- statusNS = 3
- } else {
- contentNS = "续费"
- mTimeNS = RxTimeTool.getCurrentDateTime("yyyy-MM-dd HH:mm")
- statusNS = 0
- }
- }
-
- 1 -> {
- statusNS = 1
- contentNS = "建模中"
- mTimeNS = if (uricAcidData.time.isNullOrEmpty()) {
- "${RxTimeTool.getCurrentDateTime("yyyy-MM-dd HH")}:00"
- } else if (uricAcidData.time.contains("-")) {
- uricAcidData.time
- } else {
- "${
- RxTimeTool.simpleDateFormat(
- "yyyy-MM-dd HH",
- RxTimeTool.string2Date(
- "yyyy-MM-dd HH:mm:ss",
- uricAcidData.time
- )
- )
- }:00"
- }
- }
-
- 2 -> {
- statusNS =
- if (uricAcidData.value == "0" || TextUtils.isEmpty(uricAcidData.value)) {
- 0
- } else if (uricAcidData.message.contains("正常")) {
- 1
- } else {
- 2
- }
- contentNS =
- if (!TextUtils.isEmpty(uricAcidData.value)) uricAcidData.value else "--"
- mTimeNS = milliseconds2String(uricAcidData.time)
- }
- }
- healthMonitoringList.add(
- HealthMonitoringListBean(
- "尿酸",
- statusNS,
- mTimeNS,
- contentNS,
- R.mipmap.bg_niaosuan,
- R.mipmap.ic_niaosuan,
- 9,
- sex = user.sex.toString()
- )
- )
-
- //血脂
- var statusXZ = 0
- var contentXZ = ""
- var mTimeXZ = ""
- when (bloodFatData.status) {
- //0 未开通 1:建模中 2:建模完成
- 0 -> {
- if (TextUtils.isEmpty(bloodFatData.expireTime)) {
- contentXZ = "未开通"
- mTimeXZ = "免费体验100天"
- statusXZ = 3
- } else {
- contentXZ = "续费"
- mTimeXZ = RxTimeTool.getCurrentDateTime("yyyy-MM-dd HH:mm")
- statusXZ = 0
- }
- }
-
- 1 -> {
- statusXZ = 1
- contentXZ = "建模中"
- mTimeXZ = if (bloodFatData.time.isNullOrEmpty()) {
- "${RxTimeTool.getCurrentDateTime("yyyy-MM-dd HH")}:00"
- } else if (bloodFatData.time.contains("-")) {
- bloodFatData.time
- } else {
-// "${
-// RxTimeTool.simpleDateFormat(
-// "yyyy-MM-dd HH",
-// RxTimeTool.string2Date(
-// "yyyy-MM-dd HH:mm:ss",
-// bloodFatData.time
-// )
-// )
-// }:00"
- milliseconds2String(bloodFatData.time)
- }
- }
-
- 2 -> {
- statusXZ =
- if (bloodFatData.value == "0" || TextUtils.isEmpty(bloodFatData.value)) {
- 0
- } else if (bloodFatData.message.contains("正常")) {
- 1
- } else {
- 2
- }
- contentXZ =
- if (!TextUtils.isEmpty(bloodFatData.value)) bloodFatData.value else "--"
- mTimeXZ = milliseconds2String(bloodFatData.time)
- }
- }
- healthMonitoringList.add(
- HealthMonitoringListBean(
- "血脂",
- statusXZ,
- mTimeXZ,
- contentXZ,
- R.mipmap.bg_fat,
- R.mipmap.ic_fat,
- 10
- )
- )
- }*/
-/*
- "X2", "X1" -> {
- //其他界面要用到是否为x1,x2的设备判断,这里坐下缓存
- MMkvHelper.put(Const.X1_X2_Device, true)
- //心率
- val statusXL = if (hrData.hr == 0) {
- 0
- } else if (hrData.hrMessage.contains("正常")) {
- 1
- } else {
- 2
- }
- val contentXL = if (hrData.hr == 0) "--" else hrData.hr.toString()
- val mTimeXL = milliseconds2String(hrData.hrTime)
- healthMonitoringList.add(
- HealthMonitoringListBean(
- "心率",
- statusXL,
- mTimeXL,
- contentXL,
- R.mipmap.bg_xl,
- R.mipmap.ic_xl,
- 0
- )
- )
-
- //血氧
- val statusXY = if (soData.so == 0) {
- 0
- } else if (soData.soMessage.contains("正常")) {
- 1
- } else {
- 2
- }
- val contentXY = if (soData.so == 0) "--" else soData.so.toString()
- val mTimeXY = milliseconds2String(soData.soTime)
- healthMonitoringList.add(
- HealthMonitoringListBean(
- "血氧",
- statusXY,
- mTimeXY,
- contentXY,
- R.mipmap.bg_oo,
- R.mipmap.ic_oo,
- 1
- )
- )
-
- //呼吸率
- val statusHXL = if (respiratoryData.respiratory == 0) {
- 0
- } else if (respiratoryData.respiratoryMessage.contains("正常")) {
- 1
- } else {
- 2
- }
- val contentHXL =
- if (respiratoryData.respiratory == 0) "--" else respiratoryData.respiratory.toString()
- val mTimeHXL = milliseconds2String(respiratoryData.respiratoryTime)
- healthMonitoringList.add(
- HealthMonitoringListBean(
- "呼吸率",
- statusHXL,
- mTimeHXL,
- contentHXL,
- R.mipmap.bg_breath,
- R.mipmap.ic_h_breath,
- 2
- )
- )
-
- //步数
- val contentBS =
- if (stepData.step == 0) "--" else stepData.step.toString()
- val mTimeBS = if (stepData.stepTime.isNullOrEmpty()) {
- RxTimeTool.getCurrentDateTime("yyyy-MM-dd HH:mm")
- } else (if (stepData.stepTime.contains("-")) {
- stepData.stepTime.let {
- it.substring(0, it.length - 3)
- }
- } else {
- milliseconds2String(stepData.stepTime)
- })
- val calorieBS = caloriesData
- healthMonitoringList.add(
- HealthMonitoringListBean(
- "步数",
- 0,
- mTimeBS,
- contentBS,
- R.mipmap.bg_step,
- R.mipmap.ic_steps,
- 4,
- calorie = calorieBS
- )
- )
-
- //睡眠
- val statusSM = 0
- val contentSM = if (sleepData.sleep.toLong() <= 0) {
- "-小时-分"
- } else {
- sleepData.sleep.toLong().let {
- TimeUtils.secToSpan(
- it,
- 18,
- ContextCompat.getColor(
- context,
- R.color.col_464
- ),
- Typeface.BOLD,
- ).toString()
- }
- }
- val mTimeSM = if (sleepData.sleepTime == 0) {
- RxTimeTool.getCurrentDateTime("yyyy-MM-dd HH:mm")
- } else {
- milliseconds2String(sleepData.sleepTime.toString())
- }
- healthMonitoringList.add(
- HealthMonitoringListBean(
- "睡眠",
- statusSM,
- mTimeSM,
- contentSM,
- R.mipmap.bg_h_sleep,
- R.mipmap.ic_h_sleep,
- 5
- )
- )
-
- //血压
- val statusXYa = if (dbpData.GDbp == 0 && dbpData.DDbp == 0) {
- 0
- } else if (dbpData.DbpMessage.contains("正常")) {
- 1
- } else {
- 2
- }
- val contentXYa = if (dbpData.GDbp == 0 && dbpData.DDbp == 0) {
- "--"
- } else {
- "${dbpData.GDbp}/${dbpData.DDbp}"
- }
- val mTimeXYa = milliseconds2String(dbpData.DbpTime)
- healthMonitoringList.add(
- HealthMonitoringListBean(
- "血压",
- statusXYa,
- mTimeXYa,
- contentXYa,
- R.mipmap.bg_xya,
- R.mipmap.ic_xya,
- 6
- )
- )
-
- //血糖
- var statusXT = 0
- var contentXT = ""
- var mTimeXT = ""
- when (bloodSugarData.model) {//如果有errorMsg则为建模中
- //0 未开通 1:建模中 2:建模完成
- 0 -> {
- if (TextUtils.isEmpty(bloodSugarData.expireTime)) {
- contentXT = "未开通"
- mTimeXT = "免费体验100天"
- statusXT = 3
- } else {
- contentXT = "续费"
- mTimeXT = RxTimeTool.getCurrentDateTime("yyyy-MM-dd HH:mm")
- statusXT = 0
- }
- }
-
- 1 -> {
- statusXT = 1
- contentXT = "建模中"
- mTimeXT = if (bloodSugarData.time.isNullOrEmpty()) {
- "${RxTimeTool.getCurrentDateTime("yyyy-MM-dd HH")}:00"
- } else if (bloodSugarData.time.contains("-")) {
- bloodSugarData.time
- } else {
- "${
- RxTimeTool.simpleDateFormat(
- "yyyy-MM-dd HH",
- RxTimeTool.string2Date(
- "yyyy-MM-dd HH:mm:ss",
- bloodSugarData.time
- )
- )
- }"
- }
- }
-
- 2 -> {
- statusXT =
- if (bloodSugarData.bloodsugar.toFloat() == 0f) {
- 0
- } else if (OrganStatusCalcUtil.bloodSugarStatu(bloodSugarData.bloodsugar.toFloat()) == 0) {
- 1
- } else {
- 2
- }
- contentXT = if (bloodSugarData.bloodsugar.toFloat() == 0f) {
- "--"
- } else {
- bloodSugarData.bloodsugar.toString()
- }
- mTimeXT = if (bloodSugarData.time.isNullOrEmpty()) {
- "${RxTimeTool.getCurrentDateTime("yyyy-MM-dd HH")}:00"
- } else {
- "${
- // milliseconds2String(bloodFatData.time)
- RxTimeTool.simpleDateFormat(
- "yyyy-MM-dd HH",
- RxTimeTool.string2Date(
- "yyyy-MM-dd HH:mm:ss",
- bloodSugarData.time
- )
- )
- }:00"
- }
- }
- }
- healthMonitoringList.add(
- HealthMonitoringListBean(
- "血糖",
- statusXT,
- mTimeXT,
- contentXT,
- R.mipmap.bg_bloodsugar,
- R.mipmap.ic_bloodsugar,
- 7
- )
- )
-
- //尿酸
-// val statusNS = if (uricAcidData.value == "0") {
-// 0
-// } else if (uricAcidData.message.contains("正常")) {
-// R.mipmap.ic_health_normal
-// } else {
-// R.mipmap.ic_health_error
-// }
-// val contentNS =
-// if (!TextUtils.isEmpty(uricAcidData.value)) uricAcidData.value else "--"
-// val mTimeNS = uricAcidData.time.toLong().let {
-// RxTimeTool.milliseconds2String(
-// it,
-// SimpleDateFormat("yyyy-MM-dd HH:mm")
-// )
-// }.toString()
- var statusNS = 0
- var contentNS = ""
- var mTimeNS = ""
- when (uricAcidData.status) {
- //0 未开通 1:建模中 2:建模完成
- 0 -> {
- if (TextUtils.isEmpty(uricAcidData.expireTime)) {
- contentNS = "未开通"
- mTimeNS = "免费体验100天"
- statusNS = 3
- } else {
- contentNS = "续费"
- mTimeNS = RxTimeTool.getCurrentDateTime("yyyy-MM-dd HH:mm")
- statusNS = 0
- }
- }
-
- 1 -> {
- statusNS = 1
- contentNS = "建模中"
- mTimeNS = if (uricAcidData.time.isNullOrEmpty()) {
- "${RxTimeTool.getCurrentDateTime("yyyy-MM-dd HH")}:00"
- } else if (uricAcidData.time.contains("-")) {
- uricAcidData.time
- } else {
- "${
- milliseconds2String(uricAcidData.time)
- }"
- }
- }
-
- 2 -> {
- statusNS =
- if (uricAcidData.value == "0" || TextUtils.isEmpty(uricAcidData.value)) {
- 0
- } else if (uricAcidData.message.contains("正常")) {
- 1
- } else {
- 2
- }
- contentNS =
- if (!TextUtils.isEmpty(uricAcidData.value)) uricAcidData.value else "--"
- mTimeNS = milliseconds2String(uricAcidData.time)
- }
- }
-
- healthMonitoringList.add(
- HealthMonitoringListBean(
- "尿酸",
- statusNS,
- mTimeNS,
- contentNS,
- R.mipmap.bg_niaosuan,
- R.mipmap.ic_niaosuan,
- 9,
- sex = user.sex.toString()
- )
- )
-
- //血脂
- var statusXZ = 0
- var contentXZ = ""
- var mTimeXZ = ""
- when (bloodFatData.status) {
- //0 未开通 1:建模中 2:建模完成
- 0 -> {
- if (TextUtils.isEmpty(bloodFatData.expireTime)) {
- contentXZ = "未开通"
- mTimeXZ = "免费体验100天"
- statusXZ = 3
- } else {
- contentXZ = "续费"
- mTimeXZ = RxTimeTool.getCurrentDateTime("yyyy-MM-dd HH:mm")
- statusXZ = 0
- }
- }
-
- 1 -> {
- statusXZ = 1
- contentXZ = "建模中"
- mTimeXZ = if (bloodFatData.time.isNullOrEmpty()) {
- "${RxTimeTool.getCurrentDateTime("yyyy-MM-dd HH")}:00"
- } else if (bloodFatData.time.contains("-")) {
- bloodFatData.time
- } else {
- milliseconds2String(bloodFatData.time)
- }
- }
-
- 2 -> {
- statusXZ =
- if (bloodFatData.value == "0" || TextUtils.isEmpty(bloodFatData.value)) {
- 0
- } else if (bloodFatData.message.contains("正常")) {
- 1
- } else {
- 2
- }
- contentXZ =
- if (!TextUtils.isEmpty(bloodFatData.value)) bloodFatData.value else "--"
- mTimeXZ = milliseconds2String(bloodFatData.time)
- }
- }
- healthMonitoringList.add(
- HealthMonitoringListBean(
- "血脂",
- statusXZ,
- mTimeXZ,
- contentXZ,
- R.mipmap.bg_fat,
- R.mipmap.ic_fat,
- 10
- )
- )
- }*/
-// }
- }
- return healthMonitoringList
- }
-
- @SuppressLint("SimpleDateFormat")
- private fun milliseconds2String(strTime: String): String {
- return RxTimeTool.milliseconds2String(
- strTime.toLong() * 1000,
- SimpleDateFormat("yyyy-MM-dd HH:mm")
- )
- }
-
- fun getWeather(){
- startHttp {
- val json = JSONObject()
- json.put("longitude", MMkvHelper.getDouble(Const.LONGITUDE))
- json.put("latitude", MMkvHelper.getDouble(Const.LATITUDE))
- val body = apiInterface().getWeather(retrofits.getRequestBody(json.toString()))
- body.getCodeStatus(weatherLiveDate, nowData)
- }
+ suspend fun getDeviceFunctionLists(id:String):Boolean{
+ val json = JSONObject()
+ json.put("id", id)
+ val body = apiInterface().getDeviceFunctionList(retrofits.getRequestBody(json.toString()))
+ body.getCodeStatus(functionLiveData, nowData)
+ return true
}
}
\ No newline at end of file
diff --git a/app/src/main/res/layout/act_device_active.xml b/app/src/main/res/layout/act_device_active.xml
new file mode 100644
index 0000000..1b79c1e
--- /dev/null
+++ b/app/src/main/res/layout/act_device_active.xml
@@ -0,0 +1,253 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/base/build.gradle b/base/build.gradle
index fc52788..ccd81a2 100644
--- a/base/build.gradle
+++ b/base/build.gradle
@@ -2,6 +2,7 @@ plugins {
id 'com.android.library'
id 'kotlin-android'
id 'kotlin-kapt'
+ id 'kotlin-parcelize'
}
def androidId = rootProject.ext.defaultSetting
@@ -53,7 +54,6 @@ android {
viewBinding{
enabled=true
}
-
}
repositories {
diff --git a/base/src/main/java/com/xty/base/h5/CloudJSBridge.kt b/base/src/main/java/com/xty/base/h5/CloudJSBridge.kt
index b52d040..12e1069 100644
--- a/base/src/main/java/com/xty/base/h5/CloudJSBridge.kt
+++ b/base/src/main/java/com/xty/base/h5/CloudJSBridge.kt
@@ -1,15 +1,19 @@
package com.xty.base.h5
import android.content.Context
+import android.os.Bundle
import android.webkit.JavascriptInterface
import com.blankj.utilcode.util.GsonUtils
import com.google.gson.Gson
import com.xty.base.act.BaseVmAct
+import com.xty.base.model.ScienceDetailBean
import com.xty.base.model.WatchReChangeBean
import com.xty.base.utils.PayUtils
import com.xty.common.Const
import com.xty.common.LogUtils
import com.xty.common.MMkvHelper
+import com.xty.common.arouter.ARouterUrl
+import com.xty.common.arouter.RouteManager
import com.xty.common.util.ToastUtils
import org.json.JSONObject
@@ -63,9 +67,11 @@ open class CloudJSBridge(val context: Context, val listener: IJsBridge) {
fun gotoScienceDetail(str: String?){
LogUtils.e("CloudJSBridge","gotoScienceDetail str")
str?.let {
-
+ var detailBean = GsonUtils.fromJson(it, ScienceDetailBean::class.java)
+ var bundle = Bundle()
+ bundle.putString("id",detailBean.id)
+ RouteManager.goAct(ARouterUrl.SCIENCE_DETAIL, bundle)
}
- ToastUtils(context).showToast("敬请期待")
}
@JavascriptInterface
@@ -76,4 +82,6 @@ open class CloudJSBridge(val context: Context, val listener: IJsBridge) {
}
}
+
+
}
\ No newline at end of file
diff --git a/base/src/main/java/com/xty/base/model/ScienceDetailBean.kt b/base/src/main/java/com/xty/base/model/ScienceDetailBean.kt
new file mode 100644
index 0000000..ae7aee7
--- /dev/null
+++ b/base/src/main/java/com/xty/base/model/ScienceDetailBean.kt
@@ -0,0 +1,3 @@
+package com.xty.base.model
+data class ScienceDetailBean (var id:String){
+}
\ No newline at end of file
diff --git a/common/build.gradle b/common/build.gradle
index 0ef692e..46e5d21 100644
--- a/common/build.gradle
+++ b/common/build.gradle
@@ -2,6 +2,7 @@ plugins {
id 'com.android.library'
id 'kotlin-android'
id 'kotlin-kapt'
+ id 'kotlin-parcelize'
}
diff --git a/common/src/main/java/com/xty/common/Const.kt b/common/src/main/java/com/xty/common/Const.kt
index a4ab845..083921d 100644
--- a/common/src/main/java/com/xty/common/Const.kt
+++ b/common/src/main/java/com/xty/common/Const.kt
@@ -1,6 +1,7 @@
package com.xty.common
import androidx.lifecycle.MutableLiveData
+import com.xty.network.model.DeviceFunctionBean
import com.xty.network.model.MainBean
import com.xty.network.model.MusicBean
import com.xty.network.model.SettingBean
@@ -70,6 +71,7 @@ class Const {
val mainLiveData by lazy { MutableLiveData() } //个人信息数据
val otherLiveData by lazy { MutableLiveData() }
val connectBlueDevice by lazy { ScanDeviceBean() }
+ val functionListDate by lazy { MutableLiveData>() }
var battery = ""//电量信息
diff --git a/common/src/main/java/com/xty/common/arouter/ARouterUrl.kt b/common/src/main/java/com/xty/common/arouter/ARouterUrl.kt
index 33d3b54..aeef5be 100644
--- a/common/src/main/java/com/xty/common/arouter/ARouterUrl.kt
+++ b/common/src/main/java/com/xty/common/arouter/ARouterUrl.kt
@@ -6,7 +6,8 @@ class ARouterUrl {
const val MAIN_ACT = "/com/zj365/dc/activity/MainActivity"
const val LOGIN_ACT = "/com/zj365/dc/activity/LoginAct"
const val REGIST_ACT = "/com/zj365/dc/activity/RegisterAct"
- const val DEVICE_ACTIVE = "/com/zj365/dc/activity/OneKeyBinderDeviceAct"
+ const val ONE_KEY_DEVICE_ACTIVE = "/com/zj365/dc/activity/OneKeyBinderDeviceAct"
+ const val DEVICE_ACTIVE = "/com/xty/health/act/DeviceActiveAct"
const val BASIC_INFO = "/com/zj365/dc/act/BasicInfoAct"
const val BIND_WX_PHONE = "/com/zj365/dc/act/BindWxPhone"
const val DEVICE_CONNECT = "/com/zj365/dc/activity/DeviceConnectAct"
diff --git a/common/src/main/java/com/xty/common/util/DeviceFunctionUtils.kt b/common/src/main/java/com/xty/common/util/DeviceFunctionUtils.kt
new file mode 100644
index 0000000..6d86133
--- /dev/null
+++ b/common/src/main/java/com/xty/common/util/DeviceFunctionUtils.kt
@@ -0,0 +1,22 @@
+package com.xty.common.util
+
+import com.xty.network.model.DeviceFunctionBean
+
+object DeviceFunctionUtils {
+
+ fun hasFunction(functionList:ArrayList,functionType:String) : Boolean{
+ functionList.forEach {
+ if(it.type == functionType && it.status == 1){
+ return true
+ }
+ }
+ return false
+ }
+
+ fun hasFunction(bean:DeviceFunctionBean,functionType:String):Boolean{
+ if(bean.type == functionType && bean.status == 1){
+ return true
+ }
+ return false
+ }
+}
\ No newline at end of file
diff --git a/common/src/main/res/drawable/progress_bg_info.xml b/common/src/main/res/drawable/progress_bg_info.xml
new file mode 100644
index 0000000..04f6d7b
--- /dev/null
+++ b/common/src/main/res/drawable/progress_bg_info.xml
@@ -0,0 +1,24 @@
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-xxhdpi/bg_home_item.png b/common/src/main/res/mipmap-xxhdpi/bg_home_item.png
similarity index 100%
rename from app/src/main/res/mipmap-xxhdpi/bg_home_item.png
rename to common/src/main/res/mipmap-xxhdpi/bg_home_item.png
diff --git a/config.gradle b/config.gradle
index dd6d4ec..e9e364c 100644
--- a/config.gradle
+++ b/config.gradle
@@ -169,7 +169,8 @@ ext {
stream : 'com.annimon:stream:1.2.1',
rxjave : 'io.reactivex.rxjava2:rxjava:2.2.8',
rxandroid : 'io.reactivex.rxjava2:rxandroid:2.1.1',
- permission : 'com.yanzhenjie:permission:2.0.3',
+ permission : 'com.yanzhenjie:permission:2.0.3',
+ autoSize :'me.jessyan:autosize:1.2.1',
//seekbar
seekbar : 'com.github.Jay-Goo:RangeSeekBar:v3.0.0'
diff --git a/health/build.gradle b/health/build.gradle
index 0aa80a2..186386e 100644
--- a/health/build.gradle
+++ b/health/build.gradle
@@ -2,6 +2,7 @@ plugins {
id 'com.android.library'
id 'org.jetbrains.kotlin.android'
id 'kotlin-kapt'
+ id 'kotlin-parcelize'
}
diff --git a/health/src/main/java/com/zj365/health/act/ComparePageDataAct.kt b/health/src/main/java/com/zj365/health/act/ComparePageDataAct.kt
index 4392cc7..1f5d1c3 100644
--- a/health/src/main/java/com/zj365/health/act/ComparePageDataAct.kt
+++ b/health/src/main/java/com/zj365/health/act/ComparePageDataAct.kt
@@ -10,6 +10,8 @@ import com.xty.base.act.BaseVmAct
import com.xty.base.vm.BaseVm
import com.xty.base.vp2.VpAdapter
import com.xty.common.arouter.ARouterUrl
+import com.xty.common.util.DeviceFunctionUtils
+import com.xty.network.model.DeviceFunctionBean
import com.zj365.health.R
import com.zj365.health.databinding.ActComparePageBinding
import com.zj365.health.fragment.BreathCompareDataFrag
@@ -21,12 +23,13 @@ import com.zj365.health.fragment.XlCompareDataFrag
import com.zj365.health.fragment.XueTangCompareDataFrag
import com.zj365.health.fragment.XueYaCompareDataFrag
import com.zj365.health.fragment.bloodlipid.BloodFatCompareDataFrag
+import com.zj365.health.vm.ComparePageDataVm
/**
* 数据对比
*/
@Route(path = ARouterUrl.COMPARE_PAGE_DATA_ACT)
-class ComparePageDataAct : BaseVmAct() {
+class ComparePageDataAct : BaseVmAct() {
/**
* userid
*/
@@ -34,7 +37,7 @@ class ComparePageDataAct : BaseVmAct() {
val title by lazy { arrayOf( "心率数据对比", "血氧数据对比", "呼吸率数据对比","体温数据对比","睡眠数据对比", "血压数据对比" ,"血糖数据对比","尿酸数据对比","血脂数据对比" ) }
val compareArray: Array by lazy { resources.getStringArray(R.array.compare_array) }
var listFragment = mutableListOf()
-
+ var functionList = ArrayList()
/**
*/
val binding by lazy{ ActComparePageBinding.inflate(layoutInflater)}
@@ -45,18 +48,38 @@ class ComparePageDataAct : BaseVmAct() {
if (intent.extras!!.containsKey("id")) {
id = intent.extras!!.getString("id").toString()
}
+
+ if(intent.extras!!.containsKey("functionList")){
+ functionList = intent.extras!!.getParcelableArrayList("functionList")!!
+ }
}
- private fun initVp2() {
+ private fun initVp2(functionList :MutableList) {
listFragment.clear()
- listFragment.add(setArgumentFrag(XlCompareDataFrag(), id))
- listFragment.add(setArgumentFrag(XYangCompareDataFrag(), id))
- listFragment.add(setArgumentFrag(BreathCompareDataFrag (),id))
- listFragment.add(setArgumentFrag(TempCompareDataFrag(),id))
- listFragment.add(setArgumentFrag(SleepCompareDataFrag (),id))
- listFragment.add(setArgumentFrag(XueYaCompareDataFrag (),id))
- listFragment.add(setArgumentFrag(XueTangCompareDataFrag(),id))
- listFragment.add(setArgumentFrag(UricAcidCompareDataFrag(),id))
- listFragment.add(setArgumentFrag(BloodFatCompareDataFrag(),id))
+ functionList.forEach {
+ if (DeviceFunctionUtils.hasFunction(it,"hr")){
+ listFragment.add(setArgumentFrag(XlCompareDataFrag(), id))
+ }else if(DeviceFunctionUtils.hasFunction(it,"so")){
+ listFragment.add(setArgumentFrag(XYangCompareDataFrag(), id))
+ }else if(DeviceFunctionUtils.hasFunction(it,"resp")){
+ listFragment.add(setArgumentFrag(BreathCompareDataFrag (),id))
+ }else if(DeviceFunctionUtils.hasFunction(it,"temp")){
+ listFragment.add(setArgumentFrag(TempCompareDataFrag(),id))
+ }else if(DeviceFunctionUtils.hasFunction(it,"sleep")){
+ listFragment.add(setArgumentFrag(SleepCompareDataFrag (),id))
+
+ }else if(DeviceFunctionUtils.hasFunction(it,"dbp")){
+ listFragment.add(setArgumentFrag(XueYaCompareDataFrag (),id))
+
+ }else if(DeviceFunctionUtils.hasFunction(it,"sugar")){
+ listFragment.add(setArgumentFrag(XueTangCompareDataFrag(),id))
+
+ }else if(DeviceFunctionUtils.hasFunction(it,"uric")){
+ listFragment.add(setArgumentFrag(UricAcidCompareDataFrag(),id))
+
+ }/*else if(it.type == "bloodFat" && it.status == 1){
+ listFragment.add(setArgumentFrag(BloodFatCompareDataFrag(),id))
+ }*/
+ }
binding.mVp2.adapter = VpAdapter(listFragment, this)
binding.mVp2.isUserInputEnabled = false
@@ -81,16 +104,25 @@ class ComparePageDataAct : BaseVmAct() {
finish()
}
}
- initTab()
- initVp2()
-
+ if(functionList.size == 0){
+ mViewModel.getDeviceFunctionList(id)
+ }else{
+ initTab(functionList)
+ initVp2(functionList)
+ }
}
- private fun initTab() {
- compareArray.forEach {
- val tab = binding.xTablayout.newTab()
- tab.text = it
- binding.xTablayout.addTab(tab)
+ private fun initTab(functionList :MutableList) {
+ functionList.forEach {
+ if(it.type == "ecg" || it.type == "step" || it.type == "bloodFat"){
+ return@forEach
+ }
+ if (it.status == 1){
+ val tab = binding.xTablayout.newTab()
+ tab.text = it.name
+ binding.xTablayout.addTab(tab)
+ }
+
}
binding.xTablayout.setOnTabSelectedListener(object : XTabLayout.OnTabSelectedListener{
override fun onTabSelected(tab: XTabLayout.Tab?) {
@@ -107,7 +139,14 @@ class ComparePageDataAct : BaseVmAct() {
}
override fun liveObserver() {
+ mViewModel.functionLiveData.observe(this){
+ it.data.let {
+ functionList.addAll(it)
+ initTab(functionList)
+ initVp2(functionList)
+ }
}
+ }
fun changeTitle(position: Int) {
binding.title.mTvTitle.text = title[position]
diff --git a/health/src/main/java/com/zj365/health/act/HealthMainAct.kt b/health/src/main/java/com/zj365/health/act/HealthMainAct.kt
index 927aaf9..fe9b91a 100644
--- a/health/src/main/java/com/zj365/health/act/HealthMainAct.kt
+++ b/health/src/main/java/com/zj365/health/act/HealthMainAct.kt
@@ -10,31 +10,45 @@ import androidx.viewpager2.widget.ViewPager2
import com.alibaba.android.arouter.facade.annotation.Route
import com.androidkun.xtablayout.XTabLayout
import com.gyf.immersionbar.ImmersionBar
+import com.xty.base.act.BaseVmAct
import com.xty.base.act.IBaseAct
+import com.xty.base.vm.BaseVm
import com.xty.base.vp2.VpAdapter
import com.xty.common.*
import com.xty.common.arouter.ARouterUrl
import com.xty.common.arouter.RouteManager
+import com.xty.common.util.DeviceFunctionUtils
import com.xty.common.weight.tablayout.listener.CustomTabEntity
+import com.xty.network.model.DeviceFunctionBean
import com.zj365.health.R
import com.zj365.health.databinding.ActHealthMainBinding
+import com.zj365.health.fragment.BreathCompareDataFrag
import com.zj365.health.fragment.bloodlipid.BloodFatFrag
import com.zj365.health.fragment.BreathFrag
+import com.zj365.health.fragment.SleepCompareDataFrag
import com.zj365.health.weight.DialogTip
import com.zj365.health.fragment.SleepFrag
import com.zj365.health.fragment.TemFrag
+import com.zj365.health.fragment.TempCompareDataFrag
+import com.zj365.health.fragment.UricAcidCompareDataFrag
import com.zj365.health.fragment.UricAcidFrag
+import com.zj365.health.fragment.XYangCompareDataFrag
import com.zj365.health.fragment.XdFrag
import com.zj365.health.fragment.XinlvFrag
+import com.zj365.health.fragment.XlCompareDataFrag
+import com.zj365.health.fragment.XueTangCompareDataFrag
import com.zj365.health.fragment.XueTangFrag
+import com.zj365.health.fragment.XueYaCompareDataFrag
import com.zj365.health.fragment.XueyaFrag
import com.zj365.health.fragment.XueyangFrag
+import com.zj365.health.fragment.bloodlipid.BloodFatCompareDataFrag
+import com.zj365.health.vm.HealthMainVm
/**
* 健康监测 详情
*/
@Route(path = ARouterUrl.HEALTHMAIN)
-class HealthMainAct : IBaseAct() {
+class HealthMainAct : BaseVmAct() {
var isDemonstrate: Boolean = false
var page = 0
val binding by lazy { ActHealthMainBinding.inflate(layoutInflater) }
@@ -42,6 +56,8 @@ class HealthMainAct : IBaseAct() {
var tabName = arrayOf()
var id = ""
var sex = "1"
+ var functionType:String = ""
+ var functionList = ArrayList()
val dialogBind by lazy {
DialogTip(this, "需绑定中健三六五健康手表,才能查看", "去绑定") {
RouteManager.goAct(ARouterUrl.DEVICE_CHOICE)
@@ -51,8 +67,12 @@ class HealthMainAct : IBaseAct() {
override fun setLayout(): View = binding.root
override fun initData() {
super.initData()
- page = intent.extras!!.getInt("page")
+ // page = intent.extras!!.getInt("page")
+ functionType = intent.extras!!.getString("functionType").toString()
isDemonstrate = intent.extras!!.getBoolean("isDemonstrate", false)
+ if(intent.extras!!.containsKey("functionList")){
+ functionList = intent.extras!!.getParcelableArrayList("functionList")!!
+ }
if (intent.extras!!.containsKey("id")) {
id = intent.extras!!.getString("id").toString()
}
@@ -65,42 +85,21 @@ class HealthMainAct : IBaseAct() {
super.initView()
val deviceType = MMkvHelper.getString(Const.DEVICE_TYPE)
+ if(functionList.size == 0){
+ mViewModel.getDeviceFunctionList(id)
+ }else{
+ initTab(functionList)
+ initVp2(functionList)
+ }
tabName = arrayOf(
R.string.info_1, R.string.info_3, R.string.info_7,
R.string.info_4, R.string.info_6, R.string.info_2,
R.string.info_8, R.string.info_11/*, R.string.info_5,
R.string.info_10*/
- ) /*when (deviceType) {
- "", "U32" -> {
- arrayOf(
- R.string.info_1, R.string.info_3, R.string.info_7,
- R.string.info_4, R.string.info_6, R.string.info_2,
- R.string.info_8, R.string.info_11/*, R.string.info_5,
- R.string.info_10*/
- )
- }
-
- "A3" -> {
- arrayOf(
- R.string.info_1, R.string.info_3, R.string.info_7,
- R.string.info_4, R.string.info_6, R.string.info_2,
- R.string.info_8, R.string.info_11*//*, R.string.info_10*//*
- )
- }
-
- else -> {
- arrayOf(
- R.string.info_1, R.string.info_3, R.string.info_7,
- R.string.info_6, R.string.info_2, R.string.info_8,
- R.string.info_11*//*, R.string.info_10*//*
- )
- }
- }*/
+ )
statusBar(binding.title.mView)
initTitle()
- initTab()
- initVp2()
if (isDemonstrate) {
binding.mSubmit.visibility = View.VISIBLE
binding.title.mTvTitle.text = resources.getString(R.string.health_sub_demonstrate)
@@ -108,6 +107,16 @@ class HealthMainAct : IBaseAct() {
}
}
+ override fun liveObserver() {
+ mViewModel.functionLiveData.observe(this){
+ it.data.let {
+ functionList.addAll(it)
+ initTab(functionList)
+ initVp2(functionList)
+ }
+ }
+ }
+
private fun setArgumentFrag(frag: Fragment, id: String = "", sex: String = "1"): Fragment {
val bundle = Bundle()
bundle.putString("id", id)
@@ -118,9 +127,6 @@ class HealthMainAct : IBaseAct() {
private fun initTitle() {
binding.title.mTvTitle.text = resources.getString(R.string.health_sub)
- var parentView = binding.title.mTvTitle.parent as View
-// var bg = ContextCompat.getDrawable(this, R.drawable.shape_bg_health_round)
-// parentView.background = bg
binding.title.mIvBack.apply {
this.setOnClickListener {
finish()
@@ -131,11 +137,21 @@ class HealthMainAct : IBaseAct() {
//设置tab
private val mTabEntities: java.util.ArrayList = java.util.ArrayList()
- private fun initTab() {
- tabName.forEach {
- var tab = binding.xTablayout.newTab()
- tab.text = resources.getString(it)
- binding.xTablayout.addTab(tab)
+ private fun initTab(functionList :MutableList) {
+ functionList.forEach {
+ if (it.type == "step" || it.type == "bloodFat"){
+ return@forEach
+ }
+ if (it.status == 1){
+ var tab = binding.xTablayout.newTab()
+ tab.text = it.name
+ binding.xTablayout.addTab(tab)
+
+ if(it.type == functionType){
+ page = tab.position
+ }
+ }
+
}
binding.xTablayout.setOnTabSelectedListener(object : XTabLayout.OnTabSelectedListener {
override fun onTabSelected(tab: XTabLayout.Tab?) {
@@ -163,46 +179,37 @@ class HealthMainAct : IBaseAct() {
}
//设置vp2
- private fun initVp2() {
+ private fun initVp2(functionList :MutableList) {
listFragment.clear()
- /*when (MMkvHelper.getString(Const.DEVICE_TYPE)) {
- "", "U32" -> {*/
+ functionList.forEach {
+ if (DeviceFunctionUtils.hasFunction(it,"hr")){
listFragment.add(setArgumentFrag(XinlvFrag(), id))
+ }else if(DeviceFunctionUtils.hasFunction(it,"so")){
listFragment.add(setArgumentFrag(XueyangFrag(), id))
+ }else if(DeviceFunctionUtils.hasFunction(it,"resp")){
listFragment.add(setArgumentFrag(BreathFrag(), id))
+ }else if(DeviceFunctionUtils.hasFunction(it,"temp")){
listFragment.add(setArgumentFrag(TemFrag(), id))
+ }else if(DeviceFunctionUtils.hasFunction(it,"sleep")){
listFragment.add(setArgumentFrag(SleepFrag(), id))
- listFragment.add(setArgumentFrag(XueyaFrag(), id))
- listFragment.add(setArgumentFrag(XueTangFrag(), id))
- listFragment.add(setArgumentFrag(UricAcidFrag(), id, sex))
- // listFragment.add(setArgumentFrag(XdFrag(), id))
- // listFragment.add(setArgumentFrag(BloodFatFrag(), id))
- /* }
- "A3" -> {
- listFragment.add(setArgumentFrag(XinlvFrag(), id))
- listFragment.add(setArgumentFrag(XueyangFrag(), id))
- listFragment.add(setArgumentFrag(BreathFrag(), id))
- listFragment.add(setArgumentFrag(TemFrag(), id))
- listFragment.add(setArgumentFrag(SleepFrag(), id))
+ }else if(DeviceFunctionUtils.hasFunction(it,"dbp")){
listFragment.add(setArgumentFrag(XueyaFrag(), id))
- listFragment.add(setArgumentFrag(XueTangFrag(), id))
- listFragment.add(setArgumentFrag(UricAcidFrag(), id, sex))
- // listFragment.add(setArgumentFrag(BloodFatFrag(), id))
- }
- else -> {
- listFragment.add(setArgumentFrag(XinlvFrag(), id))
- listFragment.add(setArgumentFrag(XueyangFrag(), id))
- listFragment.add(setArgumentFrag(BreathFrag(), id))
- listFragment.add(setArgumentFrag(SleepFrag(), id))
- listFragment.add(setArgumentFrag(XueyaFrag(), id))
+ }else if(DeviceFunctionUtils.hasFunction(it,"sugar")){
listFragment.add(setArgumentFrag(XueTangFrag(), id))
+
+ }else if(DeviceFunctionUtils.hasFunction(it,"uric")){
listFragment.add(setArgumentFrag(UricAcidFrag(), id, sex))
- // listFragment.add(setArgumentFrag(BloodFatFrag(), id))
- }
- }*/
+
+ }/*else if(it.type == "bloodFat" && it.status == 1){
+ listFragment.add(setArgumentFrag(BloodFatCompareDataFrag(),id))
+ }*/
+ }
+
+
+
binding.mVp2.adapter = VpAdapter(listFragment, this)
binding.mVp2.isUserInputEnabled = false
@@ -233,25 +240,11 @@ class HealthMainAct : IBaseAct() {
txtColInt = ContextCompat.getColor(this, R.color.col_515)
ImmersionBar.with(this).statusBarDarkFont(true).init()
binding.title.mIvReight.visibility = View.GONE
-// if (position == 5 && tabName.size == 8) {
-// bg = ContextCompat.getDrawable(this, R.drawable.shape_white)!!
-// backId = R.mipmap.icon_back_black
-// txtColInt = ContextCompat.getColor(this, R.color.col_515)
-// ImmersionBar.with(this).statusBarDarkFont(true).init()
-// binding.title.mIvReight.visibility = View.GONE
-// } else {
-// bg = ContextCompat.getDrawable(this, R.drawable.shape_bg_health_round)!!
-// backId = R.mipmap.icon_back_white
-// txtColInt = ContextCompat.getColor(this, R.color.white)
-// ImmersionBar.with(this).statusBarDarkFont(false).init()
-// //binding.title.mIvReight.visibility=View.VISIBLE
-// }
var parentView = binding.title.mTvTitle.parent as View
parentView.background = bg
binding.title.mTvTitle.setTextColor(txtColInt)
binding.title.mIvBack.apply {
-// this.setImageResource(backId)
this.setOnClickListener {
finish()
}
diff --git a/health/src/main/java/com/zj365/health/act/HealthSkyHourReportAct.kt b/health/src/main/java/com/zj365/health/act/HealthSkyHourReportAct.kt
index 883486f..becb9f8 100644
--- a/health/src/main/java/com/zj365/health/act/HealthSkyHourReportAct.kt
+++ b/health/src/main/java/com/zj365/health/act/HealthSkyHourReportAct.kt
@@ -37,7 +37,9 @@ import com.xty.common.event.IntegralEvent
import com.xty.common.setImageUser
import com.xty.common.util.CommonToastUtils
import com.xty.common.util.CommonUtils
+import com.xty.common.util.DeviceFunctionUtils
import com.xty.common.weight.CenterImageSpan
+import com.xty.network.model.DeviceFunctionBean
import com.zj365.health.R
import com.zj365.health.act.exception.BaseExceptionDataAct
import com.zj365.health.adapter.DayReportInfoAdapter
@@ -105,6 +107,9 @@ class HealthSkyHourReportAct : BaseVmAct() {
private val infoAdapter by lazy { DayReportInfoAdapter() }
private val mAdapterCount by lazy { ReportAnalysisAdapter() }
+ var functionList = ArrayList()
+
+
private val dialogBind by lazy {
DialogTip(this, "需绑定中健三六五健康手表,才能查看", "去绑定") {
RouteManager.goAct(ARouterUrl.DEVICE_CHOICE)
@@ -178,6 +183,10 @@ class HealthSkyHourReportAct : BaseVmAct() {
super.initData()
isX1X2 = MMkvHelper.getBoolean(Const.X1_X2_Device, false)
isEstimate = intent.getBooleanExtra("isEstimate", false)
+
+ if(intent.extras!!.containsKey("functionList")){
+ functionList = intent.extras!!.getParcelableArrayList("functionList")!!
+ }
if (isEstimate) {
binding.mTvTime.setCompoundDrawablesWithIntrinsicBounds(
null, // left
@@ -241,6 +250,10 @@ class HealthSkyHourReportAct : BaseVmAct() {
}
}
+ if(functionList.size == 0){
+ mViewModel.getDeviceFunctionList(userId)
+ }
+
//设置tab
//"用户信息", "器官功能分析", "睡眠监测", "中医分析", "中医养生指导", "西医分析", "西医指导",
// "饮食指导", "运动指导", "睡眠方案建议", "营养处方建议", "统计分析", "综合分析"
@@ -833,7 +846,7 @@ class HealthSkyHourReportAct : BaseVmAct() {
)
// x1和x2没有体温
- if (!isX1X2 || isDemonstrate) {
+ if (DeviceFunctionUtils.hasFunction(functionList,"temp")|| isDemonstrate) {
listInfo.add(
ReportBean.HrInfo(
"体温",
@@ -1027,7 +1040,7 @@ class HealthSkyHourReportAct : BaseVmAct() {
}
list.add(respiratoryMean)
- if (!isX1X2 || isDemonstrate) {
+ if (DeviceFunctionUtils.hasFunction(functionList,"temp")|| isDemonstrate) {
val tempMean = com.xty.common.model.ReportBean().apply {
title = "体温"
count = it.data.tempMean.count
@@ -1285,6 +1298,10 @@ class HealthSkyHourReportAct : BaseVmAct() {
CommonToastUtils.showLoserToast("分享记录失败")
}
}
+
+ mViewModel.functionLiveData.observe(this){
+ functionList.addAll(it.data)
+ }
}
private fun goExceptionActivity(exceptionType: Int) {
@@ -1679,7 +1696,7 @@ class HealthSkyHourReportAct : BaseVmAct() {
binding.analysisTv1.text = "平均心率:" + it.data.signData.hr.avg + "次/分"
binding.analysisTv2.text = "平均血氧:" + it.data.signData.so.avg + "%"
binding.analysisTv3.text = "平均呼吸率:" + it.data.signData.respiratory.avg + "次/分"
- if (isX1X2) {
+ if (!DeviceFunctionUtils.hasFunction(functionList,"temp")) {
binding.analysisTv8.visibility = View.GONE
} else {
binding.analysisTv8.text =
diff --git a/health/src/main/java/com/zj365/health/act/familyhealth/FamilyHealthAct.kt b/health/src/main/java/com/zj365/health/act/familyhealth/FamilyHealthAct.kt
index 6ff4538..e6c6e7f 100644
--- a/health/src/main/java/com/zj365/health/act/familyhealth/FamilyHealthAct.kt
+++ b/health/src/main/java/com/zj365/health/act/familyhealth/FamilyHealthAct.kt
@@ -94,7 +94,7 @@ class FamilyHealthAct : BaseListAct() {
RouteManager.goAct(ARouterUrl.FAMILY_GUARDIAN_LIST_ACT)
}
R.id.tv_current_time ->{
- RouteManager.goAct(ARouterUrl.FAMILY_HEALTH_REAL_TIME_ACT)
+ // RouteManager.goAct(ARouterUrl.FAMILY_HEALTH_REAL_TIME_ACT)
}
R.id.tv_watch ->{
diff --git a/health/src/main/java/com/zj365/health/act/healthcode/HealthBodyInquiryAct.kt b/health/src/main/java/com/zj365/health/act/healthcode/HealthBodyInquiryAct.kt
new file mode 100644
index 0000000..b094c4d
--- /dev/null
+++ b/health/src/main/java/com/zj365/health/act/healthcode/HealthBodyInquiryAct.kt
@@ -0,0 +1,16 @@
+package com.zj365.health.act.healthcode
+
+import android.view.View
+import com.xty.base.act.BaseVmAct
+import com.xty.base.vm.BaseVm
+import com.zj365.health.databinding.ActHealthBodyInquiryBinding
+
+class HealthBodyInquiryAct : BaseVmAct() {
+
+ val binding by lazy { ActHealthBodyInquiryBinding.inflate(layoutInflater) }
+
+ override fun liveObserver() {
+ }
+
+ override fun setLayout() = binding.root
+}
\ No newline at end of file
diff --git a/health/src/main/java/com/zj365/health/act/healthcode/HealthCodeMainAct.kt b/health/src/main/java/com/zj365/health/act/healthcode/HealthCodeMainAct.kt
new file mode 100644
index 0000000..9e305a7
--- /dev/null
+++ b/health/src/main/java/com/zj365/health/act/healthcode/HealthCodeMainAct.kt
@@ -0,0 +1,14 @@
+package com.zj365.health.act.healthcode
+
+import android.view.View
+import com.xty.base.act.BaseVmAct
+import com.xty.base.vm.BaseVm
+import com.zj365.health.databinding.ActHealthCodeMainBinding
+
+class HealthCodeMainAct : BaseVmAct() {
+ val binding by lazy { ActHealthCodeMainBinding.inflate(layoutInflater) }
+ override fun liveObserver() {
+ }
+
+ override fun setLayout() = binding.root
+}
\ No newline at end of file
diff --git a/health/src/main/java/com/zj365/health/act/healthrecord/HealthRecordMainAct.kt b/health/src/main/java/com/zj365/health/act/healthrecord/HealthRecordMainAct.kt
new file mode 100644
index 0000000..13b92df
--- /dev/null
+++ b/health/src/main/java/com/zj365/health/act/healthrecord/HealthRecordMainAct.kt
@@ -0,0 +1,37 @@
+package com.zj365.health.act.healthrecord
+
+import android.view.View
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.xty.base.act.BaseVmAct
+import com.xty.base.vm.BaseVm
+import com.zj365.health.adapter.familyhealth.HealthFamilyTargetAdapter
+import com.zj365.health.databinding.ActHealthRecordMainBinding
+
+class HealthRecordMainAct : BaseVmAct() {
+
+ val binding by lazy { ActHealthRecordMainBinding.inflate(layoutInflater) }
+
+ val mAdapter by lazy { HealthFamilyTargetAdapter() }
+
+ override fun liveObserver() {
+
+ }
+
+ override fun initView() {
+ super.initView()
+ statusBar(binding.title.mView)
+ binding.title.mTvTitle.text ="健康档案"
+ binding.title.mIvBack.setOnClickListener {
+ finish()
+ }
+
+ initAdapter()
+ }
+
+ fun initAdapter (){
+ binding.recycler.adapter = mAdapter
+ binding.recycler.layoutManager = LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,false)
+ }
+
+ override fun setLayout() = binding.root
+}
\ No newline at end of file
diff --git a/health/src/main/java/com/zj365/health/act/healthrecord/HealthRecordsListAct.kt b/health/src/main/java/com/zj365/health/act/healthrecord/HealthRecordsListAct.kt
new file mode 100644
index 0000000..bfb6bff
--- /dev/null
+++ b/health/src/main/java/com/zj365/health/act/healthrecord/HealthRecordsListAct.kt
@@ -0,0 +1,31 @@
+package com.zj365.health.act.healthrecord
+
+import android.view.View
+import com.xty.base.act.BaseListAct
+import com.xty.base.vm.BaseVm
+import com.zj365.health.databinding.ActHealthRecordBinding
+import com.zj365.health.databinding.ActHealthRecordsListBinding
+
+class HealthRecordsListAct : BaseListAct() {
+
+ val binding by lazy { ActHealthRecordsListBinding.inflate(layoutInflater) }
+ override fun initAdapter() {
+ }
+
+ override fun loadData() {
+ }
+
+ override fun initView() {
+ super.initView()
+ statusBar(binding.title.mView)
+ binding.title.mTvTitle.text = "报告记录"
+ binding.title.mIvBack.setOnClickListener {
+ finish()
+ }
+ }
+
+ override fun liveObserver() {
+ }
+
+ override fun setLayout() = binding.root
+}
\ No newline at end of file
diff --git a/health/src/main/java/com/zj365/health/act/healthrecord/UploadHealthRecordAct.kt b/health/src/main/java/com/zj365/health/act/healthrecord/UploadHealthRecordAct.kt
new file mode 100644
index 0000000..5330889
--- /dev/null
+++ b/health/src/main/java/com/zj365/health/act/healthrecord/UploadHealthRecordAct.kt
@@ -0,0 +1,26 @@
+package com.zj365.health.act.healthrecord
+
+import android.view.View
+import com.xty.base.act.BaseListAct
+import com.xty.base.act.BaseVmAct
+import com.xty.base.vm.BaseVm
+import com.zj365.health.databinding.ActUploadHealthRecordBinding
+
+class UploadHealthRecordAct : BaseVmAct() {
+
+ val binding by lazy { ActUploadHealthRecordBinding.inflate(layoutInflater) }
+
+ override fun liveObserver() {
+ }
+
+ override fun initView() {
+ super.initView()
+ statusBar(binding.title.mView)
+ binding.title.mTvTitle.text = "上传报告"
+ binding.title.mIvBack.setOnClickListener {
+ finish()
+ }
+ }
+
+ override fun setLayout() = binding.root
+}
\ No newline at end of file
diff --git a/health/src/main/java/com/zj365/health/vm/ComparePageDataVm.kt b/health/src/main/java/com/zj365/health/vm/ComparePageDataVm.kt
new file mode 100644
index 0000000..56187e4
--- /dev/null
+++ b/health/src/main/java/com/zj365/health/vm/ComparePageDataVm.kt
@@ -0,0 +1,20 @@
+package com.zj365.health.vm
+
+import androidx.lifecycle.MutableLiveData
+import com.xty.base.vm.BaseVm
+import com.xty.network.model.DeviceFunctionBean
+import com.xty.network.model.RespBody
+import org.json.JSONObject
+
+class ComparePageDataVm :BaseVm() {
+
+ val functionLiveData by lazy { MutableLiveData>>() }
+ fun getDeviceFunctionList(id:String){
+ startHttp {
+ val json = JSONObject()
+ json.put("id", id)
+ val body = apiInterface().getDeviceFunctionList(retrofits.getRequestBody(json.toString()))
+ body.getCodeStatus(functionLiveData, nowData)
+ }
+ }
+}
\ No newline at end of file
diff --git a/health/src/main/java/com/zj365/health/vm/HealthMainVm.kt b/health/src/main/java/com/zj365/health/vm/HealthMainVm.kt
new file mode 100644
index 0000000..c6c5507
--- /dev/null
+++ b/health/src/main/java/com/zj365/health/vm/HealthMainVm.kt
@@ -0,0 +1,20 @@
+package com.zj365.health.vm
+
+import androidx.lifecycle.MutableLiveData
+import com.xty.base.vm.BaseVm
+import com.xty.network.model.DeviceFunctionBean
+import com.xty.network.model.RespBody
+import org.json.JSONObject
+
+class HealthMainVm : BaseVm() {
+
+ val functionLiveData by lazy { MutableLiveData>>() }
+ fun getDeviceFunctionList(id:String){
+ startHttp {
+ val json = JSONObject()
+ json.put("id", id)
+ val body = apiInterface().getDeviceFunctionList(retrofits.getRequestBody(json.toString()))
+ body.getCodeStatus(functionLiveData, nowData)
+ }
+ }
+}
\ No newline at end of file
diff --git a/health/src/main/java/com/zj365/health/vm/ReportVm.kt b/health/src/main/java/com/zj365/health/vm/ReportVm.kt
index 5d7aa53..89f943d 100644
--- a/health/src/main/java/com/zj365/health/vm/ReportVm.kt
+++ b/health/src/main/java/com/zj365/health/vm/ReportVm.kt
@@ -233,4 +233,14 @@ class ReportVm : BaseVm() {
null
}
}
+
+ val functionLiveData by lazy { MutableLiveData>>() }
+ fun getDeviceFunctionList(id:String){
+ startHttp {
+ val json = JSONObject()
+ json.put("id", id)
+ val body = apiInterface().getDeviceFunctionList(retrofits.getRequestBody(json.toString()))
+ body.getCodeStatus(functionLiveData, nowData)
+ }
+ }
}
\ No newline at end of file
diff --git a/health/src/main/res/layout/act_health_body_inquiry.xml b/health/src/main/res/layout/act_health_body_inquiry.xml
new file mode 100644
index 0000000..654cdf8
--- /dev/null
+++ b/health/src/main/res/layout/act_health_body_inquiry.xml
@@ -0,0 +1,184 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/health/src/main/res/layout/act_health_code_main.xml b/health/src/main/res/layout/act_health_code_main.xml
new file mode 100644
index 0000000..d2ce8ee
--- /dev/null
+++ b/health/src/main/res/layout/act_health_code_main.xml
@@ -0,0 +1,567 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/health/src/main/res/layout/act_health_record_main.xml b/health/src/main/res/layout/act_health_record_main.xml
new file mode 100644
index 0000000..4b616da
--- /dev/null
+++ b/health/src/main/res/layout/act_health_record_main.xml
@@ -0,0 +1,578 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/health/src/main/res/layout/act_health_records_list.xml b/health/src/main/res/layout/act_health_records_list.xml
new file mode 100644
index 0000000..9ced7ec
--- /dev/null
+++ b/health/src/main/res/layout/act_health_records_list.xml
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/health/src/main/res/layout/act_upload_health_record.xml b/health/src/main/res/layout/act_upload_health_record.xml
new file mode 100644
index 0000000..af798f5
--- /dev/null
+++ b/health/src/main/res/layout/act_upload_health_record.xml
@@ -0,0 +1,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/health/src/main/res/layout/layout_health_record_test.xml b/health/src/main/res/layout/layout_health_record_test.xml
new file mode 100644
index 0000000..dc2043e
--- /dev/null
+++ b/health/src/main/res/layout/layout_health_record_test.xml
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/health/src/main/res/mipmap-xxhdpi/bg_health_record_test.png b/health/src/main/res/mipmap-xxhdpi/bg_health_record_test.png
new file mode 100644
index 0000000..ae96604
Binary files /dev/null and b/health/src/main/res/mipmap-xxhdpi/bg_health_record_test.png differ
diff --git a/health/src/main/res/mipmap-xxhdpi/bg_person_body.png b/health/src/main/res/mipmap-xxhdpi/bg_person_body.png
new file mode 100644
index 0000000..ae4d4c5
Binary files /dev/null and b/health/src/main/res/mipmap-xxhdpi/bg_person_body.png differ
diff --git a/health/src/main/res/mipmap-xxhdpi/icon_health_week_record.png b/health/src/main/res/mipmap-xxhdpi/icon_health_week_record.png
new file mode 100644
index 0000000..e08462c
Binary files /dev/null and b/health/src/main/res/mipmap-xxhdpi/icon_health_week_record.png differ
diff --git a/health/src/main/res/mipmap-xxhdpi/icon_inquiry_record.png b/health/src/main/res/mipmap-xxhdpi/icon_inquiry_record.png
new file mode 100644
index 0000000..e13e04b
Binary files /dev/null and b/health/src/main/res/mipmap-xxhdpi/icon_inquiry_record.png differ
diff --git a/health/src/main/res/mipmap-xxhdpi/icon_report_record.png b/health/src/main/res/mipmap-xxhdpi/icon_report_record.png
new file mode 100644
index 0000000..dfab20a
Binary files /dev/null and b/health/src/main/res/mipmap-xxhdpi/icon_report_record.png differ
diff --git a/health/src/main/res/mipmap-xxhdpi/icon_video_inquriy.png b/health/src/main/res/mipmap-xxhdpi/icon_video_inquriy.png
new file mode 100644
index 0000000..d7ba063
Binary files /dev/null and b/health/src/main/res/mipmap-xxhdpi/icon_video_inquriy.png differ
diff --git a/mine/src/main/java/com/zj365/mime/act/DevInfoAct.kt b/mine/src/main/java/com/zj365/mime/act/DevInfoAct.kt
index 991f1ee..5c74318 100644
--- a/mine/src/main/java/com/zj365/mime/act/DevInfoAct.kt
+++ b/mine/src/main/java/com/zj365/mime/act/DevInfoAct.kt
@@ -23,6 +23,7 @@ import com.xty.common.bracelet.YCBBlueConnectHelper
import com.xty.common.event.BlueToothConnectEvent
import com.xty.common.event.MyInfoEvent
import com.xty.common.event.ReChangeEvent
+import com.xty.common.setImage
import com.xty.common.util.PermissionUtils
import com.xty.network.MyRetrofit
import com.xty.network.model.SettingBean
@@ -161,38 +162,26 @@ class DevInfoAct : BaseVmAct() {
}
mViewModel.deviceInfo.observe(this) {
-
- binding.mNickName.text = "设备名称:${it.data.watchName?:""}"
- binding.mNum.text = "设备编码:${it.data.bluetooth?:""}"
- binding.mCode.text = "物联网卡:${it.data.iccid?:""}"
- binding.mActiveCode.text = "流量到期:${it.data.flowExpireTime?:""}"
- binding.mActiveCode.visibility = View.VISIBLE
-
- setDevicePic(it.data.deviceType, binding.ivDevice)
- }
- }
-
-
- private fun setDevicePic(type: String?, imageView: ImageView) {
- if (type == null) {
- return
- }
- when (type) {
- "U32" -> {
- imageView.setImageResource(R.mipmap.ic_watch_u32_big)
+ if(it.data.bindType == 1){
+ binding.mNickName.text = "设备名称:${it.data.watchName?:""}"
+ binding.mNum.text = "设备编码:${it.data.bluetooth?:""}"
+ binding.mCode.text = "物联网卡:${it.data.iccid?:""}"
+ binding.mActiveCode.text = "流量到期:${it.data.flowExpireTime?:""}"
+ binding.mActiveCode.visibility = View.VISIBLE
+ binding.ivDevice.setImage(this,it.data.deviceImageUrl)
+
+ }else{
+ binding.mNickName.text = "设备名称:${it.data.watchName?:""}"
+ binding.mNum.text = "设备编码:${it.data.bluetooth?:""}"
+ binding.mCode.text = "设备激活码:${it.data.activationCode?:""}"
+ binding.mActiveCode.text = "设备激活码:${it.data.activationCode?:""}"
+ binding.mActiveCode.visibility = View.GONE
+ binding.tvRecharge.visibility = View.GONE
+ binding.tvDeviceSetting.visibility = View.GONE
+ binding.ivDevice.setImage(this,it.data.deviceImageUrl)
}
- "A3" -> {
- imageView.setImageResource(R.mipmap.ic_watch_a3_big)
- }
- "X1" -> {
- imageView.setImageResource(R.mipmap.ic_watch_x1_big)
- }
-
- "X2" -> {
- imageView.setImageResource(R.mipmap.ic_watch_x2_big)
- }
}
}
diff --git a/mine/src/main/java/com/zj365/mime/weight/FactorySettingDialog.kt b/mine/src/main/java/com/zj365/mime/weight/FactorySettingDialog.kt
index 035926a..c60a5aa 100644
--- a/mine/src/main/java/com/zj365/mime/weight/FactorySettingDialog.kt
+++ b/mine/src/main/java/com/zj365/mime/weight/FactorySettingDialog.kt
@@ -25,4 +25,10 @@ class FactorySettingDialog(context: Context,var title:String,var confirm:()->Uni
fun changeTextSetting() {
binding.mTitle.gravity=Gravity.LEFT
}
+
+ fun isShow(){
+ if (!isShowing) {
+ show()
+ }
+ }
}
\ No newline at end of file
diff --git a/network/build.gradle b/network/build.gradle
index cd010f9..f6bfc5d 100644
--- a/network/build.gradle
+++ b/network/build.gradle
@@ -1,6 +1,7 @@
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
+apply plugin: 'kotlin-parcelize'
def androidId = rootProject.ext.defaultSetting
def rely = rootProject.ext.relyOn
@@ -39,6 +40,7 @@ android {
targetCompatibility JavaVersion.VERSION_1_8
}
+
}
dependencies {
diff --git a/network/src/main/java/com/xty/network/ApiInterface.kt b/network/src/main/java/com/xty/network/ApiInterface.kt
index bb3da98..3d812fb 100644
--- a/network/src/main/java/com/xty/network/ApiInterface.kt
+++ b/network/src/main/java/com/xty/network/ApiInterface.kt
@@ -471,6 +471,9 @@ interface ApiInterface {
@POST("customer/index")
suspend fun getMainInfo(@Body rb: RequestBody): RespBody
+ @POST("customer/user/getDeviceFuncList")
+ suspend fun getDeviceFunctionList(@Body rb: RequestBody) :RespBody>
+
/**
* 首页小贴士
*/
@@ -903,6 +906,11 @@ interface ApiInterface {
*/
@GET("customer/analyse/coupeNew")
suspend fun getScinceList(): RespBody>
+ /**
+ * 健康科普详情
+ */
+ @GET("customer/analyse/coupeDetail")
+ suspend fun getScinceDetail(@Query("id") id: String):RespBody
/**
* 获取首页布局
diff --git a/network/src/main/java/com/xty/network/model/DeviceBean.kt b/network/src/main/java/com/xty/network/model/DeviceBean.kt
index 1d129ab..c1d2dad 100644
--- a/network/src/main/java/com/xty/network/model/DeviceBean.kt
+++ b/network/src/main/java/com/xty/network/model/DeviceBean.kt
@@ -1,3 +1,3 @@
package com.xty.network.model
-data class DeviceBean(val imageUrl:String,val watchTypeName:String,val watchType:Int,val deviceType:String)
+data class DeviceBean(val imageUrl:String,val watchTypeName:String,val watchType:Int,val deviceType:String,val bindType:Int)
diff --git a/network/src/main/java/com/xty/network/model/DeviceFunctionBean.kt b/network/src/main/java/com/xty/network/model/DeviceFunctionBean.kt
new file mode 100644
index 0000000..87546a0
--- /dev/null
+++ b/network/src/main/java/com/xty/network/model/DeviceFunctionBean.kt
@@ -0,0 +1,13 @@
+package com.xty.network.model
+
+import android.os.Parcelable
+import kotlinx.android.parcel.Parcelize
+
+
+@Parcelize
+data class DeviceFunctionBean(
+ val name:String, //功能名
+ val type:String, //功能类型
+ val status:Int //0,无,1,有
+
+): Parcelable
diff --git a/network/src/main/java/com/xty/network/model/HealthMonitoringListBean.kt b/network/src/main/java/com/xty/network/model/HealthMonitoringListBean.kt
index cc4d37d..13347f2 100644
--- a/network/src/main/java/com/xty/network/model/HealthMonitoringListBean.kt
+++ b/network/src/main/java/com/xty/network/model/HealthMonitoringListBean.kt
@@ -11,6 +11,7 @@ data class HealthMonitoringListBean(
var buttonBg: Int,
var buttonIcon: Int,
var type: Int,//0.心率、1.血氧、2.呼吸率、3.体温、4.步数、5.睡眠、6.血压、7.血糖、8.心电、9.尿酸、10.血脂。
+ var functionType:String, //功能code
var sex: String = "",//性别1:男,2:女
var calorie: String? = ""
)
\ No newline at end of file
diff --git a/network/src/main/java/com/xty/network/model/UserEquipmentInformationizationBean.kt b/network/src/main/java/com/xty/network/model/UserEquipmentInformationizationBean.kt
index b7ab7cf..7111a4f 100644
--- a/network/src/main/java/com/xty/network/model/UserEquipmentInformationizationBean.kt
+++ b/network/src/main/java/com/xty/network/model/UserEquipmentInformationizationBean.kt
@@ -15,6 +15,8 @@ data class UserEquipmentInformationizationBean(
val power: String,//电量
val linkStatus: String,//连接状态
val iccid:String,//物联网卡
+ val bindType:Int, //1,中健4G,2,鹏升4G
+ val deviceImageUrl:String,//手表图片
val flowExpireTime:String,//流量到期时间
val deviceTotal: DeviceTotal,//物联网设备统计
val adorn: Adorn,//佩戴时长对象
diff --git a/server/src/main/java/com/xty/server/act/ScienceDetailAct.kt b/server/src/main/java/com/xty/server/act/ScienceDetailAct.kt
index af978cc..4054630 100644
--- a/server/src/main/java/com/xty/server/act/ScienceDetailAct.kt
+++ b/server/src/main/java/com/xty/server/act/ScienceDetailAct.kt
@@ -19,12 +19,19 @@ class ScienceDetailAct:BaseVmAct() {
val binding by lazy{ActScienceDetailBinding.inflate(layoutInflater)}
var bean: ScienceBean?=null
var job: Job?=null
+
+ var id:String? = null
override fun setLayout()=binding.root
override fun initData() {
super.initData()
isDarkBar=true
intent.extras?.let {
- bean=intent.extras!!.getSerializable("bean") as ScienceBean
+ if(it.containsKey("bean")){
+ bean=intent.extras!!.getSerializable("bean") as ScienceBean
+
+ }else if(it.containsKey("id")){
+ id = it.getString("id")
+ }
}
}
@@ -42,6 +49,10 @@ class ScienceDetailAct:BaseVmAct() {
binding.mRich.loadDataWithBaseURL(null,bean!!.content,"text/html", "utf-8", null);
}
+
+ id?.let {
+ mViewModel.getDetailForId(it)
+ }
}
private fun startDelay() {
@@ -59,5 +70,15 @@ class ScienceDetailAct:BaseVmAct() {
}
override fun liveObserver() {
+
+ mViewModel.detailLiveData.observe(this){
+ it.data.let {
+ binding.mTvSubTitle.text = it.name
+ binding.mTvOrgName.text = it.orgName
+ binding.mTvReleaseTime.text = it.time
+ WebViewOrigin().initWebSettings(this,binding.mRich)
+ binding.mRich.loadDataWithBaseURL(null,it.content,"text/html", "utf-8", null);
+ }
+ }
}
}
\ No newline at end of file
diff --git a/server/src/main/java/com/xty/server/vm/ScienceDetailVm.kt b/server/src/main/java/com/xty/server/vm/ScienceDetailVm.kt
index 34cfbde..6269c5d 100644
--- a/server/src/main/java/com/xty/server/vm/ScienceDetailVm.kt
+++ b/server/src/main/java/com/xty/server/vm/ScienceDetailVm.kt
@@ -3,13 +3,26 @@ package com.xty.server.vm
import androidx.lifecycle.MutableLiveData
import com.xty.base.vm.BaseVm
import com.xty.network.model.RespBody
+import com.xty.network.model.ScienceBean
+import org.json.JSONObject
class ScienceDetailVm:BaseVm() {
val anyLive by lazy{MutableLiveData>()}
+
+ val detailLiveData by lazy { MutableLiveData>() }
fun startSetScore(){
startHttp {
var body=apiInterface().saveScore()
body.getCodeStatus(anyLive,nowData)
}
}
+
+ fun getDetailForId(id:String){
+
+ startHttp {
+ var body=apiInterface().getScinceDetail(id)
+ body.getCodeStatus(detailLiveData,nowData)
+
+ }
+ }
}
\ No newline at end of file