diff --git a/app/build.gradle b/app/build.gradle
index 4c6cdec..56cd926 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -88,9 +88,6 @@ android {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
-/* kotlinOptions {
- jvmTarget = '1.8'
- }*/
viewBinding {
enabled = true
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 37a09cd..873166d 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -129,6 +129,9 @@
android:name=".activity.InfoSimpleAct"
android:launchMode="singleTop"
android:screenOrientation="portrait" />
+
(){
+
+ val binding by lazy { ActDataListBinding.inflate(layoutInflater) }
+
+ val adapterSince by lazy { ScienceAdapter() }
+
+ override fun initView() {
+ super.initView()
+ statusBar(binding.title.mView)
+ binding.title.mTvTitle.text ="健康科普"
+ binding.title.mIvBack.setOnClickListener {
+ finish()
+ }
+ }
+
+ override fun initAdapter() {
+ binding.mRecycle.layoutManager = LinearLayoutManager(this)
+ binding.mRecycle.adapter = adapterSince
+ adapterSince.setOnItemClickListener { adapter, view, position ->
+ bundle.clear()
+ var bean = adapter.getItem(position) as ScienceBean
+ bundle.putSerializable("bean", bean)
+ onEventObject(this, UmengEventId.HealthScience, "${bean.name}")
+ RouteManager.goAct(ARouterUrl.SCIENCE_DETAIL, bundle)
+
+ }
+ }
+
+ override fun loadData() {
+
+ mViewModel.getScinceList()
+ }
+
+ override fun liveObserver() {
+ mViewModel.scinceLive.observe(this) {
+ adapterSince.setNewInstance(it.data)
+ }
+ }
+
+ override fun setLayout() = binding.root
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/zj365/dc/activity/InfoSimpleAct.kt b/app/src/main/java/com/zj365/dc/activity/InfoSimpleAct.kt
index 57a937c..a324411 100644
--- a/app/src/main/java/com/zj365/dc/activity/InfoSimpleAct.kt
+++ b/app/src/main/java/com/zj365/dc/activity/InfoSimpleAct.kt
@@ -85,51 +85,24 @@ class InfoSimpleAct : BaseVmAct() {
binding.title.mTvTitle.text = getString(R.string.base_info)
binding.title.mIvBack.setOnClickListener { finish() }
binding.mImage.setOnClickListener { PictureUtils.openCamera(this) }
-// val calendaryear = Calendar.getInstance()
-// calendaryear.add(Calendar.YEAR, -14)
timeSelect.startDate.set(1922, 0, 1)
-// timeSelect.endDate = calendaryear
binding.llBirthday.setOnClickListener {
RxKeyboardTool.hideSoftInput(this)
timeSelect.selectTime(binding.mBirthday)
}
sexType = if (binding.checkSex.isChecked) 2 else 1
birthdayType = if (binding.checkBirthday.isChecked) 2 else 1
-// binding.mRadio.setOnCheckedChangeListener { group, checkedId ->
-// when(checkedId){
-// R.id.mRadio1->birthdayType=1
-// R.id.mRadio2->birthdayType=2
-//
-// }
-// }
binding.bindingTv.setOnClickListener {
isBinding = true
-// dialogChooseDevice.show()
turnToSaveBaseData()
}
-// binding.mGroup.setOnCheckedChangeListener { group, checkedId ->
-// when(checkedId){
-// R.id.mMale->sexType=1
-// R.id.mGirl->sexType=2
-// }
-// }
binding.mName.addTextChangedListener(textListener)
binding.mSubmit.setOnClickListener {
isBinding = false
turnToSaveBaseData()
- //跳转注册
-// var bean =SimpleInfoBean()
-// if( binding.mImage.tag!=null){
-// bean.avatar= binding.mImage.tag.toString()
-// }
-// bean.name=name
-// bean.sex=sexType
-// bundle.clear()
-// bundle.putSerializable("bean",bean)
-// RouteManager.goActRequest(ARouterUrl.REGIST_ACT,this,1000,bundle)
}
}
@@ -140,11 +113,6 @@ class InfoSimpleAct : BaseVmAct() {
val birthDay = binding.mBirthday.text.toString().trim()
val name = binding.mName.text.toString().trim()
-// if (name.isEmpty()) {
-// isBinding = false
-// ToastUtils.show(R.string.please_input_name)
-// return
-// }
if (TimeUtils.getAgeByBirth(birthDay) < 14) {
CommonToastUtils.showToast("需要年满14岁才可使用")
isBinding = false
diff --git a/app/src/main/java/com/zj365/dc/activity/LoginAct.kt b/app/src/main/java/com/zj365/dc/activity/LoginAct.kt
index fff069f..af5126c 100644
--- a/app/src/main/java/com/zj365/dc/activity/LoginAct.kt
+++ b/app/src/main/java/com/zj365/dc/activity/LoginAct.kt
@@ -21,11 +21,13 @@ import com.xty.base.dialog.AppUpdateDialog
import com.xty.common.*
import com.xty.common.arouter.ARouterUrl
import com.xty.common.arouter.RouteManager
+import com.xty.common.event.LoginOrRegisterEvent
import com.xty.common.event.WxLoginEvent
import com.xty.common.util.CommonToastUtils
import com.xty.network.model.WxInfoBean
import com.zj365.dc.databinding.ActLoginBinding
import com.zj365.dc.vm.LoginVm
+import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
import java.util.*
@@ -230,20 +232,6 @@ class LoginAct : BaseVmAct() {
}
})
-
- /*binding.mTvPswLogin.isSelected = true
- binding.mTvPswLogin.setOnClickListener {
- binding.mTvCodeLogin.isSelected = false
- it.isSelected = true
-
- }
- binding.mTvCodeLogin.setOnClickListener {
- binding.mTvPswLogin.isSelected = false
- it.isSelected = true
- binding.mRelPwd.visibility = View.GONE
- binding.mRelCode.visibility = View.VISIBLE
- getNowLoginStatus()
- }*/
}
//添加监听
@@ -277,19 +265,22 @@ class LoginAct : BaseVmAct() {
override fun liveObserver() {
mViewModel.mLogin.observe(this) {
loadingView.dismiss()
- initTab()
- mViewModel.getImUserSig("user_${it.data.id}")
+ // initTab()
+// mViewModel.getImUserSig("user_${it.data.id}")
+ // RouteManager.goAct(ARouterUrl.MAIN_ACT)
+ EventBus.getDefault().post(LoginOrRegisterEvent())
+ finish()
}
// mViewModel.loginWx.observe(this) {
// loadingView.dismiss()
// initTab()
// mViewModel.getImUserSig("user_${it.data}")
// }
- mViewModel.setLoginWxId.observe(this) {
+ /* mViewModel.setLoginWxId.observe(this) {
loadingView.dismiss()
initTab()
mViewModel.getImUserSig("user_${it}")
- }
+ }*/
mViewModel.getImUserSig.observe(this) {
Log.e("simon", "login"+it.data)
TUILogin.login(
diff --git a/app/src/main/java/com/zj365/dc/activity/RegisterAct.kt b/app/src/main/java/com/zj365/dc/activity/RegisterAct.kt
index 10b9891..8aa1c31 100644
--- a/app/src/main/java/com/zj365/dc/activity/RegisterAct.kt
+++ b/app/src/main/java/com/zj365/dc/activity/RegisterAct.kt
@@ -12,6 +12,7 @@ import androidx.core.content.ContextCompat
import androidx.lifecycle.MutableLiveData
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.tencent.qcloud.tuikit.tuichat.util.PermissionHelper
import com.xty.base.act.BaseVmAct
@@ -21,6 +22,7 @@ import com.xty.common.MyLinkedMovementMethod
import com.xty.common.TimeSelect
import com.xty.common.arouter.ARouterUrl
import com.xty.common.arouter.RouteManager
+import com.xty.common.event.LoginOrRegisterEvent
import com.xty.common.util.CommonToastUtils
import com.xty.common.xqr_code.XQRCodeAct
@@ -29,6 +31,7 @@ import com.zj365.dc.R
import com.zj365.dc.databinding.ActRegisterBinding
import com.zj365.dc.model.SimpleInfoBean
import com.zj365.dc.vm.RegisterVm
+import org.greenrobot.eventbus.EventBus
import java.util.*
/**
@@ -99,8 +102,6 @@ class RegisterAct : BaseVmAct() {
CommonToastUtils.showToast(R.string.please_agree_all)
return@setOnClickListener
}
- var organCode = ""
- var invitePhone = ""
val phone = binding.mAccount.text.toString().trim()
val code = binding.mCode.text.toString().trim()
@@ -108,22 +109,10 @@ class RegisterAct : BaseVmAct() {
mViewModel.register(
phone,
code,
- pwd,
- null,
- null,
- bean,
- invitePhone
+ pwd
)
}
binding.mPrivate.setOnClickListener {
- if (!isAgreement) {
- CommonToastUtils.showToast(R.string.please_agree_user)
- return@setOnClickListener
- }
- if (!isPrivacy) {
- CommonToastUtils.showToast(R.string.please_agree_prv)
- return@setOnClickListener
- }
it.isSelected = !it.isSelected
}
setPrv()
@@ -195,15 +184,13 @@ class RegisterAct : BaseVmAct() {
override fun liveObserver() {
mViewModel.registerVm.observe(this) {
CommonToastUtils.showSucceedToast("注册成功")
+ if (timer != null) {
+ timer!!.cancel()
+ timer = null
+ }
+ mViewModel.login(binding.mAccount.text.toString().trim(),binding.mPsw.text.toString().trim())
+ RxActivityTool.finishActivity(LoginAct::class.java)
- setResult(RESULT_OK)
- finish()
- val phone = binding.mAccount.text.toString().trim()
- val password = binding.mPsw.text.toString().trim()
- bundle.clear()
- bundle.putString("phone", phone)
- bundle.putString("password", password)
- RouteManager.goAct(ARouterUrl.INFO_SIMPLE, bundle)
}
mViewModel.codeLive.observe(this) {
timeStart()
@@ -212,6 +199,15 @@ class RegisterAct : BaseVmAct() {
isSelected = false
}
}
+
+ mViewModel.mLogin.observe(this){
+4
+ RouteManager.goAct(ARouterUrl.BASE_INFO_CHANGE)
+ EventBus.getDefault().post(LoginOrRegisterEvent())
+ this@RegisterAct.finish()
+
+ }
+
timeLive.observe(this) {
--timeNow
if (timeNow > 0) {
@@ -260,30 +256,7 @@ class RegisterAct : BaseVmAct() {
}
}
- 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()
- //设置扫描结果
- binding.jigouId.setText(result)
- } else {
- CommonToastUtils.showToast("扫码失败,请重试...")
- }
- } catch (e: Exception) {
- LogUtils.e("二维码扫描:$e")
- CommonToastUtils.showToast("请确认二维码是否正确!")
- }
- }
-
- XQRCode.RESULT_FAILED -> {
- LogUtils.d("扫描失败")
-
- }
- }*/
+ XQRCodeAct.QRCODE_AGREEMENT -> {
}
}
}
@@ -321,10 +294,21 @@ class RegisterAct : BaseVmAct() {
}
}
+ override fun onStop() {
+ super.onStop()
+ LogUtils.e("RegisterAct","onStop ${timer}")
+ if (timer != null) {
+ timer!!.cancel()
+ }
+ }
+
override fun onDestroy() {
super.onDestroy()
+ LogUtils.e("RegisterAct","onDestroy ${timer}")
+
if (timer != null) {
timer!!.cancel()
+ timer = null
}
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/zj365/dc/adapter/HomeContentLayoutAdapter.kt b/app/src/main/java/com/zj365/dc/adapter/HomeContentLayoutAdapter.kt
new file mode 100644
index 0000000..3527a88
--- /dev/null
+++ b/app/src/main/java/com/zj365/dc/adapter/HomeContentLayoutAdapter.kt
@@ -0,0 +1,17 @@
+package com.zj365.dc.adapter
+
+import android.content.Context
+import android.widget.ImageView
+import com.chad.library.adapter.base.viewholder.BaseViewHolder
+import com.xty.base.adapter.BaseAdapter
+import com.xty.common.setImage
+import com.xty.network.model.HomeLayoutBean
+import com.zj365.dc.R
+
+class HomeContentLayoutAdapter (context: Context)
+ : BaseAdapter(R.layout.item_home_content_layout){
+ override fun convert(holder: BaseViewHolder, item: HomeLayoutBean.HomeChildBean) {
+ holder.getView(R.id.img_content).setImage(context,item.imageUrl)
+ holder.setText(R.id.tv_content,item.name)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/zj365/dc/adapter/HomeTopLayoutAdapter.kt b/app/src/main/java/com/zj365/dc/adapter/HomeTopLayoutAdapter.kt
new file mode 100644
index 0000000..9c38f78
--- /dev/null
+++ b/app/src/main/java/com/zj365/dc/adapter/HomeTopLayoutAdapter.kt
@@ -0,0 +1,29 @@
+package com.zj365.dc.adapter
+
+import android.content.Context
+import android.util.DisplayMetrics
+import android.view.LayoutInflater
+import android.view.WindowManager
+import android.widget.ImageView
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.chad.library.adapter.base.viewholder.BaseViewHolder
+import com.xty.base.adapter.BaseAdapter
+import com.xty.common.LogUtils
+import com.xty.common.setImage
+import com.xty.network.model.HomeLayoutBean
+import com.zj365.dc.R
+
+class HomeTopLayoutAdapter(var mContext: Context): BaseAdapter(R.layout.item_home_top_layout){
+ override fun convert(holder: BaseViewHolder, item: HomeLayoutBean.HomeChildBean) {
+
+ var screenWidth = context.resources.displayMetrics.widthPixels
+ val layoutParam = holder.getView(R.id.root).layoutParams
+ layoutParam.width = screenWidth /4
+ holder.getView(R.id.root).layoutParams = layoutParam
+
+ holder.getView(R.id.img_top).setImage(context,item.imageUrl)
+ holder.setText(R.id.tv_top_name,item.name)
+ }
+
+}
\ No newline at end of file
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 f357bc9..c84cbf7 100644
--- a/app/src/main/java/com/zj365/dc/fragment/DynamicManagementFrag.kt
+++ b/app/src/main/java/com/zj365/dc/fragment/DynamicManagementFrag.kt
@@ -38,6 +38,8 @@ import com.xty.common.event.BlueToothConnectEvent
import com.xty.common.event.ChangeFamilyEvent
import com.xty.common.event.FamilyEvent
import com.xty.common.event.Health24HourStatusEvent
+import com.xty.common.event.LoginOrRegisterEvent
+import com.xty.common.event.LoginOutEvent
import com.xty.common.event.MyInfoEvent
import com.xty.common.event.WorkManagerEvent
import com.xty.common.marqueen.SimpleMF
@@ -1829,4 +1831,14 @@ class DynamicManagementFrag : BaseVmFrag() {
super.onDestroy()
tenJob?.cancel()
}
+
+ @Subscribe(threadMode = ThreadMode.MAIN)
+ fun LoginOrRegisterChange(event: LoginOrRegisterEvent){
+ request()
+ }
+
+ @Subscribe(threadMode = ThreadMode.MAIN)
+ fun loginOutChange(event: LoginOutEvent){
+
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/zj365/dc/fragment/HealthCustomFrag.kt b/app/src/main/java/com/zj365/dc/fragment/HealthCustomFrag.kt
deleted file mode 100644
index 8b0c265..0000000
--- a/app/src/main/java/com/zj365/dc/fragment/HealthCustomFrag.kt
+++ /dev/null
@@ -1,2077 +0,0 @@
-/*
-package com.zj365.dc.fragment
-
-import android.app.Activity.RESULT_OK
-import android.content.Intent
-import android.graphics.Typeface
-import android.graphics.drawable.Drawable
-import android.graphics.drawable.GradientDrawable
-import android.os.Build
-import android.provider.Settings
-import android.text.Spannable
-import android.text.SpannableString
-import android.view.View
-import android.view.ViewGroup
-import androidx.core.content.ContextCompat
-import androidx.core.view.ViewCompat
-import androidx.lifecycle.MutableLiveData
-import androidx.recyclerview.widget.LinearLayoutManager
-import androidx.recyclerview.widget.RecyclerView
-import cn.jpush.android.api.JPushInterface
-import com.shuyu.gsyvideoplayer.listener.VideoAllCallBack
-import com.tamsiree.rxkit.RxTimeTool
-import com.xty.base.fragment.BaseVmFrag
-import com.xty.base.utils.UserInfoDefin
-import com.xty.common.*
-import com.xty.common.app.MyApp
-import com.xty.common.arouter.ARouterUrl
-import com.xty.common.arouter.RouteManager
-import com.xty.common.bracelet.*
-import com.xty.common.event.*
-import com.xty.common.marqueen.SimpleMF
-import com.xty.common.services.MqTTService
-import com.xty.common.util.CommonToastUtils
-import com.xty.common.util.CommonUtils
-import com.xty.common.weight.CenterImageSpan
-import com.xty.common.work.MyWorkManger
-import com.zj365.mime.weight.NoticeSettingDialog
-import com.xty.network.MyRetrofit
-import com.xty.network.model.*
-import com.youth.banner.indicator.RoundLinesIndicator
-import com.youth.banner.listener.OnPageChangeListener
-import com.zj365.dc.databinding.FragHealthBinding
-import com.zj365.dc.vm.HealthVm
-import com.zj365.dc.weight.AgainSignDialog
-import com.zj365.health.adapter.FamilyAdapter
-import com.zj365.health.weight.DialogTip
-import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.Job
-import kotlinx.coroutines.delay
-import kotlinx.coroutines.launch
-import org.greenrobot.eventbus.Subscribe
-import org.greenrobot.eventbus.ThreadMode
-import org.json.JSONArray
-import org.json.JSONObject
-import java.text.SimpleDateFormat
-import kotlin.math.max
-import kotlin.math.min
-
-*/
-/**
- * 健康
-
-*//*
-
-
-class HealthCustomFrag : BaseVmFrag() {
- val binding by lazy { FragHealthBinding.inflate(layoutInflater) }
-
- //重签名
- private val signDialog by lazy {
- AgainSignDialog(requireContext(), {
- RouteManager.goAct(ARouterUrl.LOGIN_ACT)
- requireActivity().finish()
-
- }) {
- RouteManager.goAct(ARouterUrl.AGAIN_SIGN)
- }
- }
- var canGoto24Healthresult: Boolean = true
-
- //家人列表适配器
- private val mFamilyAdapter by lazy { FamilyAdapter() }
-
- private val mHealthAdapter by lazy { HealthAdapter(requireContext()) }
-
- private val mBannerAdapter by lazy { BannerCustomAdapter(requireContext()) }
-
- private var showIdInfo = "" //需要显示的信息的id
- override fun setViewModel() = HealthVm()
-
-*/
-/**----------------*//*
-
-
- val tenLive by lazy { MutableLiveData() }
- var tenJob: Job? = null
-
- val getDeviceInfoLive by lazy { MutableLiveData() }
- var getDeviceInfoJob: Job? = null
- var isRefresh = true
-
- var reportBean: ReportBean? = null//24小时日报数据
-
- private val dialogBind by lazy {
- DialogTip(requireContext(), "需绑定安瑜健康手表,才能查看","去绑定") {
- RouteManager.goAct(ARouterUrl.DEVICE_CHOICE)
- }
- }
-
- override fun setLayout(): View = binding.root
- override fun initView() {
- super.initView()
-
- statusBar(binding.statusBar)
- val wic =
- ViewCompat.getWindowInsetsController(requireActivity().window.decorView)
-
- if (wic != null) {
- // true表示Light Mode,状态栏字体呈黑色,反之呈白色
- wic.setAppearanceLightStatusBars(false);
- }
- initFamilyAdapter()
- request()
- refresh()
-
- binding.mBanner.addBannerLifecycleObserver(this)
- .setAdapter(mBannerAdapter)
- .setIndicator(RoundLinesIndicator(context))
- .setIndicatorSelectedWidth(dp2px(15))
- .addOnPageChangeListener(onPageChangeListener)
-
- mBannerAdapter.setOnBannerListener { data, position ->
- var bannerBean = data as BannerBean
- onEventObject(
- requireContext(),
- UmengEventId.Banner,
- "type:${bannerBean.bannerType}; 标题:${bannerBean.title}"
- )
- when (bannerBean.bannerType) {
- 1 -> {//图片
-
- }
-
- 5 -> { //内部跳转
- bundle.clear()
- bundle.putString("title", bannerBean.title)
- bundle.putString("url", bannerBean.linkAddress)
- RouteManager.goAct(ARouterUrl.WEB_ACT, bundle)
- }
-
- 10 -> {//web 跳转
- bundle.clear()
- bundle.putString("title", bannerBean.title)
- bundle.putString("url", bannerBean.linkAddress)
- RouteManager.goAct(ARouterUrl.WEB_ACT, bundle)
- }
-// 15 -> {//视频(如果是视频的话收不到该事件)
-// if (binding.mBanner.adapter.viewHolder imCards VideoHolder) {
-// val holder = binding.mBanner.adapter.viewHolder as VideoHolder
-// var player = holder.player
-// player.onPrepared()
-// }
-// }
- }
- }
-
- binding.mOrganView.mGridView.adapter = mHealthAdapter
- binding.mOrganView.mGridView.setOnItemClickListener { parent, view, position, id ->
- onEventObject(requireContext(), UmengEventId.HealthMonitor, pageNames[position])
- when (val index = pageIndexs[position]) {
- 6 -> { //血糖
- mHealthAdapter.xtangInfo?.apply {
-// if (model == 0) {
-// bundle.clear()
-// bundle.putBoolean("isOpen", false)
-// if (showIdInfo.isNullOrEmpty()) {//给自己开通
-// bundle.putString("id", CommonUtils.getMyUserId())
-// } else {//给他人开通
-// bundle.putString("id", showIdInfo)
-// }
-//
-// RouteManager.goAct(ARouterUrl.XT_OPEN, bundle)
-// } else {
-// goPage(index)
-// }
- goPage(index)
- }
- }
- 7 -> {//心电
- if (MMkvHelper.getInt(Const.Watch_Device_Type) == Const.Companion.WatchDevice.LightA3.ordinal) {//4G手表
- CommonToastUtils.showToast("尊敬的用户您好,血脂功能暂未开放,敬请期待哦~")
- } else {
- if (showIdInfo.isEmpty()) {
- goPage(index)
- } else {
- bundle.clear()
- bundle.putString("id", showIdInfo)
- RouteManager.goAct(ARouterUrl.XD_HISTORY, bundle)
- }
- }
- }
- -1 -> {//步数
-
- mViewModel.allData.value?.apply {
-// if (data.adorn.wearCount <= 3) {
-// ToastUtils.show("尊敬的用户您好,您正处于3天建模期,请坚持佩戴")
-// return@setOnItemClickListener
-// }
- bundle.clear()
- bundle.putInt("status", data.adorn.health + 1)
- bundle.putInt("type", 1)
- if (showIdInfo.isNullOrEmpty()) {
- bundle.putString("userId", CommonUtils.getMyUserId())
- } else showIdInfo?.let {
- bundle.putString("userId", it)
- }
- RouteManager.goAct(ARouterUrl.RANK_LIST, bundle)
- }
- }
- else -> {
- goPage(index)
- }
- }
- }
-
- setOnClickListener()
- updateWarningStatus()
-
- }
-
- private fun updateWarningStatus() {
- val position = mFamilyAdapter.position
- if (position == 0 || position == -1) {
- if (notifyStatus == 0) {
- //未读
- binding.mCom.llWarning.visibility = View.VISIBLE
- } else {
- //已读
- binding.mCom.llWarning.visibility = View.GONE
- }
- } else {
- binding.mCom.llWarning.visibility = View.GONE
- }
- }
-
-*/
-/**
- *
- * -1:步数 0:心率 1:血氧 2:呼吸率 3:体温 4:睡眠 5:血压 6:血糖 7:心电|血脂*//*
-
-
-
- private val pageIndexs = arrayOf(
- 0, 1, 2, 3, -1, 4, 5, 6, 7
- )
-
- private val pageNames = arrayOf(
- "心率", "血氧", "呼吸率", "体温", "步数", "睡眠", "血压", "血糖", "心电|血脂"
- )
-
- private var onPageChangeListener = object : OnPageChangeListener {
- override fun onPageScrolled(
- position: Int,
- positionOffset: Float,
- positionOffsetPixels: Int
- ) {
- }
-
- override fun onPageSelected(position: Int) {
- var viewHolder = binding.mBanner.adapter.viewHolder
- if (viewHolder is VideoHolder) {
- var player = viewHolder.player
- player.setVideoAllCallBack(object : VideoAllCallBack {
- override fun onStartPrepared(url: String?, vararg objects: Any?) {
- }
-
- override fun onPrepared(url: String?, vararg objects: Any?) {
- }
-
- override fun onClickStartIcon(url: String?, vararg objects: Any?) {
- binding.mBanner.stop()
- binding.mBanner.isAutoLoop(false)
- }
-
- override fun onClickStartError(url: String?, vararg objects: Any?) {
- }
-
- override fun onClickStop(url: String?, vararg objects: Any?) {
- }
-
- override fun onClickStopFullscreen(url: String?, vararg objects: Any?) {
- }
-
- override fun onClickResume(url: String?, vararg objects: Any?) {
- }
-
- override fun onClickResumeFullscreen(
- url: String?,
- vararg objects: Any?
- ) {
- }
-
- override fun onClickSeekbar(url: String?, vararg objects: Any?) {
- }
-
- override fun onClickSeekbarFullscreen(
- url: String?,
- vararg objects: Any?
- ) {
- }
-
- override fun onAutoComplete(url: String?, vararg objects: Any?) {
- println("Test----------onAutoComplete url:$url;objects$objects")
- binding.mBanner.isAutoLoop(true)
- binding.mBanner.start()
- }
-
- override fun onEnterFullscreen(url: String?, vararg objects: Any?) {
- }
-
- override fun onQuitFullscreen(url: String?, vararg objects: Any?) {
- }
-
- override fun onQuitSmallWidget(url: String?, vararg objects: Any?) {
- }
-
- override fun onEnterSmallWidget(url: String?, vararg objects: Any?) {
- }
-
- override fun onTouchScreenSeekVolume(
- url: String?,
- vararg objects: Any?
- ) {
- }
-
- override fun onTouchScreenSeekPosition(
- url: String?,
- vararg objects: Any?
- ) {
- }
-
- override fun onTouchScreenSeekLight(
- url: String?,
- vararg objects: Any?
- ) {
- }
-
- override fun onPlayError(url: String?, vararg objects: Any?) {
- }
-
- override fun onClickStartThumb(url: String?, vararg objects: Any?) {
- }
-
- override fun onClickBlank(url: String?, vararg objects: Any?) {
- }
-
- override fun onClickBlankFullscreen(
- url: String?,
- vararg objects: Any?
- ) {
- }
-
- })
- }
- }
-
- override fun onPageScrollStateChanged(state: Int) {
- }
- }
-
- private fun setOnClickListener() {
- binding.mOrganView.mSub.setOnClickListener(onClickListener)
- binding.mChildView.mGuide1.setOnClickListener(onClickListener)
- binding.mChildView.mGuide2.setOnClickListener(onClickListener)
- binding.mChildView.mReport.setOnClickListener(onClickListener)
-// binding.mChildView.mWarn1.setOnClickListener(onClickListener)
-// binding.mChildView.mWarn2.setOnClickListener(onClickListener)
-// binding.mCom.mCard.setOnClickListener(onClickListener)
- binding.mChildView.mRelInterDk.setOnClickListener(onClickListener)
- binding.mChildView.mRelInterBD.setOnClickListener(onClickListener)
- binding.mChildView.mRelInterFamily.setOnClickListener(onClickListener)
- binding.mCom.mWearManager.setOnClickListener(onClickListener)
- binding.mCom.mBtnBind.setOnClickListener(onClickListener)
- binding.mCom.mMsg.setOnClickListener(onClickListener)
- binding.mCom.mMsgLayout.setOnClickListener(onClickListener)
- }
-
-
- private var onClickListener = View.OnClickListener {
- when (it.id) {
- R.id.mSub -> {//健康监测
- goPage(0)
- }
- //设备连接
- R.id.mWearManager -> {
- if (MMkvHelper.getInt(Const.Watch_Device_Type) == Const.Companion.WatchDevice.LightA3.ordinal) {//4G手表
- RouteManager.goAct(ARouterUrl.WEAR_MANAGER)
- } else if (YCBBlueConnectHelper.getBlueStatus(false)) {//蓝牙手表并已经连接
- RouteManager.goAct(ARouterUrl.DEVICE_SETTING)
- } else {
- if (blueTooth()) {
- bundle.clear()
- bundle.putBoolean("isBind", true)
- bundle.putString("devMac", CommonUtils.getBlueToothMac())
- RouteManager.goAct(ARouterUrl.DEVICE_CONNECT, bundle)
- } else {
- dialogBind.show()
- }
- }
- }
- //消息
- R.id.mMsg, R.id.mMsgLayout -> {
- RouteManager.goAct(ARouterUrl.WARNING_MSG)
- }
- //我的家人
- R.id.mRelInterFamily -> {
- onEventObject(requireContext(), UmengEventId.MyFamily, "首页")
- if (isBind()) {
- RouteManager.goAct(ARouterUrl.FAMILY)
- } else {
- CommonToastUtils.showToast(com.xty.common.R.string.please_bind_device)
- }
- }
- //榜单
- R.id.mRelInterBD -> {
- mViewModel.allData.value?.apply {
-
- if (data.adorn.activeWear <= 3) {
- CommonToastUtils.showToast("尊敬的用户您好,您正处于3天建模期,请坚持佩戴")
- return@OnClickListener
- }
- onEventObject(requireContext(), UmengEventId.HealthRank)
- bundle.clear()
- bundle.putInt("status", data.adorn.health + 1)
- bundle.putInt("type", 0)
- RouteManager.goAct(ARouterUrl.RANK_LIST, bundle)
- }
-
- }
- //打卡
- R.id.mRelInterDk -> {
- CommonUtils.getMyUserInfo()?.apply {
- onEventObject(requireContext(), UmengEventId.HealthDk)
- bundle.clear()
- bundle.putSerializable("user", this)
- RouteManager.goAct(ARouterUrl.DK_ACT, bundle)
- }
- }
- //评估
- R.id.mCard -> {
- if (!canGoto24Healthresult) {
- CommonToastUtils.showToast("数据不足或数据建模中,无法查看健康评估")
- return@OnClickListener
- }
- CommonUtils.getMyUserInfo()?.apply {
- bundle.clear()
- bundle.putString("id", showIdInfo)
- bundle.putString(
- "openId",
- if (openId.isNullOrEmpty()) "" else openId
- )
- bundle.putSerializable("reportBean", reportBean)
- RouteManager.goAct(ARouterUrl.HEALTH_24HOUR_REPORT, bundle)//新24小时
-// RouteManager.goAct(ARouterUrl.HEALTH_STATUS, bundle)//旧版健康分析改24小时分析接口调用
- }
-
- }
- //问卷
-// R.id.mWarn2 -> {
-// onEventObject(requireContext(), UmengEventId.HealthRisk)
-// bundle.clear()
-// bundle.putString("id", showIdInfo)
-// RouteManager.goAct(ARouterUrl.SUBMIT_REPORT, bundle)
-// }
-// //预警
-// R.id.mWarn1 -> {
-// mViewModel.allData.value?.apply {
-// data.apply {
-// if (adorn.wearCount > 29 && adorn.activeWear > 14) {
-// onEventObject(requireContext(), UmengEventId.Health30Day)
-// bundle.clear()
-// bundle.putString("id", showIdInfo)
-// bundle.putInt("page", 1)
-// RouteManager.goAct(ARouterUrl.WARRING, bundle)
-// } else {
-// if (showIdInfo.isEmpty()) {
-// onEventObject(
-// requireContext(),
-// UmengEventId.Health30Day,
-// "佩戴未满30天或活跃天数未满15天。"
-// )
-// ToastUtils.show("尊敬的用户您好,该功能需要佩戴30天且活跃佩戴15天查看,请坚持佩戴且每日同步数据!")
-// } else {
-// onEventObject(
-// requireContext(),
-// UmengEventId.Health30Day,
-// "关联用户处于7天建模中!"
-// )
-// ToastUtils.show("您关联的用户正处于7天建模中……")
-// }
-// }
-// }
-// }
-// }
- //健康日报
- R.id.mReport -> {
- onEventObject(requireContext(), UmengEventId.HealthReport, "首页")
- bundle.clear()
- bundle.putString("id", showIdInfo)
- RouteManager.goAct(ARouterUrl.HEALTH_REPORT, bundle)
- }
- //健康管家
- R.id.mGuide2 -> {
- if (showIdInfo.isNullOrEmpty()) {
- if (isBind()) {
- onEventObject(requireContext(), UmengEventId.HealthAdmin)
- CommonUtils.getMyUserInfo()?.apply {
- bundle.clear()
- bundle.putString("fromUserId", id.toString())
- RouteManager.goAct(ARouterUrl.HOUSE_KEEPER, bundle)
- }
-
- } else {
- onEventObject(requireContext(), UmengEventId.HealthAdmin, "未绑定点击")
- CommonToastUtils.showToast(com.xty.common.R.string.please_bind_device)
- }
- } else {
- onEventObject(requireContext(), UmengEventId.HealthAdmin, "关注家人点击")
- CommonToastUtils.showToast("不支持上传家人健康信息")
- }
- }
- //健康方案
- R.id.mGuide_1 -> {
-// Const.mainLiveData.value?.apply {
-// bundle.clear()
-// bundle.putString("id", showIdInfo)
-// RouteManager.goAct(ARouterUrl.HEALTH_PROP, bundle)
-// }
- onEventObject(requireContext(), UmengEventId.HealthProgrammes, "首页")
- RouteManager.goAct(ARouterUrl.MY_PROG)
- }
- //绑定
- R.id.mBtnBind -> {
- dialogBind.show()
- }
- }
- }
-
-
-*/
-/**
- * 设置设备信息*//*
-
-
-
- private fun setDeviceInfo(deviceInfo: DeviceInfoBean?) {
- if (null != deviceInfo) {
- if (blueTooth()) {
- binding.mCom.mWatchType.text = getString(R.string.blue_tooth)
- val drawable = getDrawable(R.mipmap.ic_watch_bluetooth)
- drawable!!.setBounds(0, 0, drawable.minimumWidth, drawable.minimumHeight)
- binding.mCom.mWatchType.setCompoundDrawables(drawable, null, null, null)
- } else {
- binding.mCom.mWatchType.text = getString(R.string.lite_4g)
- val drawable = getDrawable(R.mipmap.ic_watch_4g)
- drawable!!.setBounds(0, 0, drawable.minimumWidth, drawable.minimumHeight)
- binding.mCom.mWatchType.setCompoundDrawables(drawable, null, null, null)
- }
- binding.mCom.mBindState.visibility = View.VISIBLE
- if (deviceInfo.bindState) {//已绑定
- binding.mCom.mBindState.apply {
- text = "已绑定"
- background = null
- val drawable = getDrawable(R.mipmap.ic_bind)
- drawable!!.setBounds(0, 0, drawable.minimumWidth, drawable.minimumHeight)
- setCompoundDrawables(drawable, null, null, null)
- }
-
- when (deviceInfo.connectState) {
- YCBBlueConnectHelper.BLEConnectState.Connected -> {//已连接
- binding.mCom.mConnectStatu.apply {
- text = deviceInfo.battery
- var drawable: Drawable = getDrawable(R.mipmap.ic_battery)
-// if (!deviceInfo.battery.isNullOrEmpty()) {
-// val str = deviceInfo.battery.substring(2, deviceInfo.battery.length - 1)
-// val pattern: Pattern = Pattern.compile("[0-9]*")
-// val isNum: Matcher = pattern.matcher(str)
-// if (isNum.matches()) {
-// val battery = str.toInt()
-// drawable = if (battery > 90) {
-// getDrawable(R.mipmap.ic_battery)
-// } else if (battery > 70) {
-// getDrawable(R.mipmap.ic_battery_90)
-// } else if (battery > 50) {
-// getDrawable(R.mipmap.ic_battery_70)
-// } else if (battery > 30) {
-// getDrawable(R.mipmap.ic_battery_50)
-// } else if (battery > 10) {
-// getDrawable(R.mipmap.ic_battery_30)
-// } else {
-// getDrawable(R.mipmap.ic_battery_10)
-// }
-// }
-// }
- drawable!!.setBounds(
- 0,
- 0,
- drawable.minimumWidth,
- drawable.minimumHeight
- )
- setCompoundDrawables(drawable, null, null, null)
- }
- }
- YCBBlueConnectHelper.BLEConnectState.Connecting -> {//连接中
- binding.mCom.mConnectStatu.apply {
- text = "连接中..."
- setCompoundDrawables(null, null, null, null)
- }
- }
- YCBBlueConnectHelper.BLEConnectState.DisConnect -> {//未连接
- binding.mCom.mConnectStatu.apply {
- text = "未连接"
- val drawable = getDrawable(R.mipmap.ic_not_connect)
- drawable!!.setBounds(
- 0,
- 0,
- drawable.minimumWidth,
- drawable.minimumHeight
- )
- setCompoundDrawables(drawable, null, null, null)
- }
- }
- }
-
- binding.mCom.mConnectStatu.visibility = View.VISIBLE
- } else {
- binding.mCom.mBindState.apply {
- text = "未绑定"
- val drawable = getDrawable(R.mipmap.ic_unbind)
- drawable!!.setBounds(0, 0, drawable.minimumWidth, drawable.minimumHeight)
- setCompoundDrawables(drawable, null, null, null)
- }
- binding.mCom.mConnectStatu.visibility = View.GONE
- }
- } else {
- binding.mCom.mWatchType.text = getString(R.string.blue_tooth)
- val drawable = getDrawable(R.mipmap.ic_watch_bluetooth)
- drawable!!.setBounds(0, 0, drawable.minimumWidth, drawable.minimumHeight)
- binding.mCom.mWatchType.setCompoundDrawables(drawable, null, null, null)
- binding.mCom.mBindState.visibility = View.GONE
- binding.mCom.mConnectStatu.visibility = View.GONE
- }
- }
-
-
-*/
-/**
- * 设置天气信息*//*
-
-
-
- private fun setWeatherInfo(weather: MainBean.Weather?) {
-// if (null == weather) {
-// binding.mCom.tvLocationWeather.visibility = View.GONE
-// } else {
-// weather.apply {
-// if (city.isNullOrEmpty() || weatherNo.isNullOrEmpty()) {
-// binding.mCom.tvLocationWeather.visibility = View.GONE
-// return
-// }
-// binding.mCom.tvLocationWeather.text = "${city} ${weatherInfo}"
-// var icon = when (weatherNo) {
-// "32" -> {//晴天
-// R.mipmap.weather_sunny
-// }
-// "44" -> {//多云
-// R.mipmap.weather_cloudy
-// }
-// "20" -> {//阴天
-// R.mipmap.weather_yin
-// }
-// "12" -> {//雨天
-// R.mipmap.weather_rain
-// }
-// "45" -> {//雷阵雨
-// R.mipmap.weather_thunder_shower
-// }
-// "16" -> {//雪
-// R.mipmap.weather_snow
-// }
-// else -> {
-// R.mipmap.weather_sunny
-// }
-// }
-// val drawable = getDrawable(icon)
-// drawable!!.setBounds(0, 0, drawable.minimumWidth, drawable.minimumHeight)
-// binding.mCom.tvLocationWeather.setCompoundDrawables(null, null, drawable, null)
-// binding.mCom.tvLocationWeather.visibility = View.VISIBLE
-// }
-// }
- }
-
-*/
-/**
- * 设置设备信息*//*
-
-
-
- private fun setBindDeviceInfo(deviceInfo: MainBean.DeviceTotal?) {
- deviceInfo?.let {
- binding.mChildView.tvXueyaNum.text = "已绑定" + it.sphygmomanometer + "台"
- binding.mChildView.tvXuetangNum.text = "已绑定" + it.bloodGlucose + "台"
- }
- binding.mChildView.llXueya.setOnClickListener {
- //已绑定血压列表
- RouteManager.goAct(ARouterUrl.XUEYAJI_BIND_LIST, null)
- }
- binding.mChildView.llXuetang.setOnClickListener {
- //已绑定血糖列表
- RouteManager.goAct(ARouterUrl.XUETANGYI_BIND_LIST, null)
- }
- }
-
- // 刷新注册
- private fun refresh() {
- refresh.setRefresh(binding.mRefresh) {
- getXtInfo(showIdInfo)
- get24HourReportInfo(showIdInfo)
- request()
- uploadWhatchData()
- }
- }
-
- private fun request() {
- mViewModel.getBanners(CommonUtils.getMyUserId())//当期登录用户id
-
- mViewModel.getAllInfo(showIdInfo,false)
- mViewModel.getDkInfo(false, showIdInfo)
-
- mViewModel.getMySetting()
- mViewModel.getMyFamilyList()
- mViewModel.getTips()
- mViewModel.getRank(2)
- }
-
-
- //蓝牙连接状态之后 数据上传
- private fun getConnectStatus() {
- LogUtils.d("getConnectStatus!")
- if (YCBBlueConnectHelper.getBlueStatus(false)) {
- LogUtils.d("start get DeviceInfo!")
-
- //连接之后 直接进行数据的同步
- YCBManager.getDeviceInfo { isok, value ->
- mainScope.launch {
- LogUtils.d("getDeviceInfo isOk:$isok;;; value=$value")
- if (isok) {//获取到设备信息,设备准备就绪上传手表数据
-// binding.mCom.visibility = View.GONE
-// binding.mEle.visibility = View.VISIBLE
-// binding.mEle.text = value
- setDeviceInfo(
- DeviceInfoBean(
- true,
- YCBBlueConnectHelper.BLEConnectState.Connected,
- value
- )
- )
-
- uploadWhatchData()
-
- mViewModel.settingLive.value?.let {
- MyWorkManger.setMyWork(
- MyApp.instance!!,
- it.data.user.bluetooth
- ) //开启后台定时上传任务
- }
-
- } else {//如果获取手表信息失败,断开连接以后让用户手动连接
- YCBBlueConnectHelper.disconnect()
- initBlueToothStatu()
- }
- }
- }
- } else {
- //断开连接重置状态 为了重新连接自后可以进行睡眠上传
- initBlueToothStatu()
- }
- }
-
- private fun blueTooth(): Boolean {
-
-// CommonUtils.getBlueToothMac()?.let {
-// if (!it.isNullOrEmpty()) {
-// return true
-// }
-// }
- return CommonUtils.isBlueTooth(MMkvHelper.getInt(Const.Watch_Device_Type)) && !CommonUtils.getBlueToothMac()
- .isNullOrEmpty()
- }
-
-
-*/
-/**
- * 是否绑定了设备*//*
-
-
-
- private fun isBind(): Boolean {
- return true
- Const.mainLiveData?.value?.let {
- if(!it.user.bluetooth.isNullOrEmpty()){
- return true
- }
- }
- return false
-
- }
-
-
- //界面跳转
- fun goPage(page: Int) {
- if (isBind()) {
- bundle.clear()
- bundle.putInt("page", page)
- bundle.putString("id", showIdInfo)
- RouteManager.goAct(ARouterUrl.HEALTHMAIN, bundle)
- } else {
- CommonToastUtils.showToast(R.string.please_bind_device)
- }
- }
-
- private fun setTips(datas: List) {
-// val datas: List = listOf(
-// "《赋得古原草送别》",
-// "离离原上草,一岁一枯荣。",
-// "野火烧不尽,春风吹又生。",
-// "远芳侵古道,晴翠接荒城。",
-// "又送王孙去,萋萋满别情。"
-// )
- val marqueeFactory: SimpleMF = SimpleMF(context)
- marqueeFactory.data = datas
- binding.mCom.simpleMarqueeView.setMarqueeFactory(marqueeFactory)
- binding.mCom.simpleMarqueeView.setDrawable(
- getDrawable(R.mipmap.icon_tips),
- null,
- null,
- null
- )
- if (binding.mCom.simpleMarqueeView.isFlipping) {
- binding.mCom.simpleMarqueeView.stopFlipping()
- }
-// binding.mCom.simpleMarqueeView.flipInterval = 3 * 1000//轮播间隔时间
- binding.mCom.simpleMarqueeView.startFlipping()
- }
-
- private fun updateBadgeNum(num: Int) {
- if (num > 0) {
- var badgeText = if (num > 99) "99+" else "$num"
- binding.mCom.mBadge.text = badgeText
- binding.mCom.mBadge.post {
- val layoutParams = binding.mCom.mBadge.layoutParams as ViewGroup.LayoutParams
- val text = binding.mCom.mBadge.text.toString()
- binding.mCom.mBadgeCard.radius = binding.mCom.mBadge.height / 2f
- var textWidth = binding.mCom.mBadge.paint.measureText(text)
- if (binding.mCom.mBadge.height >= textWidth) { //等宽高的圆形
- layoutParams.width = binding.mCom.mBadge.height
-
- } else { //宽高不等 将宽度两边加10
- layoutParams.width = textWidth.toInt() + 20
- }
- binding.mCom.mBadge.layoutParams = layoutParams
- }
- binding.mCom.mBadgeCard.visibility = View.VISIBLE
- } else {
- binding.mCom.mBadgeCard.visibility = View.GONE
- }
- }
-
- override fun onResume() {
- super.onResume()
- mViewModel.getWarningMsg()
- }
-
- override fun observer() {
-
- //预警消息
- mViewModel.warningMsgLive.observe(this) {
- updateBadgeNum(it.data.noReadNum)
- val systemMessage = it.data.systemMessage
- if (systemMessage != null && systemMessage.isNotEmpty()) {
- val sysMsg = systemMessage[0]
- updateWarningInfo(sysMsg)
- } else {
- updateWarningInfo(null)
- }
- }
-
- //首页轮播图
- mViewModel.bannerLive.observe(this) {
- if (null == it) {
- return@observe
- }
-
- mBannerAdapter.setDatas(it.data)
- mBannerAdapter.notifyDataSetChanged()
- }
-
- //手表信息组装上传
- mViewModel.allDataInfo.observe(this) {
-
- if (null == it || it["data"] == null || it["data"] !is ArrayList<*>) {
- LogUtils.d("手表数据:暂时无数据...")
- getXtInfo(showIdInfo)//如果手表没数据也需要获取获取血糖信息
- get24HourReportInfo(showIdInfo)//如果手表没数据也需要获取24小时日报
- return@observe
- }
-
- LogUtils.d("手表数据:全部信息开始上传...")
- //是否为错误数据
- var existError = false
-
- val lists = it["data"] as ArrayList
- var array = JSONArray()
- lists.forEach { bean ->
-
- var json = JSONObject()
- var nowData = bean as java.util.HashMap
- val iterator = nowData.iterator()
- while (iterator.hasNext()) {
- val next = iterator.next()
- var values = if (next.value is Long) (next.value as Long) / 1000 else next.value
- when (next.key) {
- "OOValue" -> json.put("ooValue", values)
-
- "DBPValue" -> {
- var sbp = nowData["SBPValue"] as Int
- var dbp = nowData["DBPValue"] as Int
- //医学上是大值 收缩压
- //小值
- json.put("sbpValue", min(sbp, dbp))
- }
- "SBPValue" -> {
- //医学上是小值 舒张压
- //大值
- var sbp = nowData["SBPValue"] as Int
- var dbp = nowData["DBPValue"] as Int
- json.put("dbpValue", max(sbp, dbp))
- }
-
- else -> json.put(next.key, values)
- }
- }
- if (json.has("startTime")) {
- var times = json.get("startTime").toString().toLong()
-
- if (times < 0 || times > System.currentTimeMillis() / 1000) { //错误数据 不使用
- existError = true
- } else {
- array.put(json)
- }
- }
- }
- //错误数据保存到本地日志
- if (existError) {
- // saveFile(it.toString()) //存到本地日志
- }
-
- LogUtils.d("手表数据:array Length:${array.length()}")
- if (array.length() > 0) {
-// var lastJson = array[array.length() - 1] as JSONObject
-// lastJson.put("original", it.toString())
- mViewModel.uploadAllInfo(array)
-
- }
-
- }
-
- //手表数据上传
- mViewModel.uploadMultiple.observe(this) {
- CommonToastUtils.showSucceedToast(R.string.upload_data_success)
- LogUtils.d("all data upload success ")
- get24HourReportInfo(showIdInfo)//数据上传成功后获取24小时日报
- getXtInfo(showIdInfo)//数据上传成功后获取血糖信息
- YCBManager.deleteHistory(YCBOrder.DELETE_ALL) //删除 数据
- mainScope.launch {
- delay(500)
- mViewModel.getAllInfo(showIdInfo,false)
- }
- }
- //睡眠上传
- mViewModel.uploadSleep.observe(this) {
- //睡眠上传成功 清除睡眠数据
- LogUtils.d("sleep upload success ")
- YCBManager.deleteHistory(YCBOrder.SLEEP_HISTORY)
- //clearSleep()
- }
-
- //步数上传
- mViewModel.uploadStep.observe(this) {
- //步数上传成功
- //YCBManager.deleteHistory(YCBOrder.STEP_HISTORY)
- LogUtils.d("step upload success ")
- mViewModel.getDkInfo(false, showIdInfo)
- }
-
- //小贴士
- mViewModel.tipsLive.observe(this) {
- LogUtils.d("TipsData:${it.data.size}")
- var list = mutableListOf()
- it.data.forEach { tipsBean ->
- list.add("${tipsBean.title}${tipsBean.content}")
- }
- setTips(list)
- }
-
- //步数信息
- mViewModel.dkInfo.observe(this) {
- mHealthAdapter.dkBean = it.data
- mHealthAdapter.notifyDataSetChanged()
- }
-
- //排名信息
- mViewModel.rankLive.observe(this) {
- val content = getString(
- R.string.rank_num,
- if (it.data.userRank == 0) "-" else "${it.data.userRank}"
- )
- binding.mChildView.tvBdContent.text = setStrSpan(
- content,
- 15,
- getColor(R.color.col_0098),
- Typeface.BOLD,
- content.length - 1 - (it.data.userRank).toString().length,
- content.length - 1
- )
-
- }
-
- //个人设置信息获取
- mViewModel.settingLive.observe(this) {
- if (null == it.data) return@observe
- it.data.let { settingBean ->
-
- if (BuildConfig.isRelease) {//设置极光推送别名
- JPushInterface.setAlias(
- requireContext(),
- settingBean.user.id.toInt(),
- "user_release_${settingBean.user.id}"
- )
- }
-
- Const.mainLiveData.value = settingBean
- mViewModel.getWelcomeInfo(settingBean.user.id)
- mViewModel.getWarningMsg()//获取预警消息
-
- requestByDeviceModel()
- // 激活过才能开启定是我任务
- //Log.e("worker", "定时任务开启")
-
- if (!mFamilyAdapter.data.isNullOrEmpty() && mFamilyAdapter.data.size > 0) {
- mFamilyAdapter.data[0].avatarUrl =
- if (settingBean.user.avatarUrl.isNullOrEmpty()) "" else settingBean.user.avatarUrl
- }
-
- //设置用户头像
- setUserImage(settingBean.user.id, settingBean.user.avatarUrl)
-
- if (settingBean.user.bluetooth.isNullOrEmpty()) { //没有mac地址表示未绑定
-// binding.mContent.visibility = View.VISIBLE
- binding.mCom.mLayoutResult.visibility = View.GONE
- binding.mCom.mBtnBind.visibility = View.VISIBLE
- setDeviceInfo(DeviceInfoBean(false))
- if (!(activity as MainActivity).isDialogShow) {
- dialogBind.show()
- }
- } else {
- binding.mCom.mLayoutResult.visibility = View.VISIBLE
- binding.mCom.mBtnBind.visibility = View.GONE
- //重新签名提示
- var signTime = settingBean.user.esignatureDate
- if (!signTime.isNullOrEmpty()) {
- var againTime = RxTimeTool.string2Milliseconds("2022-07-01 21:00:00")
- var signTime = RxTimeTool.string2Milliseconds(signTime)
- if (signTime < againTime) {
- signDialog.show()
- }
- }
- MyRetrofit.get().BLUETOOTH_MAC = settingBean.user.bluetooth
- if (CommonUtils.isBlueTooth(MMkvHelper.getInt(Const.Watch_Device_Type))) {//如果是蓝牙设备
- startGetDeviceInfoLive()
- if (settingBean.user.bluetooth != MMkvHelper.getString(Const.Blue_Tooth)) {//如果不是同一设备
- YCBBlueConnectHelper.disconnect()//断开蓝牙,断开后收到BlueToothConnectEvent会自动连接
- YCBBlueConnectHelper.cancelTimer()
- } else {
- LogUtils.d("startConnect::${settingBean.user.bluetooth}")
- mainUIUpdate(YCBBlueConnectHelper.BLEConnectState.Connecting)//刷新蓝牙连接状态
- connect(settingBean.user.bluetooth)
- }
- }
- }
-
- if (Const.Companion.WatchDevice.LightA3.ordinal == Const.watchType) {//如果是4G设备,设置连接状态与电量信息
- setDeviceInfo(
- DeviceInfoBean(
- true,
- YCBBlueConnectHelper.BLEConnectState.Connected,
- if (Const.battery.isNullOrEmpty()) "" else "电量${Const.battery}%"
- )
- )
- }
-
- MMkvHelper.put(Const.Blue_Tooth, settingBean.user.bluetooth)
- }
- //个人信息拿到之后再去获取mqtt信息
- mViewModel.getMqttInfo()
- }
-
- //血糖信息获取
- mViewModel.xtInfo.observe(this) {
- updateBloodSugarInfo(it.data)
- }
-
- //获取首页所有信息返回
- mViewModel.allData.observe(this) {
- it.data.let { bean ->
-
- if (null == bean) {
- LogUtils.e("没得数据,不做任何处理!")
- return@observe
- }
-
- if (mFamilyAdapter.position != -1) {
- if (mFamilyAdapter.getItem(mFamilyAdapter.position).userJointId != bean.user.id.toInt()) {
- if (mFamilyAdapter.position == 0 && bean.user?.id.toString() == CommonUtils.getMyUserId()) {//如果是自己加载用户头像并保存用户信息
- } else {
- LogUtils.e("当前用户与请求用户信息不一致,不作处理!")
- return@observe
- }
- }
- }
-
- if (showIdInfo.isEmpty()) { //自己
-// binding.mChildView.mGuide2.visibility = View.VISIBLE
- binding.mChildView.mInter.visibility = View.VISIBLE
- binding.mChildView.mRecyclemInter.visibility = View.VISIBLE
- } else {
-// binding.mChildView.mGuide2.visibility = View.GONE//隐藏健康管家
- binding.mChildView.mInter.visibility = View.GONE//隐藏健康互动标题
- binding.mChildView.mRecyclemInter.visibility = View.GONE//隐藏健康打卡,榜单,我的家人功能
- Const.otherLiveData.value = bean
- }
-
- setWeatherInfo(bean.weather)
- Const.battery = bean.power
- Const.watchType = bean.watchType
- MMkvHelper.put(Const.Watch_Device_Type, bean.watchType)
- if (Const.Companion.WatchDevice.LightA3.ordinal == bean.watchType) {//如果是4G设备,设置连接状态与电量信息
- setDeviceInfo(
- DeviceInfoBean(
- true,
- YCBBlueConnectHelper.BLEConnectState.Connected,
- if (Const.battery.isNullOrEmpty()) "" else "电量${Const.battery}%"
- )
- )
- } else {
- if (showIdInfo.isEmpty()) { //自己
- val localBlueMac = MMkvHelper.getString(Const.Blue_Tooth)
- if (!localBlueMac.isNullOrEmpty() && YCBBlueConnectHelper.getBleNowStatus() == YCBBlueConnectHelper.BLEConnectState.DisConnect) {//如果本地有蓝牙信息且属于未连接状态,则直接连接
- LogUtils.d("startConnect::${localBlueMac}")
- mainUIUpdate(YCBBlueConnectHelper.BLEConnectState.Connecting)//刷新蓝牙连接状态
- connect(localBlueMac)
- } else if (YCBBlueConnectHelper.getBleNowStatus() == YCBBlueConnectHelper.BLEConnectState.Connected) {
- getConnectStatus()
- }
- } else {
- setDeviceInfo(null)
- }
-
- }
- mHealthAdapter.mainBean = bean
- mHealthAdapter.notifyDataSetChanged()
- //总佩戴 活跃 休眠
- binding.mCom.mWearInfo.text = getString(
- R.string.wear_info,
- bean.adorn?.wearCount?.toString(),
- bean.adorn?.activeWear?.toString(),
- bean.adorn.dormancy?.toString()
- )
- setBindDeviceInfo(bean.deviceTotal)
- }
-
- }
- //环信服务器连接
- mViewModel.mqtt.observe(this) {
- it.data.appUserId = mViewModel.settingLive.value!!.data.user.id.toString()
- var intent = requireActivity().intent
- intent.putExtra("bean", it.data)
- intent.setClass(requireContext(), MqTTService::class.java)
- requireActivity().startService(intent)
- }
-
- //我家人信息
- mViewModel.familyLive.observe(this) {
- it.data.add(0, FamilyBean().apply {
- this.fCall = "我"
- })
- var selectPosition = 0
- if (showIdInfo.isNotEmpty()) {
- it.data.forEachIndexed { index, familyBean ->
- if (showIdInfo == familyBean.userJointId.toString()) {
- selectPosition = index
- return@forEachIndexed
- }
- }
- //如果家人解绑了 则直接查自己的
- if (selectPosition == 0) {
- showIdInfo = ""
- }
- }
-
- val content =
- getString(R.string.family_num, "" + "${it.data.size - 1}")
- binding.mChildView.tvFamilyContent.text = setStrSpan(
- content,
- 15,
- getColor(R.color.col_0098),
- Typeface.BOLD,
- content.length - 3 - (it.data.size - 1).toString().length,
- content.length - 3
- )
- it.data.add(FamilyBean().apply {
- this.fCall = "家人"
- })
- mFamilyAdapter.position = selectPosition
- mFamilyAdapter.setNewInstance(it.data)
- }
-
- //定时上报任务
- tenLive.observe(this) {
- LogUtils.d("整十分钟定时任务开启:${RxTimeTool.curTimeString}")
- //开启下一个整10分的休眠
- getNowTime()
- //上传数据
- uploadWhatchData()
- }
-
- //15秒钟更新一次蓝牙设备信息
- getDeviceInfoLive.observe(this) {
- LogUtils.d("定时更新一次蓝牙设备信息:${RxTimeTool.curTimeString}")
- startGetDeviceInfoLive()
-
- if (!MMkvHelper.contains(Const.Watch_Device_Type)) {//没有手表型号
- LogUtils.d("没有获取到手表型号")
- return@observe
- }
-
- if (!CommonUtils.isBlueTooth(MMkvHelper.getInt(Const.Watch_Device_Type))) {//不是蓝牙设备
- LogUtils.d("不是蓝牙设备!")
- return@observe
- }
-
- if (!YCBBlueConnectHelper.getBlueStatus(false)) {//蓝牙未连接
- LogUtils.d("蓝牙设备未连接!")
- return@observe
- }
-
- if ((!showIdInfo.isNullOrEmpty() && showIdInfo != CommonUtils.getMyUserId())) {//不是当前用户
- LogUtils.d("当前用户与showIdInfo不匹配!")
- return@observe
- }
-
- LogUtils.d("定时获取一次 DeviceInfo!")
- //连接之后 直接进行数据的同步
- YCBManager.getDeviceInfo { isok, value ->
- mainScope.launch {
- LogUtils.d("getDeviceInfo isOk:$isok;;; value=$value")
- if (isok) {//获取到设备信息,设备准备就绪上传手表数据
- setDeviceInfo(
- DeviceInfoBean(
- true,
- YCBBlueConnectHelper.BLEConnectState.Connected,
- value
- )
- )
- }
- }
- }
- }
-
- //24小时健康报告返回信息
- mViewModel.infoLive.observe(this) {
-
- if (null == it.data) {
- LogUtils.e("返回数据为空!")
- return@observe
- }
-
- if (null == it.data.healthy) {
- LogUtils.e("健康信息数据为空!")
- return@observe
- }
-
- if (mFamilyAdapter.position != -1) {
- if (mFamilyAdapter.getItem(mFamilyAdapter.position).userJointId != it.data.user?.id) {
- if (mFamilyAdapter.position == 0 && it.data.user?.id.toString() == CommonUtils.getMyUserId()) {//如果是自己,啥也不做
-
- } else {
- LogUtils.e("当前用户与请求用户信息不一致,不作处理!")
- return@observe
- }
- }
- }
-
- reportBean = it.data
-
- var healthResult = it.data.healthy.result
- updateHealthDesc(healthResult)
- //健康状态
- binding.mCom.mHealthStatus.setImageResource(UserInfoDefin.healthIcon[healthResult + 1])
- updateStarInfo(
- healthResult,
- if (it.data.star.isNullOrEmpty()) 0 else it.data.star.toInt()
- )
-// if (healthResult == 3) {
-// binding.mCom.mHealthStatus.setCompoundDrawables(null, null, null, null)
-// } else {
-// var drawable = ContextCompat.getDrawable(
-// requireContext(),
-// UserInfoDefin.healthIcon[healthResult + 1]
-// )
-// drawable!!.setBounds(0, 0, drawable.minimumWidth, drawable.minimumHeight)
-// binding.mCom.mHealthStatus.setCompoundDrawables(drawable, null, null, null)
-// }
- }
- }
-
- var notifyStatus: Int? = -1
- private fun updateWarningInfo(sysMsg: MessageBean.SysMsg?) {
- if (sysMsg == null) {
- binding.mCom.llWarning.visibility = View.GONE
- return
- } else if (sysMsg != null && (mFamilyAdapter.position == 0 || mFamilyAdapter.position == -1)) {
- binding.mCom.llWarning.visibility = View.VISIBLE
- }
- notifyStatus = sysMsg?.notifyStatus
- if (notifyStatus == 0) {
- //未读 显示预警消息
- binding.mCom.llWarning.visibility = View.VISIBLE
- } else {
- //已读 显示预警消息
- binding.mCom.llWarning.visibility = View.GONE
- }
- binding.mCom.tvWarning.isSelected = true
- binding.mCom.tvWarning.text = sysMsg.notifyContent
- }
-
-*/
-/**
- * 通过设备型号来处理不同业务逻辑*//*
-
-
-
- private fun requestByDeviceModel() {
- when (MMkvHelper.getInt(Const.Watch_Device_Type)) {//如果是4GA3设备,则隐藏心电板块
- Const.Companion.WatchDevice.LightA3.ordinal -> {
- getXtInfo(showIdInfo, false)//获取血糖信息
- get24HourReportInfo(showIdInfo)//获取24小时日报
- }
- else -> {
- if (!YCBBlueConnectHelper.isBlueExits()) {//检查蓝牙设备,如未发现蓝牙设备则获取用户上次的血糖信息和24小时信息
- LogUtils.d("未发现蓝牙设备...")
- getXtInfo(showIdInfo)//如果手表没数据也需要获取获取血糖信息
- get24HourReportInfo(showIdInfo)//如果手表没数据也需要获取24小时日报
- }
- if (tenJob == null) {
- getNowTime() // 整十分钟数据上报休眠开始
- } else {
- tenJob!!.cancel()
- getNowTime() // 整十分钟数据上报休眠开始
- }
- }
- }
- }
-
- private fun updateStarInfo(status: Int, star: Int) {
- mViewModel.allData.value?.apply {
- if (data.adorn.wearCount <= 3) {
- binding.mCom.mDescInfo.text =
- getString(R.string.model_day, "" + (4 - data.adorn.wearCount))
- return
- }
- }
-
- binding.mCom.mDescInfo.apply {
- text = ""
-
- append(getString(R.string.health_star_mark))
-
- var selectStarImage = UserInfoDefin.getStarImage(context, status)
- selectStarImage?.setBounds(
- 0,
- 0,
- (selectStarImage.minimumWidth / 1.4).toInt(),
- (selectStarImage.minimumHeight / 1.4).toInt()
- )
-
- var unSelectStarImage = context.getDrawable(com.xty.health.R.mipmap.icon_insufficient)
- unSelectStarImage?.setBounds(
- 0,
- 0,
- (unSelectStarImage.minimumWidth / 1.4).toInt(),
- (unSelectStarImage.minimumHeight / 1.4).toInt()
- )
-
- for (i in 1..5) {
- val spanStr = SpannableString("custom$i")
- var span =
- (if (star >= i) selectStarImage else unSelectStarImage)?.let { starDrawable ->
- CenterImageSpan(starDrawable)
- }
- spanStr.setSpan(span, 0, spanStr.length, Spannable.SPAN_INCLUSIVE_EXCLUSIVE)
- append(spanStr)
- append(" ")
- }
- }
- }
-
-*/
-/**
- * 更新血糖模块信息*//*
-
-
-
- private fun updateBloodSugarInfo(info: XTangInfoBean) {
-
- if (null == info) {
- LogUtils.e("血糖模块信息没有,出错了~")
- return
- }
-
- if (!info.errorMsg.isNullOrEmpty()) {
- CommonToastUtils.showToast(info.errorMsg)
- }
-
- mHealthAdapter.xtangInfo = info
- mHealthAdapter.notifyDataSetChanged()
-
-// when (info.model) {
-// //0 未开通 1:建模中 2:建模完成
-// 0 -> {
-// binding.mOrganView.mBsStatus.text = "未开通"
-// binding.mOrganView.mBsTime.text =
-// if (info.time.isNullOrEmpty()) RxTimeTool.getCurrentDateTime(" yyyy-MM-dd HH:mm:ss") else info.time
-// binding.mOrganView.mBsOper.visibility = View.VISIBLE
-// binding.mOrganView.mBsCurrentStatu.visibility = View.GONE
-// }
-// 1 -> {
-// binding.mOrganView.mBsStatus.text = "建模中"
-// binding.mOrganView.mBsTime.text =
-// if (info.time.isNullOrEmpty()) RxTimeTool.getCurrentDateTime(" yyyy-MM-dd HH:mm:ss") else info.time
-// binding.mOrganView.mBsOper.visibility = View.GONE
-// binding.mOrganView.mBsCurrentStatu.text = "建模中"
-// binding.mOrganView.mBsCurrentStatu.visibility = View.VISIBLE
-// }
-// 2 -> {
-// binding.mOrganView.mBsStatus.text =
-// OrganStatusCalcUtil.bloodSugarStatuText(info.bloodsugar)
-// binding.mOrganView.mBsTime.text =
-// if (info.time.isNullOrEmpty()) RxTimeTool.getCurrentDateTime(" yyyy-MM-dd HH:mm:ss") else info.time
-// binding.mOrganView.mBsOper.visibility = View.GONE
-// binding.mOrganView.mBsCurrentStatu.text = setSugarSpan(info.bloodsugar)
-// binding.mOrganView.mBsCurrentStatu.visibility = View.VISIBLE
-// }
-// }
- }
-
-*/
-/**
- * 更新健康状态*//*
-
-
-
- private fun updateHealthDesc(healthStatus: Int) {
- canGoto24Healthresult = healthStatus != 0 && healthStatus != -1
- binding.mCom.mDesc.apply {
- text = UserInfoDefin.getHealthArray(requireContext())[healthStatus + 1]
- //todo 数据不足 不允许进入健康管理
- setTextColor(
- ContextCompat.getColor(
- requireContext(),
- UserInfoDefin.healthCol[healthStatus + 1]
- )
- )
- }
-// text =
-// setStrSpan(content, 13, getColor(com.xty.health.R.color.col_ff7), Typeface.BOLD, content.length - 3 - percent.length, content.length - 3)
- }
-
-*/
-/**
- * 家人信息绑定*//*
-
-
-
- private fun initFamilyAdapter() {
- binding.mCom.mRecycle.layoutManager =
- LinearLayoutManager(requireContext(), RecyclerView.HORIZONTAL, false)
- binding.mCom.mRecycle.adapter = mFamilyAdapter
- mFamilyAdapter.setOnItemClickListener { adapter, view, position ->
- if (position == mFamilyAdapter.data.size - 1) {
- onEventObject(requireContext(), UmengEventId.Family)
- RouteManager.goAct(ARouterUrl.BIND_FAMILY)
- } else {
- var bean = adapter.getItem(position) as FamilyBean
- showIdInfo = if (bean.id == 0) {
- ""
- } else {
- bean.userJointId.toString()
- }
- binding.mCom.mWearManager.visibility =
- if (showIdInfo.isNullOrEmpty()) View.VISIBLE else View.GONE
- setUserImage(
- if (showIdInfo.isNullOrEmpty()) "0" else showIdInfo,
- bean.avatarUrl
- )
- binding.mCom.mUserName.text = bean.fCall
- mFamilyAdapter.position = position
- mFamilyAdapter.notifyDataSetChanged()
- mViewModel.getAllInfo(showIdInfo,true)
- getXtInfo(showIdInfo)
- get24HourReportInfo(showIdInfo)
- mViewModel.getDkInfo(false, showIdInfo)
- updateWarningStatus()
- }
- }
- }
-
-*/
-/**
- * 设置用户头像*//*
-
-
-
- private fun setUserImage(userId: String, headerImage: String?) {
- binding.mCom.mHeaderImage.apply {
- tag = userId
- setImageUser(requireContext(), headerImage)
- setOnClickListener {
- if (tag.toString()
- .isNullOrEmpty() || tag.toString() == "0" || Const.mainLiveData?.value?.user?.id.toString() == userId.toString()
- ) {
- RouteManager.goAct(ARouterUrl.BASE_INFO_CHANGE, bundle)
- }
- }
- }
- }
-
-*/
-/**
- * 获取所有信息*//*
-
-
-
- private fun getAllData() {
- YCBManager.getAllData {
- LogUtils.d("getAll Info!")
- mainScope.launch {
- mViewModel.allDataInfo.postValue(it)
- }
- }
- }
-
-*/
-/**
- *15秒钟之内只能上传一次睡眠数据 避免重复上传*//*
-
-
-
- private fun refreshTime() {
- if (isRefresh) {
- isRefresh = false
- mainScope.launch {
- delay(15 * 1000)
- isRefresh = true
- }
- }
- }
-
-*/
-/**
- * 获取历史步数*//*
-
-
-
- private fun getStep() {
- YCBManager.getHistoryInfo(YCBOrder.STEP_DATA) {
- mainScope.launch {
- LogUtils.d("getStep Info!")
- var jsonArray = JSONArray()
- var arrayOrigin = JSONArray()
- for (i in 0 until it.size) {
- var info = it[i] as HashMap
- var jsonOrigin = JSONObject()
- for ((k, v) in info) {
- jsonOrigin.put(k, v)
- }
- arrayOrigin.put(jsonOrigin)
- var dataDayStr = RxTimeTool.milliseconds2String(
- System.currentTimeMillis(),
- SimpleDateFormat("yyyy-MM-dd")
- )
- var todayStartTime =
- RxTimeTool.string2Milliseconds("$dataDayStr 00:00:00") //今天0点的时间
-
- var startTime = (info["sportStartTime"] as Long)
- if (startTime < todayStartTime) {
- continue
- }
-
- var json = JSONObject()
- json.put("startTime", (info["sportStartTime"] as Long) / 1000)
- json.put("endTime", (info["sportEndTime"] as Long) / 1000)
- json.put("step", info["sportStep"])
- json.put("calories", info["sportCalorie"])
- json.put("distance", info["sportDistance"])
- jsonArray.put(json)
- }
- mViewModel.uploadStep(jsonArray)
- }
- }
- }
-
-*/
-/**
- * 手表信息上传*//*
-
-
-
- private fun uploadWhatchData() {
- LogUtils.d("手表数据是否上传:$isRefresh")
- if (isRefresh) {//避免重复多次上传导致服务器负载过高,五秒钟之内不允许重复上传。蓝牙断开重连也可以上传
- LogUtils.d("手表数据开始上传...")
- refreshTime()
- getStep()
- getSleepNew()
- getAllData()
- }
- }
-
-*/
-/**
- * 获取血糖信息*//*
-
-
-
- private fun getXtInfo(userId: String, isShowLoading: Boolean = false) {
- mViewModel.getXtInfo(userId, isShowLoading)
- }
-
-*/
-/**
- * 获取24小时健康报告*//*
-
-
-
- private fun get24HourReportInfo(userId: String, isShowLoading: Boolean = false) {
- mViewModel.get24HourReportInfo(userId, isShowLoading)
- }
-
-*/
-/**
- * 新 睡眠时间上传
- * 限制睡眠在一定时间内请求的次数*//*
-
-
-
- private fun getSleepNew() {
- YCBManager.getHistoryInfo(YCBOrder.SLEEP_DATA) {
- LogUtils.d("getSleep Info!")
- mainScope.launch {
- if (it.isNullOrEmpty()) {
- return@launch
- }
-
- CommonUtils.getMyUserInfo()?.apply {
- try {
- var arraySleep = JSONArray()
- var rawdata = sleepOriganData(it)
- for (i in 0 until it.size) {
- var json = JSONObject()
- var sleepDetailArray = JSONArray() //详细的睡眠时间
- var lastData = it[i] as HashMap<*, *>
- var startTime = lastData["startTime"] as Long
- var endTime = lastData["endTime"] as Long
-
- var lightAll = lastData["lightSleepTotal"] as Int //潜睡时长
- var deepLightAll = lastData["deepSleepTotal"] as Int //深睡时长
-
- var deepSleepCount = lastData["deepSleepCount"] as Int //深睡次数
- var lightSleepCount = lastData["lightSleepCount"] as Int //浅睡次数
-
- var listSleepData = lastData["sleepData"] as ArrayList<*>
-
- listSleepData.forEach {
- var value = it as HashMap<*, *>
- var jsonValue = JSONObject()
- jsonValue.put(
- "sleepStartTime",
- (value["sleepStartTime"] as Long) / 1000
- )
- jsonValue.put("sleepLen", value["sleepLen"] as Int)
- jsonValue.put("sleepType", value["sleepType"] as Int)
- jsonValue.put("userId", id)
- jsonValue.put("createBy", name)
- sleepDetailArray.put(jsonValue)
- }
-
- json.put("userId", id)
- json.put("createBy", name)
- json.put("lightSleepCount", lightSleepCount) //浅睡次数
- json.put("deepSleepCount", deepSleepCount) //深睡次数
- json.put("hmWatchSleepData", sleepDetailArray)
- json.put("lightSleepTotal", max(lightAll, deepLightAll)) //潜睡时长
- json.put("deepSleepTotal", min(lightAll, deepLightAll)) //深睡时长
- json.put("startTime", startTime / 1000) //开始时间
- json.put("endTime", endTime / 1000) //结束时间
- json.put("os", "android")
- if (i == it.size - 1) {
- json.put("original", rawdata.toString())
- } else {
- json.put("original", "---")
- }
- arraySleep.put(json)
- }
- if (arraySleep.length() > 0) {
- mViewModel.uploadSleep(arraySleep)
- }
- } catch (e: Exception) {
- LogUtils.e("睡眠数据上传错误:$e")
- }
- }
- }
- }
- }
-
-*/
-/**
- * 修改背景色*//*
-
-
-
- private fun changeBg(view: View, colId: Int) {
- var bg = view.background as GradientDrawable
- bg.setColor(ContextCompat.getColor(requireContext(), colId))
- bg.mutate()
- }
-
- private val reqGpsPermissionDialog by lazy {
- NoticeSettingDialog(requireContext(), "请打开GPS权限", {
-
- }) {
- // 转到手机设置界面,用户设置GPS
- var intent = Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
- startActivityForResult(intent, 1001) // 设置完成后返回到原来的界面
- }
- }
-
- private fun requestGPSPermission() {
- reqGpsPermissionDialog.show()
- }
-
-*/
-/**
- * 蓝牙链接*//*
-
-
-
- private fun connect(mac: String) {
-
- if (!CommonUtils.isBlueTooth(MMkvHelper.getInt(Const.Watch_Device_Type))) {//如果不是蓝牙设备,不进行连接
- return
- }
-
- if (mac.isNullOrEmpty()) {
- initBlueToothStatu()
- return
- }
-
- if (!checkBlueConnectPermission(requireContext())) {
- CommonToastUtils.showToast("请开启App蓝牙搜索权限!")
- getBluePermission(requireContext()) {
- if (it) {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !isGpsOpen(requireContext())) {
- requestGPSPermission()
- }
- }
- }
- return
- }
-
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !isGpsOpen(requireContext())) {
- CommonToastUtils.showToast("请打开GPS权限!")
- requestGPSPermission()
- return
- }
-
- mainScope.launch(Dispatchers.IO) {
- LogUtils.d("HealthFrag Connect!!!")
- YCBBlueConnectHelper.connectionBlueTooth(mac, true) {
- mainUIUpdate(it)
- }
- }
- }
-
- private fun mainUIUpdate(connectState: YCBBlueConnectHelper.BLEConnectState) {
- mainScope.launch(Dispatchers.Main) {
- when (connectState) {
- YCBBlueConnectHelper.BLEConnectState.Connecting -> {
- setDeviceInfo(
- DeviceInfoBean(
- true,
- YCBBlueConnectHelper.BLEConnectState.Connecting
- )
- )
-// binding.mContent.visibility = View.GONE
-// binding.mEle.visibility = View.VISIBLE
-// binding.mEle.text = getString(R.string.blue_tooth_connecting)
- }
- YCBBlueConnectHelper.BLEConnectState.Connected -> {
- getConnectStatus()
- }
- YCBBlueConnectHelper.BLEConnectState.DisConnect -> {
- //断开连接重置状态 为了重新连接自后可以进行睡眠上传
- initBlueToothStatu()
- }
- }
- }
- }
-
-
- private fun initBlueToothStatu() {
- setDeviceInfo(DeviceInfoBean(blueTooth(), YCBBlueConnectHelper.BLEConnectState.DisConnect))
-// binding.mContent.visibility = View.VISIBLE
-// binding.mEle.visibility = View.GONE
- }
-
- //workmanager 后台上传任务
- @Subscribe(threadMode = ThreadMode.MAIN)
- fun workManagerSuccess(event: WorkManagerEvent) {
- //上传成功回传刷新
- LogUtils.d("work is ok")
- mViewModel.getAllInfo(showIdInfo,false)
- }
-
- //个人信息修改 主界面刷新
- @Subscribe(threadMode = ThreadMode.MAIN)
- fun refresh(event: MyInfoEvent) {
- if (dialogBind.isShowing) {
- dialogBind.dismiss()
- }
- request()
- }
-
- //绑定状态下的蓝牙连接状态
- @Subscribe(threadMode = ThreadMode.MAIN)
- fun blueToothStatus(event: BlueToothConnectEvent) {
- LogUtils.d("blueToothStatus change!!")
- CommonUtils.getBlueToothMac()?.let {
- connect(it)
- }
- }
-
- //家人信息改变 刷新
- @Subscribe(threadMode = ThreadMode.MAIN)
- fun familyChange(event: FamilyEvent) {
- mViewModel.getMyFamilyList()
- }
-
-*/
-/**
- * 重新签名之后隐藏提示框*//*
-
-
-
- @Subscribe(threadMode = ThreadMode.MAIN)
- fun againSignEvent(event: AgainSignEvent) {
- signDialog.dismiss()
- }
-
-*/
-/**
- * 24小时健康状态更新事件*//*
-
-
-
- @Subscribe(threadMode = ThreadMode.MAIN)
- fun health24HourStatusUpdate(event: Health24HourStatusEvent) {
- if (-2 != event.healthStatus) {
- updateHealthDesc(event.healthStatus)
- }
- }
-
-*/
-/**
- * 血糖开通/续费成功*//*
-
-
-
- @Subscribe(threadMode = ThreadMode.MAIN)
- fun xtOpenSuccess(event: XTangOpenEvent) {
- var time = RxTimeTool.getCurrentDateTime("mm").toInt()
- var sPrefix = String.format("%02d", time / 10 * 10) //当前时间对应的整分钟数
- var nowTimeStr = RxTimeTool.getCurrentDateTime("yyyy-MM-dd HH") + ":${sPrefix}" //整点时间
- updateBloodsugarStatus(event.model, nowTimeStr)
- }
-
-*/
-/**
- * 血糖信息更新*//*
-
-
-
- @Subscribe(threadMode = ThreadMode.MAIN)
- fun xtDataUpdate(event: XTangUpdateEvent) {
- LogUtils.d("xtDataUpdate!!!")
- updateBloodSugarInfo(event.info)
- }
-
-*/
-/**
- * 睡眠的原始数据*//*
-
-
-
- private fun sleepOriganData(list: ArrayList): JSONArray {
- var array = JSONArray()
- list.forEach {
- try {
- var json = JSONObject()
- var lastData = it as HashMap<*, *>
-
- var startTime = lastData["startTime"] as Long
- var endTIme = lastData["endTime"] as Long
-
- var l = lastData["lightSleepTotal"] as Int //潜睡时长
- var d = lastData["deepSleepTotal"] as Int //深睡时长
-
- json.put("startTime", startTime)
- json.put("endTime", endTIme)
- json.put("lightSleepTotal", l)
- json.put("deepSleepTotal", d)
-
- var listSleepData = lastData["sleepData"] as ArrayList<*>
- var sleepArray = JSONArray()
- listSleepData.forEach {
- var value = it as HashMap<*, *>
- var jsonValue = JSONObject()
- jsonValue.put("sleepStartTime", (value["sleepStartTime"] as Long))
- jsonValue.put("sleepLen", value["sleepLen"] as Int)
- jsonValue.put("sleepType", value["sleepType"] as Int)
- sleepArray.put(jsonValue)
- }
- json.put("sleepData", sleepArray)
- array.put(json)
- } catch (e: Exception) {
- e.printStackTrace()
- }
- }
- return array
- }
-
-*/
-/**
- * 计算要休眠的时间*//*
-
-
-
- private fun getNowTime() {
- var tenTimes = 11 * 60 * 1000 //整十分钟对应的毫秒数
- var time = RxTimeTool.getCurTimeString(SimpleDateFormat("mm")).toInt()
- var sPrefix = time / 10 //当前时间对应的整分钟数
- var nowTimeStr =
- RxTimeTool.getCurTimeString(SimpleDateFormat("yyyy-MM-dd HH")) + ":${sPrefix * 10}:00" //整点时间
- var nowTimeMill = RxTimeTool.string2Milliseconds(nowTimeStr)//整分钟数对应的毫秒数
-
- var nextTimeMill = nowTimeMill + tenTimes //下个整十分钟数对应的毫秒数
- var sleepSec = nextTimeMill - System.currentTimeMillis() //距离下个时间要休眠的毫秒数
-
- startTenLive(sleepSec)
-
- }
-
-*/
-/**
- * 15秒钟一次更新*//*
-
-
-
- private fun startGetDeviceInfoLive() {
- getDeviceInfoJob = mainScope.launch(Dispatchers.IO) {
- delay(1000 * 15)
- LogUtils.d("休眠结束:${RxTimeTool.curTimeString}")
- getDeviceInfoLive.postValue("")
- }
- }
-
-*/
-/**
- * 十分钟休眠开始
- * times 需要休眠的毫秒数*//*
-
-
-
- private fun startTenLive(times: Long) {
- LogUtils.d("休眠开始时间:${RxTimeTool.curTimeString}")
- LogUtils.d("休眠时长:${times}")
- tenJob = mainScope.launch(Dispatchers.IO) {
- delay(times)
- LogUtils.d("休眠结束:${RxTimeTool.curTimeString}")
- tenLive.postValue("")
- }
- }
-
-*/
-/**
- * 由于SDK问题返回的时间存在秒和毫秒 两种值
- * 这里 返回的类型为毫秒数*//*
-
-
-
- private fun formatTime(time: Long): Long {
- if (time > 9999999999) {
- return time
- }
- return time * 1000
- }
-
- override fun onDestroy() {
- super.onDestroy()
- tenJob?.let {
- it.cancel()
- }
- }
-
-*/
-/**
- * 更新血糖状态*//*
-
-
-
- private fun updateBloodsugarStatus(model: Int, updateTime: String) {
- mHealthAdapter.xtangInfo?.let {
- it.model = model
- it.time = updateTime
- }
- mHealthAdapter.notifyDataSetChanged()
- }
-
- override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
- super.onActivityResult(requestCode, resultCode, data)
- if (resultCode == RESULT_OK) {
- when (requestCode) {
- 1001 -> {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && isGpsOpen(requireContext())) {//如果GPS已打开
- LogUtils.d("GPS Is Open!")
- mainScope.launch {
- CommonUtils.getBlueToothMac()?.let {
- connect(it)
- }
- }
- }
- }
- }
- }
- }
-}
-*/
diff --git a/app/src/main/java/com/zj365/dc/fragment/HealthFrag.kt b/app/src/main/java/com/zj365/dc/fragment/HealthFrag.kt
deleted file mode 100644
index 9c3ddad..0000000
--- a/app/src/main/java/com/zj365/dc/fragment/HealthFrag.kt
+++ /dev/null
@@ -1,2205 +0,0 @@
-/*
-package com.zj365.dc.fragment
-
-import android.app.Activity.RESULT_OK
-import android.content.Intent
-import android.graphics.Typeface
-import android.graphics.drawable.Drawable
-import android.graphics.drawable.GradientDrawable
-import android.os.Build
-import android.provider.Settings
-import android.text.Spannable
-import android.text.SpannableString
-import android.view.View
-import android.view.ViewGroup
-import androidx.core.content.ContextCompat
-import androidx.lifecycle.MutableLiveData
-import androidx.recyclerview.widget.LinearLayoutManager
-import androidx.recyclerview.widget.RecyclerView
-import cn.jpush.android.api.JPushInterface
-import com.shuyu.gsyvideoplayer.listener.VideoAllCallBack
-import com.tamsiree.rxkit.RxTimeTool
-import com.xty.base.fragment.BaseVmFrag
-import com.xty.base.utils.UserInfoDefin
-import com.xty.common.Const
-import com.xty.common.LogUtils
-import com.xty.common.MMkvHelper
-import com.xty.common.UmengEventId
-import com.xty.common.app.MyApp
-import com.xty.common.arouter.ARouterUrl
-import com.xty.common.arouter.RouteManager
-import com.xty.common.bracelet.YCBBlueConnectHelper
-import com.xty.common.bracelet.YCBManager
-import com.xty.common.bracelet.YCBOrder
-import com.xty.common.bracelet.checkBlueConnectPermission
-import com.xty.common.bracelet.getBluePermission
-import com.xty.common.bracelet.isGpsOpen
-import com.xty.common.event.AgainSignEvent
-import com.xty.common.event.BlueToothConnectEvent
-import com.xty.common.event.FamilyEvent
-import com.xty.common.event.Health24HourStatusEvent
-import com.xty.common.event.MyInfoEvent
-import com.xty.common.event.WorkManagerEvent
-import com.xty.common.event.XTangOpenEvent
-import com.xty.common.event.XTangUpdateEvent
-import com.xty.common.marqueen.SimpleMF
-import com.xty.common.onEventObject
-import com.xty.common.services.MqTTService
-import com.xty.common.setImageUser
-import com.xty.common.util.CommonToastUtils
-import com.xty.common.util.CommonUtils
-import com.xty.common.weight.CenterImageSpan
-import com.xty.common.work.MyWorkManger
-import com.xty.health.weight.DeviceChooseDialog
-import com.xty.health.weight.DialogTip
-import com.xty.healthuser.BuildConfig
-import com.xty.healthuser.R
-import com.xty.healthuser.act.MainActivity
-import com.xty.healthuser.adapter.BannerCustomAdapter
-import com.xty.healthuser.adapter.FamilyAdapter
-import com.xty.healthuser.adapter.HealthAdapter
-import com.xty.healthuser.adapter.holder.VideoHolder
-import com.xty.healthuser.databinding.FragHealthBinding
-import com.xty.healthuser.model.DeviceInfoBean
-import com.xty.healthuser.vm.HealthVm
-import com.xty.healthuser.weight.AgainSignDialog
-import com.zj365.mime.weight.NoticeSettingDialog
-import com.xty.network.MyRetrofit
-import com.xty.network.model.BannerBean
-import com.xty.network.model.FamilyBean
-import com.xty.network.model.MainBean
-import com.xty.network.model.MessageBean
-import com.xty.network.model.ReportBean
-import com.xty.network.model.XTangInfoBean
-import com.youth.banner.indicator.RoundLinesIndicator
-import com.youth.banner.listener.OnPageChangeListener
-import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.Job
-import kotlinx.coroutines.delay
-import kotlinx.coroutines.launch
-import org.greenrobot.eventbus.Subscribe
-import org.greenrobot.eventbus.ThreadMode
-import org.json.JSONArray
-import org.json.JSONObject
-import java.text.SimpleDateFormat
-import java.util.regex.Matcher
-import java.util.regex.Pattern
-import kotlin.math.max
-import kotlin.math.min
-
-*/
-/**
- * 健康
- *//*
-
-class HealthFrag : BaseVmFrag() {
- private var isDemonstrate: Boolean = false
- val binding by lazy { FragHealthBinding.inflate(layoutInflater) }
-
- //重签名
- private val signDialog by lazy {
- AgainSignDialog(requireContext(), {
- RouteManager.goAct(ARouterUrl.LOGIN_ACT)
- requireActivity().finish()
- }) {
- RouteManager.goAct(ARouterUrl.AGAIN_SIGN)
- }
- }
- var canGoto24Healthresult: Boolean = true
-
- //家人列表适配器
- private val mFamilyAdapter by lazy { FamilyAdapter() }
-
- private val mHealthAdapter by lazy { HealthAdapter(requireContext()) }
-
- private val mBannerAdapter by lazy { BannerCustomAdapter(requireContext()) }
-
- private var showIdInfo = "" //需要显示的信息的id
- override fun setViewModel() = HealthVm()
-
- */
-/**----------------*//*
-
- val tenLive by lazy { MutableLiveData() }
- var tenJob: Job? = null
-
- val getDeviceInfoLive by lazy { MutableLiveData() }
- var getDeviceInfoJob: Job? = null
- var isRefresh = true
-
- var reportBean: ReportBean? = null//24小时日报数据
-
- private val dialogBind by lazy {
- DialogTip(requireContext(), "需绑定安瑜健康手表,才能查看", "去绑定") {
- dialogChooseDevice.show()
- }
- }
- private val dialogInfoUn by lazy {
- DialogTip(requireContext(), "请完善基本信息") {
- RouteManager.goAct(ARouterUrl.INFO_SIMPLE)
- }
- }
- private val dialogChooseDevice by lazy {
- DeviceChooseDialog(requireContext()) {
- bundle.clear()
- bundle.putInt("type", it)
- RouteManager.goAct(ARouterUrl.DEVICE_ACTIVE, bundle)
- }
- }
-
- override fun setLayout(): View = binding.root
- override fun initView() {
- super.initView()
- statusBar(binding.statusBar)
-
- initFamilyAdapter()
- request()
- refresh()
-
- binding.mBanner.addBannerLifecycleObserver(this)
- .setAdapter(mBannerAdapter)
- .setIndicator(RoundLinesIndicator(context))
- .setIndicatorSelectedWidth(dp2px(15))
- .addOnPageChangeListener(onPageChangeListener)
-
- mBannerAdapter.setOnBannerListener { data, position ->
- var bannerBean = data as BannerBean
- onEventObject(
- requireContext(),
- UmengEventId.Banner,
- "type:${bannerBean.bannerType}; 标题:${bannerBean.title}"
- )
- when (bannerBean.bannerType) {
- 1 -> {//图片
-
- }
-
- 5 -> { //内部跳转
- bundle.clear()
- bundle.putString("title", bannerBean.title)
- bundle.putString("url", bannerBean.linkAddress)
- RouteManager.goAct(ARouterUrl.WEB_ACT, bundle)
- }
-
- 10 -> {//web 跳转
- bundle.clear()
- bundle.putString("title", bannerBean.title)
- bundle.putString("url", bannerBean.linkAddress)
- RouteManager.goAct(ARouterUrl.WEB_ACT, bundle)
- }
-// 15 -> {//视频(如果是视频的话收不到该事件)
-// if (binding.mBanner.adapter.viewHolder imCards VideoHolder) {
-// val holder = binding.mBanner.adapter.viewHolder as VideoHolder
-// var player = holder.player
-// player.onPrepared()
-// }
-// }
- }
- }
-
- binding.mOrganView.mGridView.adapter = mHealthAdapter
- binding.mOrganView.mGridView.setOnItemClickListener { parent, view, position, id ->
- onEventObject(requireContext(), UmengEventId.HealthMonitor, pageNames[position])
- when (val index = pageIndexs[position]) {
- 6 -> { //血糖
- mHealthAdapter.xtangInfo?.apply {
-// if (model == 0) {
-// bundle.clear()
-// bundle.putBoolean("isOpen", false)
-// if (showIdInfo.isNullOrEmpty()) {//给自己开通
-// bundle.putString("id", CommonUtils.getMyUserId())
-// } else {//给他人开通
-// bundle.putString("id", showIdInfo)
-// }
-//
-// RouteManager.goAct(ARouterUrl.XT_OPEN, bundle)
-// } else {
-// goPage(index)
-// }
- goPage(index)
- }
- }
-
- 7 -> {//心电
- if (MMkvHelper.getInt(Const.Watch_Device_Type) == -1) { //演示模式
- CommonToastUtils.showToast("尊敬的用户您好,血脂功能暂未开放,敬请期待哦~")
- } else if (MMkvHelper.getInt(Const.Watch_Device_Type) == Const.Companion.WatchDevice.LightA3.ordinal) {//4G手表
- CommonToastUtils.showToast("尊敬的用户您好,血脂功能暂未开放,敬请期待哦~")
- } else {
- if (showIdInfo.isEmpty()) {
- goPage(index)
- } else {
- bundle.clear()
- bundle.putString("id", showIdInfo)
- RouteManager.goAct(ARouterUrl.XD_HISTORY, bundle)
- }
- }
- }
-
- -1 -> {//步数
- if (isDemonstrate) {
-
- return@setOnItemClickListener
- }
- mViewModel.allData.value?.apply {
-// if (data.adorn.wearCount <= 3) {
-// CommonToastUtils.showToast("尊敬的用户您好,您正处于3天建模期,请坚持佩戴")
-// return@setOnItemClickListener
-// }
- bundle.clear()
- bundle.putInt("status", data.adorn.health + 1)
- bundle.putInt("type", 1)
- if (showIdInfo.isNullOrEmpty()) {
- bundle.putString("userId", CommonUtils.getMyUserId())
- } else showIdInfo?.let {
- bundle.putString("userId", it)
- }
- RouteManager.goAct(ARouterUrl.RANK_LIST, bundle)
- }
- }
-
- else -> {
- goPage(index)
- }
- }
- }
-
- setOnClickListener()
- updateWarningStatus()
-
- }
-
- private fun updateWarningStatus() {
- val position = mFamilyAdapter.position
- if (position == 0 || position == -1) {
- if (notifyStatus == 0) {
- //未读
- binding.mCom.llWarning.visibility = View.VISIBLE
- } else {
- //已读
- binding.mCom.llWarning.visibility = View.GONE
- }
- } else {
- binding.mCom.llWarning.visibility = View.GONE
- }
- }
-
- */
-/**
- *
- * -1:步数 0:心率 1:血氧 2:呼吸率 3:体温 4:睡眠 5:血压 6:血糖 7:心电|血脂
- *//*
-
- private val pageIndexs = arrayOf(
- 0, 1, 2, 3, -1, 4, 5, 6, 7
- )
-
- private val pageNames = arrayOf(
- "心率", "血氧", "呼吸率", "体温", "步数", "睡眠", "血压", "血糖", "心电|血脂"
- )
-
- private var onPageChangeListener = object : OnPageChangeListener {
- override fun onPageScrolled(
- position: Int,
- positionOffset: Float,
- positionOffsetPixels: Int
- ) {
- }
-
- override fun onPageSelected(position: Int) {
- var viewHolder = binding.mBanner.adapter.viewHolder
- if (viewHolder is VideoHolder) {
- var player = viewHolder.player
- player.setVideoAllCallBack(object : VideoAllCallBack {
- override fun onStartPrepared(url: String?, vararg objects: Any?) {
- }
-
- override fun onPrepared(url: String?, vararg objects: Any?) {
- }
-
- override fun onClickStartIcon(url: String?, vararg objects: Any?) {
- binding.mBanner.stop()
- binding.mBanner.isAutoLoop(false)
- }
-
- override fun onClickStartError(url: String?, vararg objects: Any?) {
- }
-
- override fun onClickStop(url: String?, vararg objects: Any?) {
- }
-
- override fun onClickStopFullscreen(url: String?, vararg objects: Any?) {
- }
-
- override fun onClickResume(url: String?, vararg objects: Any?) {
- }
-
- override fun onClickResumeFullscreen(
- url: String?,
- vararg objects: Any?
- ) {
- }
-
- override fun onClickSeekbar(url: String?, vararg objects: Any?) {
- }
-
- override fun onClickSeekbarFullscreen(
- url: String?,
- vararg objects: Any?
- ) {
- }
-
- override fun onAutoComplete(url: String?, vararg objects: Any?) {
- println("Test----------onAutoComplete url:$url;objects$objects")
- binding.mBanner.isAutoLoop(true)
- binding.mBanner.start()
- }
-
- override fun onEnterFullscreen(url: String?, vararg objects: Any?) {
- }
-
- override fun onQuitFullscreen(url: String?, vararg objects: Any?) {
- }
-
- override fun onQuitSmallWidget(url: String?, vararg objects: Any?) {
- }
-
- override fun onEnterSmallWidget(url: String?, vararg objects: Any?) {
- }
-
- override fun onTouchScreenSeekVolume(
- url: String?,
- vararg objects: Any?
- ) {
- }
-
- override fun onTouchScreenSeekPosition(
- url: String?,
- vararg objects: Any?
- ) {
- }
-
- override fun onTouchScreenSeekLight(
- url: String?,
- vararg objects: Any?
- ) {
- }
-
- override fun onPlayError(url: String?, vararg objects: Any?) {
- }
-
- override fun onClickStartThumb(url: String?, vararg objects: Any?) {
- }
-
- override fun onClickBlank(url: String?, vararg objects: Any?) {
- }
-
- override fun onClickBlankFullscreen(
- url: String?,
- vararg objects: Any?
- ) {
- }
-
- })
- }
- }
-
- override fun onPageScrollStateChanged(state: Int) {
- }
- }
-
- private fun setOnClickListener() {
- binding.mOrganView.mSub.setOnClickListener(onClickListener)
- binding.mChildView.mGuide1.setOnClickListener(onClickListener)
- binding.mChildView.mGuide2.setOnClickListener(onClickListener)
- binding.mChildView.mGuide4.setOnClickListener(onClickListener)
- binding.mChildView.mReport.setOnClickListener(onClickListener)
- binding.mChildView.ivWarn1.setOnClickListener(onClickListener)
- binding.mChildView.ivWarn2.setOnClickListener(onClickListener)
- binding.mChildView.ivWarn3.setOnClickListener(onClickListener)
- binding.mChildView.ivTongueDiagnosis.setOnClickListener(onClickListener)
- binding.mCom.mCard.setOnClickListener(onClickListener)
- binding.mChildView.mRelInterDk.setOnClickListener(onClickListener)
- binding.mChildView.mRelInterBD.setOnClickListener(onClickListener)
- binding.mChildView.mRelInterFamily.setOnClickListener(onClickListener)
- binding.mCom.mWearManager.setOnClickListener(onClickListener)
- binding.mCom.mBtnBind.setOnClickListener(onClickListener)
- binding.mCom.mMsg.setOnClickListener(onClickListener)
- binding.mCom.mMsgLayout.setOnClickListener(onClickListener)
- binding.mOrganView.llCompare.setOnClickListener(onClickListener)
- }
-
- private var onClickListener = View.OnClickListener {
- when (it.id) {
- R.id.ll_compare -> {//健康对比
- if (isDemonstrate) {
- dialogBind.show()
- return@OnClickListener
- }
- goComparePage()
- }
-
- R.id.mSub -> {//健康监测
- goPage(0)
- }
- //设备连接
- R.id.mWearManager -> {
- if (MMkvHelper.getInt(Const.Watch_Device_Type) == Const.Companion.WatchDevice.LightA3.ordinal) {//4G手表
- RouteManager.goAct(ARouterUrl.WEAR_MANAGER)
- } else if (YCBBlueConnectHelper.getBlueStatus(false)) {//蓝牙手表并已经连接
- RouteManager.goAct(ARouterUrl.DEVICE_SETTING)
- } else {
- if (blueTooth()) {
- bundle.clear()
- bundle.putBoolean("isBind", true)
- bundle.putString("devMac", CommonUtils.getBlueToothMac())
- RouteManager.goAct(ARouterUrl.DEVICE_CONNECT, bundle)
- } else {
- dialogBind.show()
- }
- }
- }
- //消息
- R.id.mMsg, R.id.mMsgLayout -> {
- RouteManager.goAct(ARouterUrl.WARNING_MSG)
- }
- //我的家人
- R.id.mRelInterFamily -> {
- onEventObject(requireContext(), UmengEventId.MyFamily, "首页")
- if (isBind()) {
- RouteManager.goAct(ARouterUrl.FAMILY)
- } else {
- CommonToastUtils.showToast(com.xty.common.R.string.please_bind_device)
- }
- }
- //榜单
- R.id.mRelInterBD -> {
- if (isDemonstrate) {
- dialogBind.show()
- return@OnClickListener
- }
- mViewModel.allData.value?.apply {
- if (data.adorn.activeWear <= 3) {
- CommonToastUtils.showToast("尊敬的用户您好,您正处于3天建模期,请坚持佩戴")
- return@OnClickListener
- }
- onEventObject(requireContext(), UmengEventId.HealthRank)
- bundle.clear()
- bundle.putInt("status", data.adorn.health + 1)
- bundle.putInt("type", 0)
- RouteManager.goAct(ARouterUrl.RANK_LIST, bundle)
- }
-
- }
- //打卡
- R.id.mRelInterDk -> {
- if (isDemonstrate) {
- dialogBind.show()
- return@OnClickListener
- }
- CommonUtils.getMyUserInfo()?.apply {
- onEventObject(requireContext(), UmengEventId.HealthDk)
- bundle.clear()
- bundle.putSerializable("user", this)
- RouteManager.goAct(ARouterUrl.DK_ACT, bundle)
- }
- }
- //评估
- R.id.mCard -> {
- if (isDemonstrate) {
- bundle.clear()
- bundle.putBoolean("isDemonstrate", isDemonstrate)
-// RouteManager.goAct(ARouterUrl.HEALTH_24HOUR_REPORT, bundle)//新24小时
- RouteManager.goAct(ARouterUrl.HEALTH_ESTIMATE, bundle)//新24小时
- return@OnClickListener
- }
-// if (!canGoto24Healthresult) {
-// showToast("数据不足或数据建模中,无法查看健康评估")
-// return@OnClickListener
-// }
- CommonUtils.getMyUserInfo()?.apply {
- bundle.clear()
- bundle.putString("id", showIdInfo)
- bundle.putString(
- "openId",
- if (openId.isNullOrEmpty()) "" else openId
- )
- bundle.putSerializable("reportBean", reportBean)
-// RouteManager.goAct(ARouterUrl.HEALTH_24HOUR_REPORT, bundle)//新24小时
- RouteManager.goAct(ARouterUrl.HEALTH_ESTIMATE, bundle)//新24小时
-// RouteManager.goAct(ARouterUrl.HEALTH_STATUS, bundle)//旧版健康分析改24小时分析接口调用
- }
-
- }
- //防癌
- R.id.ivWarn3 -> {
-// onEventObject(requireContext(), UmengEventId.HealthRisk)
- bundle.clear()
- bundle.putString("id", showIdInfo)
- RouteManager.goAct(ARouterUrl.PRVENT_CANCER, bundle)
-// showToast("功能暂未开通,敬请期待")
- }
- //舌诊
- R.id.ivTongueDiagnosis -> {
-// onEventObject(requireContext(), UmengEventId.HealthRisk)
- bundle.clear()
- bundle.putString("id", showIdInfo)
- RouteManager.goAct(ARouterUrl.TONGUE_MAIN_ACTIVITY, bundle)
-// showToast("功能暂未开通,敬请期待")
- }
- //问卷
- R.id.ivWarn2 -> {
- onEventObject(requireContext(), UmengEventId.HealthRisk)
- bundle.clear()
- bundle.putString("id", showIdInfo)
-// RouteManager.goAct(ARouterUrl.SUBMIT_REPORT, bundle)
- RouteManager.goAct(ARouterUrl.SUBMIT_REPORTMain, bundle)
- }
- //预警
- R.id.ivWarn1 -> {
- if (isDemonstrate) {
- bundle.clear()
- bundle.putString("id", showIdInfo)
- bundle.putInt("page", 1)
- RouteManager.goAct(ARouterUrl.WARRING, bundle)
- return@OnClickListener
- }
- mViewModel.allData.value?.apply {
- data.apply {
- if (adorn.wearCount > 29 && adorn.activeWear > 14) {
- onEventObject(requireContext(), UmengEventId.Health30Day)
- bundle.clear()
- bundle.putString("id", showIdInfo)
- bundle.putInt("page", 1)
- RouteManager.goAct(ARouterUrl.WARRING, bundle)
- } else {
- if (showIdInfo.isEmpty()) {
- onEventObject(
- requireContext(),
- UmengEventId.Health30Day,
- "佩戴未满30天或活跃天数未满15天。"
- )
- CommonToastUtils.showToast("尊敬的用户您好,该功能需要佩戴30天且活跃佩戴15天查看,请坚持佩戴且每日同步数据!")
- } else {
- onEventObject(
- requireContext(),
- UmengEventId.Health30Day,
- "关联用户处于7天建模中!"
- )
- CommonToastUtils.showToast("您关联的用户正处于7天建模中……")
- }
- }
- }
- }
- }
- //健康日报
- R.id.mReport -> {
- onEventObject(requireContext(), UmengEventId.HealthReport, "首页")
- bundle.clear()
- bundle.putString("id", showIdInfo)
- bundle.putBoolean("isDemonstrate", isDemonstrate)
- RouteManager.goAct(ARouterUrl.HEALTH_REPORT, bundle)
- }
- //健康管家
- R.id.mGuide2 -> {
- if (isDemonstrate) {
- dialogBind.show()
- return@OnClickListener
- }
- if (showIdInfo.isNullOrEmpty()) {
- if (isBind()) {
- onEventObject(requireContext(), UmengEventId.HealthAdmin)
- CommonUtils.getMyUserInfo()?.apply {
- bundle.clear()
- bundle.putString("fromUserId", id.toString())
- RouteManager.goAct(ARouterUrl.HOUSE_KEEPER, bundle)
- }
-
- } else {
- onEventObject(requireContext(), UmengEventId.HealthAdmin, "未绑定点击")
- CommonToastUtils.showToast(com.xty.common.R.string.please_bind_device)
- }
- } else {
- onEventObject(requireContext(), UmengEventId.HealthAdmin, "关注家人点击")
- CommonToastUtils.showToast("不支持上传家人健康信息")
- }
- }
- //健康方案
- R.id.mGuide_1 -> {
-// Const.mainLiveData.value?.apply {
-// bundle.clear()
-// bundle.putString("id", showIdInfo)
-// RouteManager.goAct(ARouterUrl.HEALTH_PROP, bundle)
-// }
- if (isDemonstrate) {
- dialogBind.show()
- return@OnClickListener
- }
- onEventObject(requireContext(), UmengEventId.HealthProgrammes, "首页")
- RouteManager.goAct(ARouterUrl.MY_PROG)
- }
-
- R.id.mGuide_4 -> {
- RouteManager.goAct(ARouterUrl.DATA_MANAGE)
-// RouteManager.goAct(ARouterUrl.MY_UPLOAD)
- }
- //绑定
- R.id.mBtnBind -> {
- dialogChooseDevice.show()
- }
- }
- }
-
- private fun goComparePage() {
- bundle.clear()
- bundle.putString("id", showIdInfo)
- RouteManager.goAct(ARouterUrl.COMPARE_PAGE_DATA_ACT, bundle)
- }
-
- */
-/**
- * 设置设备信息
- *//*
-
- private fun setDeviceInfo(deviceInfo: DeviceInfoBean?) {
- if (null != deviceInfo) {
- if (blueTooth()) {
- binding.mCom.mWatchType.text = getString(R.string.blue_tooth)
- val drawable = getDrawable(R.mipmap.ic_watch_bluetooth)
- drawable!!.setBounds(0, 0, drawable.minimumWidth, drawable.minimumHeight)
- binding.mCom.mWatchType.setCompoundDrawables(drawable, null, null, null)
- } else {
- binding.mCom.mWatchType.text = getString(R.string.lite_4g)
- val drawable = getDrawable(R.mipmap.ic_watch_4g)
- drawable!!.setBounds(0, 0, drawable.minimumWidth, drawable.minimumHeight)
- binding.mCom.mWatchType.setCompoundDrawables(drawable, null, null, null)
- }
- binding.mCom.mBindState.visibility = View.VISIBLE
- if (deviceInfo.bindState) {//已绑定
- binding.mCom.mBindState.apply {
- text = "已绑定"
- background = null
- val drawable = getDrawable(R.mipmap.ic_bangding)
- drawable!!.setBounds(0, 0, drawable.minimumWidth, drawable.minimumHeight)
- setCompoundDrawables(drawable, null, null, null)
- }
-
- when (deviceInfo.connectState) {
- YCBBlueConnectHelper.BLEConnectState.Connected -> {//已连接
- binding.mCom.mConnectStatu.apply {
- setBackgroundResource(R.drawable.shape_bind_bg_new_2)
- text = deviceInfo.battery
- setTextColor(resources.getColor(R.color.col_27B8, null))
- var drawable: Drawable = getDrawable(R.mipmap.ic_battery)
- if (!deviceInfo.battery.isNullOrEmpty()) {
- val str =
- deviceInfo.battery.substring(2, deviceInfo.battery.length - 1)
- val pattern: Pattern = Pattern.compile("[0-9]*")
- val isNum: Matcher = pattern.matcher(str)
- if (isNum.matches()) {
- val battery = str.toInt()
- drawable = if (battery > 20) {
- getDrawable(R.mipmap.ic_battery)
-// } else if (battery > 70) {
-// getDrawable(R.mipmap.ic_battery_90)
-// } else if (battery > 50) {
-// getDrawable(R.mipmap.ic_battery_70)
-// } else if (battery > 30) {
-// getDrawable(R.mipmap.ic_battery_50)
-// } else if (battery > 10) {
-// getDrawable(R.mipmap.ic_battery_30)
- } else {
- setTextColor(resources.getColor(R.color.col_2628, null))
- text =
- context.resources.getString(R.string.health_low_battery)
- setBackgroundResource(R.drawable.shape_bind_bg_new_1)
- getDrawable(R.mipmap.ic_diancbuz)
- }
- }
- }
- drawable!!.setBounds(
- 0,
- 0,
- drawable.minimumWidth,
- drawable.minimumHeight
- )
- setCompoundDrawables(drawable, null, null, null)
- }
- }
-
- YCBBlueConnectHelper.BLEConnectState.Connecting -> {//连接中
- binding.mCom.mConnectStatu.apply {
- text = "连接中..."
- setCompoundDrawables(null, null, null, null)
- }
- }
-
- YCBBlueConnectHelper.BLEConnectState.DisConnect -> {//未连接
- binding.mCom.mConnectStatu.apply {
- text = "未连接"
- val drawable = getDrawable(R.mipmap.ic_not_connect)
- drawable!!.setBounds(
- 0,
- 0,
- drawable.minimumWidth,
- drawable.minimumHeight
- )
- setCompoundDrawables(drawable, null, null, null)
- }
- }
- }
-
- binding.mCom.mConnectStatu.visibility = View.VISIBLE
- } else {
- binding.mCom.mBindState.apply {
- text = "未绑定"
- val drawable = getDrawable(R.mipmap.ic_unbind)
- drawable!!.setBounds(0, 0, drawable.minimumWidth, drawable.minimumHeight)
- setCompoundDrawables(drawable, null, null, null)
- }
- binding.mCom.mConnectStatu.visibility = View.GONE
- }
- } else {
- binding.mCom.mWatchType.text = getString(R.string.blue_tooth)
- val drawable = getDrawable(R.mipmap.ic_watch_bluetooth)
- drawable!!.setBounds(0, 0, drawable.minimumWidth, drawable.minimumHeight)
- binding.mCom.mWatchType.setCompoundDrawables(drawable, null, null, null)
- binding.mCom.mBindState.visibility = View.GONE
- binding.mCom.mConnectStatu.visibility = View.GONE
- }
- }
-
- */
-/**
- * 设置天气信息
- *//*
-
- private fun setWeatherInfo(weather: MainBean.Weather?) {
-// if (null == weather) {
-// binding.mCom.tvLocationWeather.visibility = View.GONE
-// } else {
-// weather.apply {
-// if (city.isNullOrEmpty() || weatherNo.isNullOrEmpty()) {
-// binding.mCom.tvLocationWeather.visibility = View.GONE
-// return
-// }
-// binding.mCom.tvLocationWeather.text = "${city} ${weatherInfo}"
-// var icon = when (weatherNo) {
-// "32" -> {//晴天
-// R.mipmap.weather_sunny
-// }
-// "44" -> {//多云
-// R.mipmap.weather_cloudy
-// }
-// "20" -> {//阴天
-// R.mipmap.weather_yin
-// }
-// "12" -> {//雨天
-// R.mipmap.weather_rain
-// }
-// "45" -> {//雷阵雨
-// R.mipmap.weather_thunder_shower
-// }
-// "16" -> {//雪
-// R.mipmap.weather_snow
-// }
-// else -> {
-// R.mipmap.weather_sunny
-// }
-// }
-// val drawable = getDrawable(icon)
-// drawable!!.setBounds(0, 0, drawable.minimumWidth, drawable.minimumHeight)
-// binding.mCom.tvLocationWeather.setCompoundDrawables(null, null, drawable, null)
-// binding.mCom.tvLocationWeather.visibility = View.VISIBLE
-// }
-// }
- }
-
- */
-/**
- * 设置设备信息
- *//*
-
- private fun setBindDeviceInfo(deviceInfo: MainBean.DeviceTotal?) {
- deviceInfo?.let {
- binding.mChildView.tvXueyaNum.text = "已绑定" + it.sphygmomanometer + "台"
- binding.mChildView.tvXuetangNum.text = "已绑定" + it.bloodGlucose + "台"
- }
- binding.mChildView.llXueya.setOnClickListener {
- //已绑定血压列表
- RouteManager.goAct(ARouterUrl.XUEYAJI_BIND_LIST, null)
- }
- binding.mChildView.llXuetang.setOnClickListener {
- //已绑定血糖列表
- RouteManager.goAct(ARouterUrl.XUETANGYI_BIND_LIST, null)
- }
- }
-
- // 刷新注册
- private fun refresh() {
- refresh.setRefresh(binding.mRefresh) {
- getXtInfo(showIdInfo)
- get24HourReportInfo(showIdInfo)
- request()
- uploadWhatchData()
- }
- }
-
- private fun request() {
- mViewModel.getBanners(CommonUtils.getMyUserId())//当期登录用户id
-
- mViewModel.getAllInfo(showIdInfo, false)
- mViewModel.getDkInfo(false, showIdInfo)
- // 如果显示的是家人Tab则不刷新用户信息,防止头像错乱
- if (mFamilyAdapter.position < 1) {
- mViewModel.getMySetting()
- }
- mViewModel.getMyFamilyList()
- mViewModel.getTips()
- mViewModel.getRank(2)
- }
-
- //蓝牙连接状态之后 数据上传
- private fun getConnectStatus() {
- LogUtils.d("getConnectStatus!")
- if (YCBBlueConnectHelper.getBlueStatus(false)) {
- LogUtils.d("start get DeviceInfo!")
-
- //连接之后 直接进行数据的同步
- YCBManager.getDeviceInfo { isok, value ->
- mainScope.launch {
- LogUtils.d("getDeviceInfo isOk:$isok;;; value=$value")
- if (isok) {//获取到设备信息,设备准备就绪上传手表数据
-// binding.mCom.visibility = View.GONE
-// binding.mEle.visibility = View.VISIBLE
-// binding.mEle.text = value
- setDeviceInfo(
- DeviceInfoBean(
- true,
- YCBBlueConnectHelper.BLEConnectState.Connected,
- value
- )
- )
-
- uploadWhatchData()
-
- mViewModel.settingLive.value?.let {
- MyWorkManger.setMyWork(
- MyApp.instance!!,
- it.data.user.bluetooth
- ) //开启后台定时上传任务
- }
-
- } else {//如果获取手表信息失败,断开连接以后让用户手动连接
- YCBBlueConnectHelper.disconnect()
- initBlueToothStatu()
- }
- }
- }
- } else {
- //断开连接重置状态 为了重新连接自后可以进行睡眠上传
- initBlueToothStatu()
- }
- }
-
- private fun blueTooth(): Boolean {
-
-// CommonUtils.getBlueToothMac()?.let {
-// if (!it.isNullOrEmpty()) {
-// return true
-// }
-// }
- return CommonUtils.isBlueTooth(MMkvHelper.getInt(Const.Watch_Device_Type)) && !CommonUtils.getBlueToothMac()
- .isNullOrEmpty()
- }
-
-
- */
-/**
- * 是否绑定了设备
- *//*
-
- private fun isBind(): Boolean {
- return true
- */
-/* Const.mainLiveData?.value?.let {
- if(!it.user.bluetooth.isNullOrEmpty()){
- return true
- }
- }
- return false*//*
-
- }
-
- //界面跳转
- fun goPage(page: Int) {
- if (isBind()) {
- bundle.clear()
- bundle.putInt("page", page)
- bundle.putBoolean("isDemonstrate", isDemonstrate)
- bundle.putString("id", showIdInfo)
- RouteManager.goAct(ARouterUrl.HEALTHMAIN, bundle)
- } else {
- CommonToastUtils.showToast(R.string.please_bind_device)
- }
- }
-
- private fun setTips(datas: List) {
-// val datas: List = listOf(
-// "《赋得古原草送别》",
-// "离离原上草,一岁一枯荣。",
-// "野火烧不尽,春风吹又生。",
-// "远芳侵古道,晴翠接荒城。",
-// "又送王孙去,萋萋满别情。"
-// )
- val marqueeFactory: SimpleMF = SimpleMF(context)
- marqueeFactory.data = datas
- binding.mCom.simpleMarqueeView.setMarqueeFactory(marqueeFactory)
- binding.mCom.simpleMarqueeView.setDrawable(
- getDrawable(R.mipmap.ic_tips_new),
- null,
- null,
- null
- )
- if (binding.mCom.simpleMarqueeView.isFlipping) {
- binding.mCom.simpleMarqueeView.stopFlipping()
- }
-// binding.mCom.simpleMarqueeView.flipInterval = 3 * 1000//轮播间隔时间
- binding.mCom.simpleMarqueeView.startFlipping()
- }
-
- private fun updateBadgeNum(num: Int) {
- if (num > 0) {
- var badgeText = if (num > 99) "99+" else "$num"
- binding.mCom.mBadge.text = badgeText
- binding.mCom.mBadge.post {
- val layoutParams = binding.mCom.mBadge.layoutParams as ViewGroup.LayoutParams
- val text = binding.mCom.mBadge.text.toString()
- binding.mCom.mBadgeCard.radius = binding.mCom.mBadge.height / 2f
- var textWidth = binding.mCom.mBadge.paint.measureText(text)
- if (binding.mCom.mBadge.height >= textWidth) { //等宽高的圆形
- layoutParams.width = binding.mCom.mBadge.height
-
- } else { //宽高不等 将宽度两边加10
- layoutParams.width = textWidth.toInt() + 20
- }
- binding.mCom.mBadge.layoutParams = layoutParams
- }
- binding.mCom.mBadgeCard.visibility = View.VISIBLE
- } else {
- binding.mCom.mBadgeCard.visibility = View.GONE
- }
- }
-
- override fun onResume() {
- super.onResume()
- mViewModel.getWarningMsg()
- }
-
- override fun observer() {
- //预警消息
- mViewModel.warningMsgLive.observe(this) {
- updateBadgeNum(it.data.noReadNum)
- val systemMessage = it.data.systemMessage
- if (systemMessage != null && systemMessage.isNotEmpty()) {
- val sysMsg = systemMessage[0]
- updateWarningInfo(sysMsg)
- } else {
- updateWarningInfo(null)
- }
- }
-
- //首页轮播图
- mViewModel.bannerLive.observe(this) {
- if (null == it) {
- return@observe
- }
- mBannerAdapter.setDatas(it.data)
- mBannerAdapter.notifyDataSetChanged()
- }
-
- //手表信息组装上传
- mViewModel.allDataInfo.observe(this) {
- if (null == it || it["data"] == null || it["data"] !is ArrayList<*>) {
- LogUtils.d("手表数据:暂时无数据...")
- getXtInfo(showIdInfo)//如果手表没数据也需要获取获取血糖信息
- get24HourReportInfo(showIdInfo)//如果手表没数据也需要获取24小时日报
- return@observe
- }
-
- LogUtils.d("手表数据:全部信息开始上传...")
- //是否为错误数据
- var existError = false
-
- val lists = it["data"] as ArrayList
- var array = JSONArray()
- lists.forEach { bean ->
-
- var json = JSONObject()
- var nowData = bean as java.util.HashMap
- val iterator = nowData.iterator()
- while (iterator.hasNext()) {
- val next = iterator.next()
- var values = if (next.value is Long) (next.value as Long) / 1000 else next.value
- when (next.key) {
- "OOValue" -> json.put("ooValue", values)
-
- "DBPValue" -> {
- var sbp = nowData["SBPValue"] as Int
- var dbp = nowData["DBPValue"] as Int
- //医学上是大值 收缩压
- //小值
- json.put("sbpValue", min(sbp, dbp))
- }
-
- "SBPValue" -> {
- //医学上是小值 舒张压
- //大值
- var sbp = nowData["SBPValue"] as Int
- var dbp = nowData["DBPValue"] as Int
- json.put("dbpValue", max(sbp, dbp))
- }
-
- else -> json.put(next.key, values)
- }
- }
- if (json.has("startTime")) {
- var times = json.get("startTime").toString().toLong()
-
- if (times < 0 || times > System.currentTimeMillis() / 1000) { //错误数据 不使用
- existError = true
- } else {
- array.put(json)
- }
- }
- }
- //错误数据保存到本地日志
- if (existError) {
- // saveFile(it.toString()) //存到本地日志
- }
-
- LogUtils.d("手表数据:array Length:${array.length()}")
- if (array.length() > 0) {
-// var lastJson = array[array.length() - 1] as JSONObject
-// lastJson.put("original", it.toString())
- mViewModel.uploadAllInfo(array)
- }
- }
-
- //手表数据上传
- mViewModel.uploadMultiple.observe(this) {
- CommonToastUtils.showSucceedToast(R.string.upload_data_success)
- LogUtils.d("all data upload success ")
- get24HourReportInfo(showIdInfo)//数据上传成功后获取24小时日报
- getXtInfo(showIdInfo)//数据上传成功后获取血糖信息
- YCBManager.deleteHistory(YCBOrder.DELETE_ALL) //删除 数据
- mainScope.launch {
- delay(500)
- mViewModel.getAllInfo(showIdInfo, false)
- }
- }
- //睡眠上传
- mViewModel.uploadSleep.observe(this) {
- //睡眠上传成功 清除睡眠数据
- LogUtils.d("sleep upload success ")
- YCBManager.deleteHistory(YCBOrder.SLEEP_HISTORY)
- //clearSleep()
- }
-
- //步数上传
- mViewModel.uploadStep.observe(this) {
- //步数上传成功
- //YCBManager.deleteHistory(YCBOrder.STEP_HISTORY)
- LogUtils.d("step upload success ")
- mViewModel.getDkInfo(false, showIdInfo)
- }
-
- //小贴士
- mViewModel.tipsLive.observe(this) {
- LogUtils.d("TipsData:${it.data.size}")
- var list = mutableListOf()
- it.data.forEach { tipsBean ->
- list.add("${tipsBean.title}${tipsBean.content}")
- }
- setTips(list)
- }
-
- //步数信息
- mViewModel.dkInfo.observe(this) {
- mHealthAdapter.dkBean = it.data
- mHealthAdapter.notifyDataSetChanged()
- }
-
- //排名信息
- mViewModel.rankLive.observe(this) {
- val content = getString(
- R.string.rank_num,
- if (it.data.userRank == 0) "-" else "${it.data.userRank}"
- )
- binding.mChildView.tvBdContent.text = setStrSpan(
- content,
- 15,
- getColor(R.color.col_25C),
- Typeface.BOLD,
- content.length - 1 - (it.data.userRank).toString().length,
- content.length - 1
- )
- }
-
- //个人设置信息获取
- mViewModel.settingLive.observe(this) {
- if (null == it.data) return@observe
- it.data.let { settingBean ->
-
- if (BuildConfig.isRelease) {//设置极光推送别名
- JPushInterface.setAlias(
- requireContext(),
- settingBean.user.id.toInt(),
- "user_release_${settingBean.user.id}"
- )
- }
-
- Const.mainLiveData.value = settingBean
- mViewModel.getWelcomeInfo(settingBean.user.id)
- mViewModel.getWarningMsg()//获取预警消息
-
- requestByDeviceModel()
- // 激活过才能开启定是我任务
- //Log.e("worker", "定时任务开启")
-
- if (!mFamilyAdapter.data.isNullOrEmpty() && mFamilyAdapter.data.size > 0) {
- mFamilyAdapter.data[0].avatarUrl =
- if (settingBean.user.avatarUrl.isNullOrEmpty()) "" else settingBean.user.avatarUrl
- }
-
- //设置用户头像
- setUserImage(settingBean.user.id, settingBean.user.avatarUrl)
-
- if (settingBean.user.bluetooth.isNullOrEmpty()) { //没有mac地址表示未绑定
-// binding.mContent.visibility = View.VISIBLE
- binding.mCom.mLayoutResult.visibility = View.GONE
- binding.mCom.mBtnBind.visibility = View.VISIBLE
- setDeviceInfo(DeviceInfoBean(false))
-// if (!(activity as MainActivity).isDialogShow) {
-// dialogBind.show()
-// }
- } else {
- binding.mCom.mLayoutResult.visibility = View.VISIBLE
- binding.mCom.mBtnBind.visibility = View.GONE
- //重新签名提示
- var signTime = settingBean.user.esignatureDate
- if (!signTime.isNullOrEmpty()) {
- var againTime = RxTimeTool.string2Milliseconds("2022-07-01 21:00:00")
- var signTime = RxTimeTool.string2Milliseconds(signTime)
- if (signTime < againTime) {
- signDialog.show()
- }
- }
- MyRetrofit.get().BLUETOOTH_MAC = settingBean.user.bluetooth
- if (CommonUtils.isBlueTooth(MMkvHelper.getInt(Const.Watch_Device_Type))) {//如果是蓝牙设备
- startGetDeviceInfoLive()
- if (settingBean.user.bluetooth != MMkvHelper.getString(Const.Blue_Tooth)) {//如果不是同一设备
- YCBBlueConnectHelper.disconnect()//断开蓝牙,断开后收到BlueToothConnectEvent会自动连接
- YCBBlueConnectHelper.cancelTimer()
- } else {
- LogUtils.d("startConnect::${settingBean.user.bluetooth}")
- mainUIUpdate(YCBBlueConnectHelper.BLEConnectState.Connecting)//刷新蓝牙连接状态
- connect(settingBean.user.bluetooth)
- }
- }
- }
-
- if (Const.Companion.WatchDevice.LightA3.ordinal == Const.watchType) {//如果是4G设备,设置连接状态与电量信息
- setDeviceInfo(
- DeviceInfoBean(
- true,
- YCBBlueConnectHelper.BLEConnectState.Connected,
- if (Const.battery.isNullOrEmpty()) "" else "电量${Const.battery}%"
- )
- )
- get24HourReportInfo(showIdInfo)// 这里调用一次接口,防止首次进入App不会刷新评估状态
- }
-
- MMkvHelper.put(Const.Blue_Tooth, settingBean.user.bluetooth)
- if (!settingBean.user.deviceId.isNullOrEmpty()) {
- Const.DeviceIdNum = settingBean.user.deviceId
- } else {
- Const.DeviceIdNum = ""
- }
-// MMkvHelper.saveAccountConfig(requireContext(),settingBean.user.phone,Const.DEVICE_TYPE, settingBean.user.deviceId)
- }
- //个人信息拿到之后再去获取mqtt信息
- mViewModel.getMqttInfo()
- }
-
- //血糖信息获取
- mViewModel.xtInfo.observe(this) {
- updateBloodSugarInfo(it.data)
- }
-
- //获取首页所有信息返回
- mViewModel.allData.observe(this) {
- it.data.let { bean ->
-
- if (null == bean) {
- LogUtils.e("没得数据,不做任何处理!")
- return@observe
- }
-
- if (bean.user.name.isNullOrEmpty()) {
- dialogInfoUn.show()
- }
- isDemonstrate = bean.demonstrate == 1 //1 演示模式,0 普通模式
- (requireActivity() as MainActivity).isDemonstrate = isDemonstrate
- if (isDemonstrate) {
- binding.mCom.mWearInfo.visibility = View.INVISIBLE
- binding.mCom.mWatchType.visibility = View.INVISIBLE
- } else {
- binding.mCom.mWatchType.visibility = View.VISIBLE
- binding.mCom.mWearInfo.visibility = View.VISIBLE
- }
- if (mFamilyAdapter.position != -1) {
- if (mFamilyAdapter.getItem(mFamilyAdapter.position).userJointId != bean.user.id.toInt()) {
- if (mFamilyAdapter.position == 0 && bean.user?.id.toString() == CommonUtils.getMyUserId()) {//如果是自己加载用户头像并保存用户信息
- } else {
- LogUtils.e("当前用户与请求用户信息不一致,不作处理!")
- return@observe
- }
- }
- }
-
- if (showIdInfo.isEmpty()) { //自己
-// binding.mChildView.mGuide2.visibility = View.VISIBLE
- binding.mChildView.mInter.visibility = View.VISIBLE
- binding.mChildView.lleach.visibility = View.VISIBLE
- } else {
-// binding.mChildView.mGuide2.visibility = View.GONE//隐藏健康管家
- binding.mChildView.mInter.visibility = View.GONE//隐藏健康互动标题
- binding.mChildView.lleach.visibility = View.GONE//隐藏健康打卡,榜单,我的家人功能
- Const.otherLiveData.value = bean
- }
- setWeatherInfo(bean.weather)
- Const.battery = bean.power
- Const.watchType = bean.watchType
- MMkvHelper.put(Const.Watch_Device_Type, bean.watchType)
- if (Const.Companion.WatchDevice.LightA3.ordinal == bean.watchType) {//如果是4G设备,设置连接状态与电量信息
- setDeviceInfo(
- DeviceInfoBean(
- true,
- YCBBlueConnectHelper.BLEConnectState.Connected,
- if (Const.battery.isNullOrEmpty()) "" else "电量${Const.battery}%"
- )
- )
- get24HourReportInfo(showIdInfo)// 这里调用一次接口,防止首次进入App不会刷新评估状态
- } else {
- if (showIdInfo.isEmpty()) { //自己
- val localBlueMac = MMkvHelper.getString(Const.Blue_Tooth)
- if (!localBlueMac.isNullOrEmpty() && YCBBlueConnectHelper.getBleNowStatus() == YCBBlueConnectHelper.BLEConnectState.DisConnect) {//如果本地有蓝牙信息且属于未连接状态,则直接连接
- LogUtils.d("startConnect::${localBlueMac}")
- mainUIUpdate(YCBBlueConnectHelper.BLEConnectState.Connecting)//刷新蓝牙连接状态
- connect(localBlueMac)
- } else if (YCBBlueConnectHelper.getBleNowStatus() == YCBBlueConnectHelper.BLEConnectState.Connected) {
- getConnectStatus()
- }
- } else {
- setDeviceInfo(null)
- }
-
- }
- mHealthAdapter.mainBean = bean
- mHealthAdapter.notifyDataSetChanged()
- //总佩戴 活跃 休眠
- binding.mCom.mWearInfo.text = getString(
- R.string.wear_info,
- bean.adorn?.wearCount?.toString(),
- bean.adorn?.activeWear?.toString(),
- bean.adorn.dormancy?.toString()
- )
- setBindDeviceInfo(bean.deviceTotal)
- }
-
- }
- //环信服务器连接
- mViewModel.mqtt.observe(this) {
- it.data.appUserId = mViewModel.settingLive.value!!.data.user.id.toString()
- var intent = requireActivity().intent
- intent.putExtra("bean", it.data)
- intent.setClass(requireContext(), MqTTService::class.java)
- requireActivity().startService(intent)
- }
-
- //我家人信息
- mViewModel.familyLive.observe(this) {
- it.data.add(0, FamilyBean().apply {
- this.fCall = "我"
- })
- var selectPosition = 0
- if (showIdInfo.isNotEmpty()) {
- it.data.forEachIndexed { index, familyBean ->
- if (showIdInfo == familyBean.userJointId.toString()) {
- selectPosition = index
- return@forEachIndexed
- }
- }
- //如果家人解绑了 则直接查自己的
- if (selectPosition == 0) {
- showIdInfo = ""
- }
- }
-
- val content =
- getString(R.string.family_num, "" + "${it.data.size - 1}")
- binding.mChildView.tvFamilyContent.text = setStrSpan(
- content,
- 15,
- getColor(R.color.col_25C),
- Typeface.BOLD,
- content.length - 3 - (it.data.size - 1).toString().length,
- content.length - 3
- )
- it.data.add(FamilyBean().apply {
- this.fCall = "家人"
- })
- mFamilyAdapter.position = selectPosition
- mFamilyAdapter.setNewInstance(it.data)
- }
-
- //定时上报任务
- tenLive.observe(this) {
- LogUtils.d("整十分钟定时任务开启:${RxTimeTool.curTimeString}")
- //开启下一个整10分的休眠
- getNowTime()
- //上传数据
- uploadWhatchData()
- }
-
- //15秒钟更新一次蓝牙设备信息
- getDeviceInfoLive.observe(this) {
- LogUtils.d("定时更新一次蓝牙设备信息:${RxTimeTool.curTimeString}")
- startGetDeviceInfoLive()
-
- if (!MMkvHelper.contains(Const.Watch_Device_Type)) {//没有手表型号
- LogUtils.d("没有获取到手表型号")
- return@observe
- }
-
- if (!CommonUtils.isBlueTooth(MMkvHelper.getInt(Const.Watch_Device_Type))) {//不是蓝牙设备
- LogUtils.d("不是蓝牙设备!")
- return@observe
- }
-
- if (!YCBBlueConnectHelper.getBlueStatus(false)) {//蓝牙未连接
- LogUtils.d("蓝牙设备未连接!")
- return@observe
- }
-
- if ((!showIdInfo.isNullOrEmpty() && showIdInfo != CommonUtils.getMyUserId())) {//不是当前用户
- LogUtils.d("当前用户与showIdInfo不匹配!")
- return@observe
- }
-
- LogUtils.d("定时获取一次 DeviceInfo!")
- //连接之后 直接进行数据的同步
- YCBManager.getDeviceInfo { isok, value ->
- mainScope.launch {
- LogUtils.d("getDeviceInfo isOk:$isok;;; value=$value")
- if (isok) {//获取到设备信息,设备准备就绪上传手表数据
- setDeviceInfo(
- DeviceInfoBean(
- true,
- YCBBlueConnectHelper.BLEConnectState.Connected,
- value
- )
- )
- }
- }
- }
- }
-
- //24小时健康报告返回信息
- mViewModel.infoLive.observe(this) {
- if (null == it.data) {
- LogUtils.e("返回数据为空!")
- return@observe
- }
-
- if (null == it.data.healthy) {
- LogUtils.e("健康信息数据为空!")
- return@observe
- }
-
- if (mFamilyAdapter.position != -1) {
- if (mFamilyAdapter.getItem(mFamilyAdapter.position).userJointId != it.data.user?.id) {
- if (mFamilyAdapter.position == 0 && it.data.user?.id.toString() == CommonUtils.getMyUserId()) {//如果是自己,啥也不做
-
- } else {
- LogUtils.e("当前用户与请求用户信息不一致,不作处理!")
- return@observe
- }
- }
- }
-
- reportBean = it.data
-
- var healthResult = it.data.healthy.result
- updateHealthDesc(healthResult)
- //健康状态
- binding.mCom.mHealthStatus.setImageResource(UserInfoDefin.healthIcon[healthResult + 1])
- updateStarInfo(
- healthResult,
- if (it.data.star.isNullOrEmpty()) 0 else it.data.star.toInt()
- )
-// if (healthResult == 3) {
-// binding.mCom.mHealthStatus.setCompoundDrawables(null, null, null, null)
-// } else {
-// var drawable = ContextCompat.getDrawable(
-// requireContext(),
-// UserInfoDefin.healthIcon[healthResult + 1]
-// )
-// drawable!!.setBounds(0, 0, drawable.minimumWidth, drawable.minimumHeight)
-// binding.mCom.mHealthStatus.setCompoundDrawables(drawable, null, null, null)
-// }
- }
- }
-
- var notifyStatus: Int? = -1
- private fun updateWarningInfo(sysMsg: MessageBean.SysMsg?) {
- if (sysMsg == null || mFamilyAdapter.position > 0) { //如果不是自己,不显示预警消息
- binding.mCom.llWarning.visibility = View.GONE
- return
- } else if (mFamilyAdapter.position == 0 || mFamilyAdapter.position == -1) {
- binding.mCom.llWarning.visibility = View.VISIBLE
- }
- notifyStatus = sysMsg.notifyStatus
- if (notifyStatus == 0) {
- //未读 显示预警消息
- binding.mCom.llWarning.visibility = View.VISIBLE
- } else {
- //已读 显示预警消息
- binding.mCom.llWarning.visibility = View.GONE
- }
- binding.mCom.tvWarning.isSelected = true
- binding.mCom.tvWarning.text = sysMsg.notifyContent
- }
-
- */
-/**
- * 通过设备型号来处理不同业务逻辑
- *//*
-
- private fun requestByDeviceModel() {
- when (MMkvHelper.getInt(Const.Watch_Device_Type)) {//如果是4GA3设备,则隐藏心电板块
- Const.Companion.WatchDevice.LightA3.ordinal -> {
- getXtInfo(showIdInfo, false)//获取血糖信息
-// get24HourReportInfo(showIdInfo)//获取24小时日报
- }
-
- else -> {
- if (!YCBBlueConnectHelper.isBlueExits()) {//检查蓝牙设备,如未发现蓝牙设备则获取用户上次的血糖信息和24小时信息
- LogUtils.d("未发现蓝牙设备...")
- getXtInfo(showIdInfo)//如果手表没数据也需要获取获取血糖信息
-// get24HourReportInfo(showIdInfo)//如果手表没数据也需要获取24小时日报
- }
- if (tenJob == null) {
- getNowTime() // 整十分钟数据上报休眠开始
- } else {
- tenJob!!.cancel()
- getNowTime() // 整十分钟数据上报休眠开始
- }
- }
- }
- }
-
- private fun updateStarInfo(status: Int, star: Int) {
- mViewModel.allData.value?.apply {
- if (data.adorn.wearCount <= 3) {
- binding.mCom.mDescInfo.text =
- getString(R.string.model_day, "" + (4 - data.adorn.wearCount))
- return
- }
- }
-
- binding.mCom.mDescInfo.apply {
- text = ""
-
- append(getString(R.string.health_star_mark))
-
- var selectStarImage = UserInfoDefin.getStarImage(context, status)
- selectStarImage?.setBounds(
- 0,
- 0,
- (selectStarImage.minimumWidth / 1.4).toInt(),
- (selectStarImage.minimumHeight / 1.4).toInt()
- )
-
- var unSelectStarImage = context.getDrawable(com.xty.health.R.mipmap.icon_insufficient)
- unSelectStarImage?.setBounds(
- 0,
- 0,
- (unSelectStarImage.minimumWidth / 1.4).toInt(),
- (unSelectStarImage.minimumHeight / 1.4).toInt()
- )
-
- for (i in 1..5) {
- val spanStr = SpannableString("custom$i")
- var span =
- (if (star >= i) selectStarImage else unSelectStarImage)?.let { starDrawable ->
- CenterImageSpan(starDrawable)
- }
- spanStr.setSpan(span, 0, spanStr.length, Spannable.SPAN_INCLUSIVE_EXCLUSIVE)
- append(spanStr)
- append(" ")
- }
- }
- }
-
- */
-/**
- * 更新血糖模块信息
- *//*
-
- private fun updateBloodSugarInfo(info: XTangInfoBean) {
- if (null == info) {
- LogUtils.e("血糖模块信息没有,出错了~")
- return
- }
-
- if (!info.errorMsg.isNullOrEmpty()) {
- CommonToastUtils.showToast(info.errorMsg)
- }
-
- mHealthAdapter.xtangInfo = info
- mHealthAdapter.notifyDataSetChanged()
-
-// when (info.model) {
-// //0 未开通 1:建模中 2:建模完成
-// 0 -> {
-// binding.mOrganView.mBsStatus.text = "未开通"
-// binding.mOrganView.mBsTime.text =
-// if (info.time.isNullOrEmpty()) RxTimeTool.getCurrentDateTime(" yyyy-MM-dd HH:mm:ss") else info.time
-// binding.mOrganView.mBsOper.visibility = View.VISIBLE
-// binding.mOrganView.mBsCurrentStatu.visibility = View.GONE
-// }
-// 1 -> {
-// binding.mOrganView.mBsStatus.text = "建模中"
-// binding.mOrganView.mBsTime.text =
-// if (info.time.isNullOrEmpty()) RxTimeTool.getCurrentDateTime(" yyyy-MM-dd HH:mm:ss") else info.time
-// binding.mOrganView.mBsOper.visibility = View.GONE
-// binding.mOrganView.mBsCurrentStatu.text = "建模中"
-// binding.mOrganView.mBsCurrentStatu.visibility = View.VISIBLE
-// }
-// 2 -> {
-// binding.mOrganView.mBsStatus.text =
-// OrganStatusCalcUtil.bloodSugarStatuText(info.bloodsugar)
-// binding.mOrganView.mBsTime.text =
-// if (info.time.isNullOrEmpty()) RxTimeTool.getCurrentDateTime(" yyyy-MM-dd HH:mm:ss") else info.time
-// binding.mOrganView.mBsOper.visibility = View.GONE
-// binding.mOrganView.mBsCurrentStatu.text = setSugarSpan(info.bloodsugar)
-// binding.mOrganView.mBsCurrentStatu.visibility = View.VISIBLE
-// }
-// }
- }
-
-
- */
-/**
- * 更新健康状态
- *//*
-
- private fun updateHealthDesc(healthStatus: Int) {
- canGoto24Healthresult = healthStatus != 0 && healthStatus != -1
- binding.mCom.mDesc.apply {
- text = UserInfoDefin.getHealthArray(requireContext())[healthStatus + 1]
- //todo 数据不足 不允许进入健康管理
- setTextColor(
- ContextCompat.getColor(
- requireContext(),
- UserInfoDefin.healthCol[healthStatus + 1]
- )
- )
- }
-
-// text =
-// setStrSpan(content, 13, getColor(com.xty.health.R.color.col_ff7), Typeface.BOLD, content.length - 3 - percent.length, content.length - 3)
- }
-
- */
-/**
- * 家人信息绑定
- *//*
-
- private fun initFamilyAdapter() {
- binding.mCom.mRecycle.layoutManager =
- LinearLayoutManager(requireContext(), RecyclerView.HORIZONTAL, false)
- binding.mCom.mRecycle.adapter = mFamilyAdapter
- mFamilyAdapter.setOnItemClickListener { adapter, view, position ->
- if (position == mFamilyAdapter.data.size - 1) {
- onEventObject(requireContext(), UmengEventId.Family)
- RouteManager.goAct(ARouterUrl.BIND_FAMILY)
- } else {
- var bean = adapter.getItem(position) as FamilyBean
- showIdInfo = if (bean.id == 0) {
- ""
- } else {
- bean.userJointId.toString()
- }
- binding.mCom.mWearManager.visibility =
- if (showIdInfo.isNullOrEmpty()) View.VISIBLE else View.GONE
- setUserImage(
- if (showIdInfo.isNullOrEmpty()) "0" else showIdInfo,
- bean.avatarUrl
- )
- binding.mCom.mUserName.text = bean.fCall
- mFamilyAdapter.position = position
- mFamilyAdapter.notifyDataSetChanged()
- mViewModel.getAllInfo(showIdInfo, true)
- getXtInfo(showIdInfo)
- get24HourReportInfo(showIdInfo)
- mViewModel.getDkInfo(false, showIdInfo)
- updateWarningStatus()
- }
- }
- }
-
- */
-/**
- * 设置用户头像
- *//*
-
- private fun setUserImage(userId: String, headerImage: String?) {
- binding.mCom.mHeaderImage.apply {
- tag = userId
- setImageUser(requireContext(), headerImage)
- setOnClickListener {
- if (tag.toString()
- .isNullOrEmpty() || tag.toString() == "0" || Const.mainLiveData?.value?.user?.id.toString() == userId.toString()
- ) {
- RouteManager.goAct(ARouterUrl.BASE_INFO_CHANGE, bundle)
- }
- }
- }
- }
-
- */
-/**
- * 获取所有信息
- *//*
-
- private fun getAllData() {
- YCBManager.getAllData {
- mainScope.launch {
- mViewModel.allDataInfo.postValue(it)
- }
- }
- }
-
- */
-/**
- *15秒钟之内只能上传一次睡眠数据 避免重复上传
- *//*
-
- private fun refreshTime() {
- if (isRefresh) {
- isRefresh = false
- mainScope.launch {
- delay(15 * 1000)
- isRefresh = true
-
- }
- }
- }
-
- */
-/**
- * 获取历史步数
- *//*
-
- private fun getStep() {
- YCBManager.getHistoryInfo(YCBOrder.STEP_DATA) {
- mainScope.launch {
- LogUtils.d("getStep Info!")
- var jsonArray = JSONArray()
- var arrayOrigin = JSONArray()
- for (i in 0 until it.size) {
- var info = it[i] as HashMap
- var jsonOrigin = JSONObject()
- for ((k, v) in info) {
- jsonOrigin.put(k, v)
- }
- arrayOrigin.put(jsonOrigin)
- var dataDayStr = RxTimeTool.milliseconds2String(
- System.currentTimeMillis(),
- SimpleDateFormat("yyyy-MM-dd")
- )
- var todayStartTime =
- RxTimeTool.string2Milliseconds("$dataDayStr 00:00:00") //今天0点的时间
-
- var startTime = (info["sportStartTime"] as Long)
- if (startTime < todayStartTime) {
- continue
- }
-
-
- var json = JSONObject()
- json.put("startTime", (info["sportStartTime"] as Long) / 1000)
- json.put("endTime", (info["sportEndTime"] as Long) / 1000)
- json.put("step", info["sportStep"])
- json.put("calories", info["sportCalorie"])
- json.put("distance", info["sportDistance"])
- jsonArray.put(json)
- }
- mViewModel.uploadStep(jsonArray)
-
- }
- }
- }
-
- */
-/**
- * 手表信息上传
- *//*
-
- private fun uploadWhatchData() {
- LogUtils.d("手表数据是否上传:$isRefresh")
- if (isRefresh) {//避免重复多次上传导致服务器负载过高,五秒钟之内不允许重复上传。蓝牙断开重连也可以上传
- LogUtils.d("手表数据开始上传...")
- refreshTime()
- getStep()
- getSleepNew()
- getAllData()
- }
- }
-
- */
-/**
- * 获取血糖信息
- *//*
-
- private fun getXtInfo(userId: String, isShowLoading: Boolean = false) {
- mViewModel.getXtInfo(userId, isShowLoading)
- }
-
- */
-/**
- * 获取24小时健康报告
- *//*
-
- private fun get24HourReportInfo(userId: String, isShowLoading: Boolean = false) {
- mViewModel.get24HourReportInfo(userId, isShowLoading)
- }
-
- */
-/**
- * 新 睡眠时间上传
- * 限制睡眠在一定时间内请求的次数
- *//*
-
- private fun getSleepNew() {
- YCBManager.getHistoryInfo(YCBOrder.SLEEP_DATA) {
- LogUtils.d("getSleep Info!")
- mainScope.launch {
- if (it.isNullOrEmpty()) {
- return@launch
- }
-
- CommonUtils.getMyUserInfo()?.apply {
- try {
- var arraySleep = JSONArray()
- var rawdata = sleepOriganData(it)
- for (i in 0 until it.size) {
- var json = JSONObject()
- var sleepDetailArray = JSONArray() //详细的睡眠时间
- var lastData = it[i] as HashMap<*, *>
- var startTime = lastData["startTime"] as Long
- var endTime = lastData["endTime"] as Long
-
- var lightAll = lastData["lightSleepTotal"] as Int //潜睡时长
- var deepLightAll = lastData["deepSleepTotal"] as Int //深睡时长
-
- var deepSleepCount = lastData["deepSleepCount"] as Int //深睡次数
- var lightSleepCount = lastData["lightSleepCount"] as Int //浅睡次数
-
- var listSleepData = lastData["sleepData"] as ArrayList<*>
-
- listSleepData.forEach {
- var value = it as HashMap<*, *>
- var jsonValue = JSONObject()
- jsonValue.put(
- "sleepStartTime",
- (value["sleepStartTime"] as Long) / 1000
- )
- jsonValue.put("sleepLen", value["sleepLen"] as Int)
- jsonValue.put("sleepType", value["sleepType"] as Int)
- jsonValue.put("userId", id)
- jsonValue.put("createBy", name)
- sleepDetailArray.put(jsonValue)
- }
-
- json.put("userId", id)
- json.put("createBy", name)
- json.put("lightSleepCount", lightSleepCount) //浅睡次数
- json.put("deepSleepCount", deepSleepCount) //深睡次数
- json.put("hmWatchSleepData", sleepDetailArray)
- json.put("lightSleepTotal", max(lightAll, deepLightAll)) //潜睡时长
- json.put("deepSleepTotal", min(lightAll, deepLightAll)) //深睡时长
- json.put("startTime", startTime / 1000) //开始时间
- json.put("endTime", endTime / 1000) //结束时间
- json.put("os", "android")
- if (i == it.size - 1) {
- json.put("original", rawdata.toString())
- } else {
- json.put("original", "---")
- }
- arraySleep.put(json)
- }
- if (arraySleep.length() > 0) {
- mViewModel.uploadSleep(arraySleep)
- }
- } catch (e: Exception) {
- LogUtils.e("睡眠数据上传错误:$e")
- }
- }
- }
- }
- }
-
- */
-/**
- * 修改背景色
- *//*
-
- private fun changeBg(view: View, colId: Int) {
- var bg = view.background as GradientDrawable
- bg.setColor(ContextCompat.getColor(requireContext(), colId))
- bg.mutate()
- }
-
- private val reqGpsPermissionDialog by lazy {
- NoticeSettingDialog(requireContext(), "请打开GPS权限", {
-
- }) {
- // 转到手机设置界面,用户设置GPS
- var intent = Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
- startActivityForResult(intent, 1001) // 设置完成后返回到原来的界面
- }
- }
-
-
- private fun requestGPSPermission() {
- reqGpsPermissionDialog.show()
- }
-
- */
-/**
- * 蓝牙链接
- *//*
-
- private fun connect(mac: String) {
-
- if (!CommonUtils.isBlueTooth(MMkvHelper.getInt(Const.Watch_Device_Type))) {//如果不是蓝牙设备,不进行连接
- return
- }
-
- if (mac.isNullOrEmpty()) {
- initBlueToothStatu()
- return
- }
-
- if (!checkBlueConnectPermission(requireContext())) {
- CommonToastUtils.showToast("请开启App蓝牙搜索权限!")
- getBluePermission(requireContext()) {
- if (it) {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !isGpsOpen(requireContext())) {
- requestGPSPermission()
- }
- }
- }
- return
- }
-
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !isGpsOpen(requireContext())) {
- CommonToastUtils.showToast("请打开GPS权限!")
- requestGPSPermission()
- return
- }
-
- mainScope.launch(Dispatchers.IO) {
- LogUtils.d("HealthFrag Connect!!!")
- YCBBlueConnectHelper.connectionBlueTooth(mac, true) {
- mainUIUpdate(it)
- }
- }
- }
-
- private fun mainUIUpdate(connectState: YCBBlueConnectHelper.BLEConnectState) {
-
- mainScope.launch(Dispatchers.Main) {
- when (connectState) {
- YCBBlueConnectHelper.BLEConnectState.Connecting -> {
- setDeviceInfo(
- DeviceInfoBean(
- true,
- YCBBlueConnectHelper.BLEConnectState.Connecting
- )
- )
-// binding.mContent.visibility = View.GONE
-// binding.mEle.visibility = View.VISIBLE
-// binding.mEle.text = getString(R.string.blue_tooth_connecting)
- }
-
- YCBBlueConnectHelper.BLEConnectState.Connected -> {
- getConnectStatus()
- }
-
- YCBBlueConnectHelper.BLEConnectState.DisConnect -> {
- //断开连接重置状态 为了重新连接自后可以进行睡眠上传
- initBlueToothStatu()
- }
- }
- }
- }
-
-
- private fun initBlueToothStatu() {
- setDeviceInfo(DeviceInfoBean(blueTooth(), YCBBlueConnectHelper.BLEConnectState.DisConnect))
-// binding.mContent.visibility = View.VISIBLE
-// binding.mEle.visibility = View.GONE
- }
-
- //workmanager 后台上传任务
- @Subscribe(threadMode = ThreadMode.MAIN)
- fun workManagerSuccess(event: WorkManagerEvent) {
- //上传成功回传刷新
- LogUtils.d("work is ok")
- mViewModel.getAllInfo(showIdInfo, false)
- }
-
- //个人信息修改 主界面刷新
- @Subscribe(threadMode = ThreadMode.MAIN)
- fun refresh(event: MyInfoEvent) {
- if (dialogBind.isShowing) {
- dialogBind.dismiss()
- }
- request()
- }
-
- //绑定状态下的蓝牙连接状态
- @Subscribe(threadMode = ThreadMode.MAIN)
- fun blueToothStatus(event: BlueToothConnectEvent) {
- LogUtils.d("blueToothStatus change!!")
- CommonUtils.getBlueToothMac()?.let {
- connect(it)
- }
- }
-
- //家人信息改变 刷新
- @Subscribe(threadMode = ThreadMode.MAIN)
- fun familyChange(event: FamilyEvent) {
- mViewModel.getMyFamilyList()
- }
-
- */
-/**
- * 重新签名之后隐藏提示框
- *//*
-
- @Subscribe(threadMode = ThreadMode.MAIN)
- fun againSignEvent(event: AgainSignEvent) {
- signDialog.dismiss()
- }
-
- */
-/**
- * 24小时健康状态更新事件
- *//*
-
- @Subscribe(threadMode = ThreadMode.MAIN)
- fun health24HourStatusUpdate(event: Health24HourStatusEvent) {
- if (-2 != event.healthStatus) {
- updateHealthDesc(event.healthStatus)
- }
- }
-
- */
-/**
- * 血糖开通/续费成功
- *//*
-
- @Subscribe(threadMode = ThreadMode.MAIN)
- fun xtOpenSuccess(event: XTangOpenEvent) {
- var time = RxTimeTool.getCurrentDateTime("mm").toInt()
- var sPrefix = String.format("%02d", time / 10 * 10) //当前时间对应的整分钟数
- var nowTimeStr = RxTimeTool.getCurrentDateTime("yyyy-MM-dd HH") + ":${sPrefix}" //整点时间
- updateBloodsugarStatus(event.model, nowTimeStr)
- }
-
- */
-/**
- * 血糖信息更新
- *//*
-
- @Subscribe(threadMode = ThreadMode.MAIN)
- fun xtDataUpdate(event: XTangUpdateEvent) {
- LogUtils.d("xtDataUpdate!!!")
- updateBloodSugarInfo(event.info)
- }
-
- */
-/**
- * 睡眠的原始数据
- *//*
-
- private fun sleepOriganData(list: ArrayList): JSONArray {
- var array = JSONArray()
- list.forEach {
- try {
- var json = JSONObject()
- var lastData = it as HashMap<*, *>
-
- var startTime = lastData["startTime"] as Long
- var endTIme = lastData["endTime"] as Long
-
- var l = lastData["lightSleepTotal"] as Int //潜睡时长
- var d = lastData["deepSleepTotal"] as Int //深睡时长
-
- json.put("startTime", startTime)
- json.put("endTime", endTIme)
- json.put("lightSleepTotal", l)
- json.put("deepSleepTotal", d)
-
- var listSleepData = lastData["sleepData"] as ArrayList<*>
- var sleepArray = JSONArray()
- listSleepData.forEach {
- var value = it as HashMap<*, *>
- var jsonValue = JSONObject()
- jsonValue.put("sleepStartTime", (value["sleepStartTime"] as Long))
- jsonValue.put("sleepLen", value["sleepLen"] as Int)
- jsonValue.put("sleepType", value["sleepType"] as Int)
- sleepArray.put(jsonValue)
- }
- json.put("sleepData", sleepArray)
- array.put(json)
- } catch (e: Exception) {
- e.printStackTrace()
- }
- }
- return array
- }
-
- */
-/**
- * 计算要休眠的时间
- *//*
-
- private fun getNowTime() {
- var tenTimes = 11 * 60 * 1000 //整十分钟对应的毫秒数
- var time = RxTimeTool.getCurTimeString(SimpleDateFormat("mm")).toInt()
- var sPrefix = time / 10 //当前时间对应的整分钟数
- var nowTimeStr =
- RxTimeTool.getCurTimeString(SimpleDateFormat("yyyy-MM-dd HH")) + ":${sPrefix * 10}:00" //整点时间
- var nowTimeMill = RxTimeTool.string2Milliseconds(nowTimeStr)//整分钟数对应的毫秒数
-
- var nextTimeMill = nowTimeMill + tenTimes //下个整十分钟数对应的毫秒数
- var sleepSec = nextTimeMill - System.currentTimeMillis() //距离下个时间要休眠的毫秒数
-
- startTenLive(sleepSec)
- }
-
- */
-/**
- * 15秒钟一次更新
- *//*
-
- private fun startGetDeviceInfoLive() {
- getDeviceInfoJob = mainScope.launch(Dispatchers.IO) {
- delay(1000 * 15)
- LogUtils.d("休眠结束:${RxTimeTool.curTimeString}")
- getDeviceInfoLive.postValue("")
- }
- }
-
- */
-/**
- * 十分钟休眠开始
- * times 需要休眠的毫秒数
- *//*
-
- private fun startTenLive(times: Long) {
- LogUtils.d("休眠开始时间:${RxTimeTool.curTimeString}")
- LogUtils.d("休眠时长:${times}")
- tenJob = mainScope.launch(Dispatchers.IO) {
- delay(times)
- LogUtils.d("休眠结束:${RxTimeTool.curTimeString}")
- tenLive.postValue("")
- }
- }
-
- */
-/**
- * 由于SDK问题返回的时间存在秒和毫秒 两种值
- * 这里 返回的类型为毫秒数
- *//*
-
- private fun formatTime(time: Long): Long {
- if (time > 9999999999) {
- return time
- }
- return time * 1000
- }
-
- override fun onDestroy() {
- super.onDestroy()
- tenJob?.let {
- it.cancel()
- }
- }
-
- */
-/**
- * 更新血糖状态
- *//*
-
- private fun updateBloodsugarStatus(model: Int, updateTime: String) {
- mHealthAdapter.xtangInfo?.let {
- it.model = model
- it.time = updateTime
- }
- mHealthAdapter.notifyDataSetChanged()
- }
-
- override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
- super.onActivityResult(requestCode, resultCode, data)
- if (resultCode == RESULT_OK) {
- when (requestCode) {
- 1001 -> {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && isGpsOpen(requireContext())) {//如果GPS已打开
- LogUtils.d("GPS Is Open!")
- mainScope.launch {
- CommonUtils.getBlueToothMac()?.let {
- connect(it)
- }
- }
- }
- }
- }
- }
- }
-// private lateinit var dataCallback: DataCallback
-//
-// override fun onAttach(context: Context) {
-// super.onAttach(context)
-// if (context is DataCallback) {
-// dataCallback = context
-// } else {
-// throw IllegalArgumentException("Host activity must implement DataCallback")
-// }
-// }
-//
-// // 在需要传递数据的地方调用该方法
-// private fun sendDataToSecondFragment(data: String) {
-// dataCallback.onDataReceived(data)
-// }
-// interface DataCallback {
-// fun onDataReceived(data: String)
-// }
-}*/
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 5df36ef..3dad21b 100644
--- a/app/src/main/java/com/zj365/dc/fragment/HealthHomeFrag.kt
+++ b/app/src/main/java/com/zj365/dc/fragment/HealthHomeFrag.kt
@@ -1,96 +1,58 @@
package com.zj365.dc.fragment
-import android.app.Activity.RESULT_OK
+import android.R.attr.path
import android.content.Intent
-import android.graphics.Typeface
-import android.graphics.drawable.Drawable
-import android.graphics.drawable.GradientDrawable
-import android.os.Build
import android.provider.Settings
-import android.text.TextUtils
import android.view.View
-import android.view.ViewGroup
-import androidx.core.content.ContextCompat
-import androidx.lifecycle.MutableLiveData
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
-import cn.jpush.android.api.JPushInterface
+import com.lifesense.android.ble.core.application.ApplicationContext
import com.shuyu.gsyvideoplayer.listener.VideoAllCallBack
-import com.tamsiree.rxkit.RxTimeTool
+import com.tencent.mm.opensdk.modelbiz.WXLaunchMiniProgram
+import com.tencent.mm.opensdk.openapi.WXAPIFactory
import com.xty.base.fragment.BaseVmFrag
-import com.xty.base.utils.UserInfoDefin
-import com.xty.common.Const
-import com.xty.common.LogUtils
-import com.xty.common.MMkvHelper
import com.xty.common.UmengEventId
-import com.xty.common.app.MyApp
import com.xty.common.arouter.ARouterUrl
import com.xty.common.arouter.RouteManager
-import com.xty.common.bracelet.YCBBlueConnectHelper
-import com.xty.common.bracelet.YCBManager
-import com.xty.common.bracelet.YCBOrder
-import com.xty.common.bracelet.checkBlueConnectPermission
-import com.xty.common.bracelet.getBluePermission
-import com.xty.common.bracelet.isGpsOpen
import com.xty.common.event.AgainSignEvent
-import com.xty.common.event.BlueToothConnectEvent
import com.xty.common.event.ChangeFamilyEvent
import com.xty.common.event.FamilyEvent
-import com.xty.common.event.Health24HourStatusEvent
+import com.xty.common.event.LoginOrRegisterEvent
+import com.xty.common.event.LoginOutEvent
import com.xty.common.event.MyInfoEvent
-import com.xty.common.event.WorkManagerEvent
-import com.xty.common.event.XTangOpenEvent
-import com.xty.common.event.XTangUpdateEvent
-import com.xty.common.marqueen.SimpleMF
import com.xty.common.onEventObject
-import com.xty.common.setImageUser
-import com.xty.common.util.CommonToastUtils
import com.xty.common.util.CommonUtils
-import com.xty.common.work.MyWorkManger
-import com.zj365.mime.weight.NoticeSettingDialog
-import com.xty.network.MyRetrofit
import com.xty.network.model.BannerBean
import com.xty.network.model.FamilyBean
+import com.xty.network.model.HomeLayoutBean
import com.xty.network.model.MainBean
-import com.xty.network.model.MessageBean
-import com.xty.network.model.ReportBean
import com.xty.network.model.ScienceBean
-import com.xty.network.model.XTangInfoBean
import com.youth.banner.indicator.RoundLinesIndicator
import com.youth.banner.listener.OnPageChangeListener
-import com.zj365.dc.BuildConfig
import com.zj365.dc.R
-import com.zj365.dc.activity.MainActivity
import com.zj365.dc.adapter.BannerCustomAdapter
import com.zj365.dc.adapter.FamilyAdapter
+import com.zj365.dc.adapter.HomeContentLayoutAdapter
+import com.zj365.dc.adapter.HomeTopLayoutAdapter
import com.zj365.dc.adapter.ScienceAdapter
import com.zj365.dc.adapter.holder.VideoHolder
import com.zj365.dc.databinding.FragHealthBinding
-import com.zj365.dc.vm.HealthVm
+import com.zj365.dc.vm.HomeVm
import com.zj365.dc.weight.AgainSignDialog
import com.zj365.health.weight.DialogTip
-import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.Job
-import kotlinx.coroutines.delay
-import kotlinx.coroutines.launch
+import com.zj365.mime.weight.NoticeSettingDialog
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
-import org.json.JSONArray
-import org.json.JSONObject
-import java.text.SimpleDateFormat
-import java.util.regex.Matcher
-import java.util.regex.Pattern
-import kotlin.math.max
-import kotlin.math.min
+
/**
* 健康*/
class
-HealthHomeFrag : BaseVmFrag() {
+HealthHomeFrag : BaseVmFrag() {
val binding by lazy { FragHealthBinding.inflate(layoutInflater) }
@@ -110,19 +72,23 @@ HealthHomeFrag : BaseVmFrag() {
private val mFamilyAdapter by lazy { FamilyAdapter() }
private val mBannerAdapter by lazy { BannerCustomAdapter(requireContext()) }
+
+ private val mMiddleBannerAdapter by lazy { BannerCustomAdapter(requireContext()) }
private var showIdInfo = "" //需要显示的信息的id
private var showFamily: FamilyBean? = null
- override fun setViewModel() = HealthVm()
+ override fun setViewModel() = HomeVm()
+
+ var defaultFamilyList = ArrayList()
val adapterSince by lazy { ScienceAdapter() }
- private val getDeviceInfoLive by lazy { MutableLiveData() }
- private var getDeviceInfoJob: Job? = null
- private var isRefresh = true
+ val layoutTopAdapter by lazy { HomeTopLayoutAdapter(requireContext()) }
+
+ val layoutContentAdapter by lazy { HomeContentLayoutAdapter(requireContext()) }
+
- private var reportBean: ReportBean? = null//24小时日报数据
private val dialogBind by lazy {
DialogTip(requireContext(), "需绑定安瑜健康手表,才能查看", "去绑定") {
@@ -149,6 +115,12 @@ HealthHomeFrag : BaseVmFrag() {
.setIndicatorSelectedWidth(dp2px(15))
.addOnPageChangeListener(onPageChangeListener)
+ binding.mBannerTwo.addBannerLifecycleObserver(this)
+ .setAdapter(mMiddleBannerAdapter)
+ .setIndicator(RoundLinesIndicator(context))
+ .setIndicatorSelectedWidth(dp2px(15))
+ .addOnPageChangeListener(onPageChangeListener)
+
mBannerAdapter.setOnBannerListener { data, position ->
var bannerBean = data as BannerBean
onEventObject(
@@ -176,6 +148,34 @@ HealthHomeFrag : BaseVmFrag() {
}
}
}
+
+ mMiddleBannerAdapter.setOnBannerListener { data, position ->
+ var bannerBean = data as BannerBean
+ onEventObject(
+ requireContext(),
+ UmengEventId.Banner,
+ "type:${bannerBean.bannerType}; 标题:${bannerBean.title}"
+ )
+ when (bannerBean.bannerType) {
+ 1 -> {//图片
+
+ }
+
+ 5 -> { //内部跳转
+ bundle.clear()
+ bundle.putString("title", bannerBean.title)
+ bundle.putString("url", bannerBean.linkAddress)
+ RouteManager.goAct(ARouterUrl.WEB_ACT, bundle)
+ }
+
+ 10 -> {//web 跳转
+ bundle.clear()
+ bundle.putString("title", bannerBean.title)
+ bundle.putString("url", bannerBean.linkAddress)
+ RouteManager.goAct(ARouterUrl.WEB_ACT, bundle)
+ }
+ }
+ }
setOnClickListener()
// updateWarningStatus()
initAdapter()
@@ -193,6 +193,135 @@ HealthHomeFrag : BaseVmFrag() {
}
+ binding.mCom.rvLayout.layoutManager= LinearLayoutManager(requireContext(),LinearLayoutManager.HORIZONTAL,false)
+ binding.mCom.rvLayout.adapter = layoutTopAdapter
+ layoutTopAdapter.setOnItemClickListener { adapter, view, position ->
+ var contentData = adapter.getItem(position) as HomeLayoutBean.HomeChildBean
+ when(contentData.jumpType){
+ 1 ->{
+ contentData.jumpUrl?.let {
+ when(contentData.jumpUrl){
+ "AI_TONGUE" ->{ //AI 舌诊
+ onEventObject(requireContext(), UmengEventId.HealthRisk)
+ bundle.clear()
+ bundle.putString("id", showIdInfo)
+ RouteManager.goAct(ARouterUrl.TONGUE_MAIN_ACTIVITY, bundle)
+ }
+
+ "AI_TUMOR" ->{ //防癌
+ bundle.clear()
+ bundle.putString("id", showIdInfo)
+ RouteManager.goAct(ARouterUrl.PRVENT_CANCER, bundle)
+ }
+
+ "MEALS"->{ //膳食管理
+
+ }
+
+ else ->{
+
+ }
+ }
+ }
+
+ }
+
+ 2->{
+ contentData.jumpUrl?.let {
+ bundle.clear()
+ bundle.putString("title", contentData.name)
+ bundle.putString("url", contentData.jumpUrl)
+ RouteManager.goAct(ARouterUrl.WEB_ACT, bundle)
+ }
+
+ }
+
+ else ->{
+ contentData.jumpUrl?.let {
+ val appId = "wxd930ea5d5a258f4f" // 填移动应用(App)的 AppId,非小程序的 AppID
+
+ val api = WXAPIFactory.createWXAPI(ApplicationContext.context, appId)
+
+ val req = WXLaunchMiniProgram.Req()
+ req.userName = "gh_d43f693ca31f" // 填小程序原始id
+
+ req.path = it ////拉起小程序页面的可带参路径,不填默认拉起小程序首页,对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar"。
+
+ req.miniprogramType =
+ WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE // 可选打开 开发版,体验版和正式版
+
+ api.sendReq(req)
+ }
+
+ }
+ }
+ }
+
+ binding.mChildView.homeContentRv.layoutManager = GridLayoutManager(requireContext(),3)
+ binding.mChildView.homeContentRv.adapter = layoutContentAdapter
+ layoutContentAdapter.setOnItemClickListener { adapter, view, position ->
+
+ var contentData = adapter.getItem(position) as HomeLayoutBean.HomeChildBean
+ when(contentData.jumpType){
+ 1 ->{
+ contentData.jumpUrl?.let {
+ when(contentData.jumpUrl){
+ "AI_TONGUE" ->{ //AI 舌诊
+ onEventObject(requireContext(), UmengEventId.HealthRisk)
+ bundle.clear()
+ bundle.putString("id", showIdInfo)
+ RouteManager.goAct(ARouterUrl.TONGUE_MAIN_ACTIVITY, bundle)
+ }
+
+ "AI_TUMOR" ->{ //防癌
+ bundle.clear()
+ bundle.putString("id", showIdInfo)
+ RouteManager.goAct(ARouterUrl.PRVENT_CANCER, bundle)
+ }
+
+ "MEALS"->{ //膳食管理
+
+ }
+
+ else ->{
+
+ }
+ }
+ }
+
+ }
+
+ 2->{
+ contentData.jumpUrl?.let {
+ bundle.clear()
+ bundle.putString("title", contentData.name)
+ bundle.putString("url", contentData.jumpUrl)
+ RouteManager.goAct(ARouterUrl.WEB_ACT, bundle)
+ }
+
+ }
+
+ else ->{
+ contentData.jumpUrl?.let {
+ val appId = "wxd930ea5d5a258f4f" // 填移动应用(App)的 AppId,非小程序的 AppID
+
+ val api = WXAPIFactory.createWXAPI(ApplicationContext.context, appId)
+
+ val req = WXLaunchMiniProgram.Req()
+ req.userName = "gh_d43f693ca31f" // 填小程序原始id
+
+ req.path = it ////拉起小程序页面的可带参路径,不填默认拉起小程序首页,对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar"。
+
+ req.miniprogramType =
+ WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE // 可选打开 开发版,体验版和正式版
+
+ api.sendReq(req)
+ }
+
+ }
+ }
+ }
+
}
@@ -307,54 +436,29 @@ HealthHomeFrag : BaseVmFrag() {
}
private fun setOnClickListener() {
- binding.mChildView.llAiConfectioner.setOnClickListener(onClickListener)
+ /*binding.mChildView.llAiConfectioner.setOnClickListener(onClickListener)
binding.mChildView.llAiSkinMeasurement.setOnClickListener(onClickListener)
binding.mChildView.llCancerScreening.setOnClickListener(onClickListener)
binding.mChildView.llMentalTest.setOnClickListener(onClickListener)
binding.mChildView.llAiTongueDiagnosis.setOnClickListener(onClickListener)
- binding.mChildView.llDietManagement.setOnClickListener(onClickListener)
-
- /*//30天健康风险
- binding.tvHealthRisk.setOnClickListener(onClickListener)
- //健康风险评估
- binding.tvRiskCommit.setOnClickListener(onClickListener)
- //防癌筛查
- binding.tvCheckCancer.setOnClickListener(onClickListener)
- //舌诊
- binding.tvTongueDiagnosis.setOnClickListener(onClickListener)
- //手表
- binding.mChildHomeView.llWatch.setOnClickListener {
-
- if (Const.watchType == -1) { //当前未绑定,并且选择的用户是自己
- if (showIdInfo == "") {
- RouteManager.goAct(ARouterUrl.DEVICE_CHOICE)
- } else {
- CommonToastUtils.showToast("家人已解绑手表,无法查看")
- }
- } else {
- bundle.clear()
- if (showIdInfo == "") { //如果是自己,直接传自己的设备信息过去
- CommonUtils.getMyUserInfo()?.let {
- bundle.putSerializable("user", it)
- }
- } else { //其他用户传id过去查询设备信息
- bundle.putSerializable("userId", showIdInfo)
- }
- RouteManager.goAct(ARouterUrl.DEV_INFO, bundle)
- }
- }*/
+ binding.mChildView.llDietManagement.setOnClickListener(onClickListener)*/
+/*
binding.mCom.llHealthRecords.setOnClickListener(onClickListener)
- /*binding.mChildHomeView.mRelInterDk.setOnClickListener(onClickListener)
+ *//*binding.mChildHomeView.mRelInterDk.setOnClickListener(onClickListener)
binding.mChildHomeView.mRelInterBD.setOnClickListener(onClickListener)
- binding.mChildHomeView.mRelInterFamily.setOnClickListener(onClickListener)*/
+ binding.mChildHomeView.mRelInterFamily.setOnClickListener(onClickListener)*//*
binding.mCom.llHealthCode.setOnClickListener(onClickListener)
binding.mCom.llDailyBenefit.setOnClickListener(onClickListener)
binding.mCom.llVideoInterview.setOnClickListener(onClickListener)
- /*binding.mOrganView.llCompare.setOnClickListener(onClickListener)
+ *//*binding.mOrganView.llCompare.setOnClickListener(onClickListener)
binding.myManager.setOnClickListener(onClickListener)
binding.myHealthDa.setOnClickListener(onClickListener)*/
+
+ binding.tvMore.setOnClickListener {
+ RouteManager.goAct(ARouterUrl.SCIENCE_LIST)
+ }
}
@@ -365,66 +469,6 @@ HealthHomeFrag : BaseVmFrag() {
RouteManager.goAct(ARouterUrl.HEALTH_RECORD, bundle)
}
- /* R.id.my_manager -> { //我的管家
- CommonUtils.getMyUserId()?.let {
- bundle.clear()
- bundle.putString("fromUserId", it)
- RouteManager.goAct(ARouterUrl.MY_KEEPER, bundle)
- }
- }
-
- R.id.ll_compare -> {//健康对比
- if (isDemonstrate) {
- dialogBind.show()
- return@OnClickListener
- }
- goComparePage()
- }
-
- //我的家人
- R.id.mRelInterFamily -> {
- onEventObject(requireContext(), UmengEventId.MyFamily, "首页")
- if (isBind()) {
- RouteManager.goAct(ARouterUrl.FAMILY)
- } else {
- CommonToastUtils.showToast(com.xty.common.R.string.please_bind_device)
- }
- }
- //榜单
- R.id.mRelInterBD -> {
- if (isDemonstrate) {
- dialogBind.show()
- return@OnClickListener
- }
- mViewModel.allData.value?.apply {
- if (data.adorn.activeWear <= 3) {
- CommonToastUtils.showToast("尊敬的用户您好,您正处于3天建模期,请坚持佩戴")
- return@OnClickListener
- }
- onEventObject(requireContext(), UmengEventId.HealthRank)
- bundle.clear()
- bundle.putInt("status", data.adorn.health + 1)
- bundle.putInt("type", 0)
- RouteManager.goAct(ARouterUrl.RANK_LIST, bundle)
- }
-
- }
- //打卡
- R.id.mRelInterDk -> {
- CommonUtils.getMyUserInfo()?.apply {
- onEventObject(requireContext(), UmengEventId.HealthDk)
- bundle.clear()
- bundle.putSerializable("user", this)
- RouteManager.goAct(ARouterUrl.DK_ACT, bundle)
- }
- }
- //评估
- R.id.tv_risk_commit -> {
-// onEventObject(requireContext(), UmengEventId.HealthRisk)
- bundle.clear()
- bundle.putString("id", showIdInfo)
- RouteManager.goAct(ARouterUrl.SUBMIT_REPORTMain, bundle)
- }*/
//防癌
R.id.ll_cancer_screening -> {
// onEventObject(requireContext(), UmengEventId.HealthRisk)
@@ -441,226 +485,8 @@ HealthHomeFrag : BaseVmFrag() {
RouteManager.goAct(ARouterUrl.TONGUE_MAIN_ACTIVITY, bundle)
// showToast("功能暂未开通,敬请期待")
}
- /* //问卷
- R.id.ivWarn2 -> {
- onEventObject(requireContext(), UmengEventId.HealthRisk)
- bundle.clear()
- bundle.putString("id", showIdInfo)
-// RouteManager.goAct(ARouterUrl.SUBMIT_REPORT, bundle)
- RouteManager.goAct(ARouterUrl.SUBMIT_REPORTMain, bundle)
- }
- //预警
- R.id.tv_health_risk -> {
- if (isDemonstrate) {
- bundle.clear()
- bundle.putString("id", showIdInfo)
- bundle.putInt("page", 1)
- RouteManager.goAct(ARouterUrl.WARRING, bundle)
- return@OnClickListener
- }
- mViewModel.allData.value?.apply {
- data.apply {
- if (adorn.wearCount > 29 && adorn.activeWear > 14) {
- onEventObject(requireContext(), UmengEventId.Health30Day)
- bundle.clear()
- bundle.putString("id", showIdInfo)
- bundle.putInt("page", 1)
- RouteManager.goAct(ARouterUrl.WARRING, bundle)
- } else {
- if (showIdInfo.isEmpty()) {
- onEventObject(
- requireContext(),
- UmengEventId.Health30Day,
- "佩戴未满30天或活跃天数未满15天。"
- )
- CommonToastUtils.showToast("尊敬的用户您好,该功能需要佩戴30天且活跃佩戴15天查看,请坚持佩戴且每日同步数据!")
- } else {
- onEventObject(
- requireContext(),
- UmengEventId.Health30Day,
- "关联用户处于7天建模中!"
- )
- CommonToastUtils.showToast("您关联的用户正处于7天建模中……")
- }
- }
- }
- }
- }
- //健康管家
- R.id.mGuide2 -> {
- if (isDemonstrate) {
- dialogBind.show()
- return@OnClickListener
- }
- if (showIdInfo.isNullOrEmpty()) {
- if (isBind()) {
- onEventObject(requireContext(), UmengEventId.HealthAdmin)
- CommonUtils.getMyUserInfo()?.apply {
- bundle.clear()
- bundle.putString("fromUserId", id.toString())
- RouteManager.goAct(ARouterUrl.HOUSE_KEEPER, bundle)
- }
-
- } else {
- onEventObject(requireContext(), UmengEventId.HealthAdmin, "未绑定点击")
- CommonToastUtils.showToast(com.xty.common.R.string.please_bind_device)
- }
- } else {
- onEventObject(requireContext(), UmengEventId.HealthAdmin, "关注家人点击")
- CommonToastUtils.showToast("不支持上传家人健康信息")
- }
- }
- //健康方案
- R.id.mGuide_1 -> {
-// Const.mainLiveData.value?.apply {
-// bundle.clear()
-// bundle.putString("id", showIdInfo)
-// RouteManager.goAct(ARouterUrl.HEALTH_PROP, bundle)
-// }
- if (isDemonstrate) {
- dialogBind.show()
- return@OnClickListener
- }
- onEventObject(requireContext(), UmengEventId.HealthProgrammes, "首页")
- RouteManager.goAct(ARouterUrl.MY_PROG)
- }
-
- R.id.mGuide_4 -> {
- RouteManager.goAct(ARouterUrl.DATA_MANAGE)
- }
- //绑定
- R.id.mBtnBind -> {
- RouteManager.goAct(ARouterUrl.DEVICE_CHOICE)
- }*/
}
}
-
- private fun goComparePage() {
- bundle.clear()
- bundle.putString("id", showIdInfo)
- RouteManager.goAct(ARouterUrl.COMPARE_PAGE_DATA_ACT, bundle)
- }
-
-/**
- * 设置设备信息*/
- /*private fun setDeviceInfo(deviceInfo: DeviceInfoBean?) {
- if (null != deviceInfo) {
- if (blueTooth()) {
- binding.mCom.mWatchType.text = getString(R.string.blue_tooth)
- binding.mCom.mWatchType.visibility = View.VISIBLE
- val drawable = getDrawable(R.mipmap.ic_watch_bluetooth)
- drawable.setBounds(0, 0, drawable.minimumWidth, drawable.minimumHeight)
- binding.mCom.mWatchType.setCompoundDrawables(drawable, null, null, null)
- } else {
- binding.mCom.mWatchType.text = getString(R.string.lite_4g)
- binding.mCom.mWatchType.visibility = View.VISIBLE
- val drawable = getDrawable(R.mipmap.ic_watch_4g)
- drawable.setBounds(0, 0, drawable.minimumWidth, drawable.minimumHeight)
- binding.mCom.mWatchType.setCompoundDrawables(drawable, null, null, null)
- }
- binding.mCom.mBindState.visibility = View.VISIBLE
-
- if (deviceInfo.bindState) {//已绑定
- binding.mCom.mBindState.apply {
- text = "已绑定"
- background = null
- val drawable = getDrawable(R.mipmap.ic_bangding)
- drawable.setBounds(0, 0, drawable.minimumWidth, drawable.minimumHeight)
- setCompoundDrawables(drawable, null, null, null)
- }
- binding.mCom.mWearManager.text = "佩戴管理"
-
- when (deviceInfo.connectState) {
- YCBBlueConnectHelper.BLEConnectState.Connected -> {//已连接
- binding.mCom.mConnectStatu.apply {
- setBackgroundResource(R.drawable.shape_bind_bg_new_2)
- text = deviceInfo.battery
- setTextColor(resources.getColor(R.color.col_27B8, null))
- var drawable: Drawable = getDrawable(R.mipmap.ic_battery)
- if (!deviceInfo.battery.isNullOrEmpty()) {
- val str =
- deviceInfo.battery.substring(2, deviceInfo.battery.length - 1)
- val pattern: Pattern = Pattern.compile("[0-9]*")
- val isNum: Matcher = pattern.matcher(str)
- if (isNum.matches()) {
- val battery = str.toInt()
- drawable = if (battery > 20) {
- getDrawable(R.mipmap.ic_battery)
-// } else if (battery > 70) {
-// getDrawable(R.mipmap.ic_battery_90)
-// } else if (battery > 50) {
-// getDrawable(R.mipmap.ic_battery_70)
-// } else if (battery > 30) {
-// getDrawable(R.mipmap.ic_battery_50)
-// } else if (battery > 10) {
-// getDrawable(R.mipmap.ic_battery_30)
- } else {
- setTextColor(resources.getColor(R.color.col_2628, null))
- text =
- context.resources.getString(R.string.health_low_battery)
- setBackgroundResource(R.drawable.shape_bind_bg_new_1)
- getDrawable(R.mipmap.ic_diancbuz)
- }
- }
- }
- drawable.setBounds(
- 0,
- 0,
- drawable.minimumWidth,
- drawable.minimumHeight
- )
- setCompoundDrawables(drawable, null, null, null)
- }
- }
-
- YCBBlueConnectHelper.BLEConnectState.Connecting -> {//连接中
- binding.mCom.mConnectStatu.apply {
- text = "连接中..."
- setCompoundDrawables(null, null, null, null)
- }
- }
-
- YCBBlueConnectHelper.BLEConnectState.DisConnect -> {//未连接
- binding.mCom.mConnectStatu.apply {
- text = "未连接"
- val drawable = getDrawable(R.mipmap.ic_not_connect)
- drawable.setBounds(
- 0,
- 0,
- drawable.minimumWidth,
- drawable.minimumHeight
- )
- setCompoundDrawables(drawable, null, null, null)
- }
- }
- }
- binding.mChildHomeView.mRelInterBD.visibility = View.VISIBLE
- binding.mCom.mConnectStatu.visibility = View.VISIBLE
- } else {
- binding.mCom.mBindState.apply {
- text = "未绑定"
- val drawable = getDrawable(R.mipmap.ic_unbind)
- drawable.setBounds(0, 0, drawable.minimumWidth, drawable.minimumHeight)
- setCompoundDrawables(drawable, null, null, null)
- }
- binding.mCom.mWearManager.text = "绑定手表"
-
- binding.mChildHomeView.mRelInterBD.visibility = View.GONE
- binding.mCom.mConnectStatu.visibility = View.INVISIBLE
- binding.mCom.mWatchType.visibility = View.INVISIBLE
-
- }
- } else {
- binding.mCom.mWatchType.text = getString(R.string.blue_tooth)
- val drawable = getDrawable(R.mipmap.ic_watch_bluetooth)
- drawable.setBounds(0, 0, drawable.minimumWidth, drawable.minimumHeight)
- binding.mCom.mWatchType.visibility = View.VISIBLE
- binding.mCom.mWatchType.setCompoundDrawables(drawable, null, null, null)
- binding.mCom.mBindState.visibility = View.INVISIBLE
- binding.mCom.mConnectStatu.visibility = View.INVISIBLE
- }
- }*/
-
/**
* 设置天气信息*/
@@ -716,50 +542,16 @@ HealthHomeFrag : BaseVmFrag() {
}
private fun request() {
- mViewModel.getBanners(CommonUtils.getMyUserId())//当期登录用户id
+ mViewModel.getBanners(CommonUtils.getMyUserId(),1)//当期登录用户id
- // mViewModel.getAllInfo(showIdInfo, false)
- // mViewModel.getDkInfo(false, showIdInfo)
- // 如果显示的是家人Tab则不刷新用户信息,防止头像错乱
- if (mFamilyAdapter.position < 1) {
- mViewModel.getMySetting()
- }
mViewModel.getMyFamilyList()
- /* mViewModel.getTips()
- mViewModel.getRank(2)*/
-
- mViewModel.getScinceList()
- }
- //蓝牙连接状态之后 数据上传
- private fun getConnectStatus() {
- LogUtils.d("getConnectStatus!")
- if (YCBBlueConnectHelper.getBlueStatus(false)) {
- LogUtils.d("start get DeviceInfo!")
-
- //连接之后 直接进行数据的同步
- YCBManager.getDeviceInfo { isok, value ->
- mainScope.launch {
- LogUtils.d("getDeviceInfo isOk:$isok;;; value=$value")
- if (isok) {//获取到设备信息,设备准备就绪上传手表数据
+ mViewModel.getScinceList()
- mViewModel.settingLive.value?.let {
- MyWorkManger.setMyWork(
- MyApp.instance!!,
- it.data.user.bluetooth
- ) //开启后台定时上传任务
- }
+ mViewModel.getHomeLayout()
- } else {//如果获取手表信息失败,断开连接以后让用户手动连接
- YCBBlueConnectHelper.disconnect()
- }
- }
- }
- } else {
- //断开连接重置状态 为了重新连接自后可以进行睡眠上传
-// initBlueToothStatu()
- }
+ // mViewModel.getBanners(CommonUtils.getMyUserId(),2)//当期登录用户id
}
@@ -775,135 +567,25 @@ HealthHomeFrag : BaseVmFrag() {
return@observe
}
- mBannerAdapter.setDatas(it.data)
+ mBannerAdapter.setDatas(it[1])
mBannerAdapter.notifyDataSetChanged()
- }
-
- mViewModel.scinceLive.observe(this) {
- adapterSince.setNewInstance(it.data)
- }
-
- //手表信息组装上传
- mViewModel.allDataInfo.observe(this) {
- if (null == it || it["data"] == null || it["data"] !is ArrayList<*>) {
- LogUtils.d("手表数据:暂时无数据...")
- getXtInfo(showIdInfo)//如果手表没数据也需要获取获取血糖信息
- get24HourReportInfo(showIdInfo)//如果手表没数据也需要获取24小时日报
- return@observe
- }
-
- LogUtils.d("手表数据:全部信息开始上传...")
- //是否为错误数据
- var existError = false
-
- val lists = it["data"] as ArrayList
- var array = JSONArray()
- lists.forEach { bean ->
-
- var json = JSONObject()
- var nowData = bean as java.util.HashMap
- val iterator = nowData.iterator()
- while (iterator.hasNext()) {
- val next = iterator.next()
- var values = if (next.value is Long) (next.value as Long) / 1000 else next.value
- when (next.key) {
- "OOValue" -> json.put("ooValue", values)
-
- "DBPValue" -> {
- var sbp = nowData["SBPValue"] as Int
- var dbp = nowData["DBPValue"] as Int
- //医学上是大值 收缩压
- //小值
- json.put("sbpValue", min(sbp, dbp))
- }
-
- "SBPValue" -> {
- //医学上是小值 舒张压
- //大值
- var sbp = nowData["SBPValue"] as Int
- var dbp = nowData["DBPValue"] as Int
- json.put("dbpValue", max(sbp, dbp))
- }
-
- else -> json.put(next.key, values)
- }
- }
- if (json.has("startTime")) {
- var times = json.get("startTime").toString().toLong()
-
- if (times < 0 || times > System.currentTimeMillis() / 1000) { //错误数据 不使用
- existError = true
- } else {
- array.put(json)
- }
- }
- }
- //错误数据保存到本地日志
- if (existError) {
- // saveFile(it.toString()) //存到本地日志
- }
-
- LogUtils.d("手表数据:array Length:${array.length()}")
- if (array.length() > 0) {
-// var lastJson = array[array.length() - 1] as JSONObject
-// lastJson.put("original", it.toString())
- mViewModel.uploadAllInfo(array)
-
- }
-
- }
-
- //小贴士
- mViewModel.tipsLive.observe(this) {
- LogUtils.d("TipsData:${it.data.size}")
- var list = mutableListOf()
- it.data.forEach { tipsBean ->
- list.add("${tipsBean.title}${tipsBean.content}")
+ if(it[2].isNullOrEmpty()){
+ binding.mBannerTwo.visibility = View.GONE
+ }else{
+ binding.mBannerTwo.visibility = View.VISIBLE
+ mMiddleBannerAdapter.setDatas(it[2])
+ mMiddleBannerAdapter.notifyDataSetChanged()
}
}
- //个人设置信息获取
- mViewModel.settingLive.observe(this) {
- if (null == it.data) return@observe
- it.data.let { settingBean ->
-
- if (BuildConfig.isRelease) {//设置极光推送别名
- JPushInterface.setAlias(
- requireContext(),
- settingBean.user.id.toInt(),
- "user_release_${settingBean.user.id}"
- )
- }
-
-
- Const.mainLiveData.value = settingBean
- mViewModel.getWelcomeInfo(settingBean.user.id)
- mViewModel.getWarningMsg()//获取预警消息
-
- requestByDeviceModel()
- // 激活过才能开启定是我任务
- //Log.e("worker", "定时任务开启")
-
- if (!mFamilyAdapter.data.isNullOrEmpty() && mFamilyAdapter.data.size > 0) {
- mFamilyAdapter.data[0].avatarUrl =
- if (settingBean.user.avatarUrl.isNullOrEmpty()) "" else settingBean.user.avatarUrl
- }
-
- MMkvHelper.put(Const.Blue_Tooth, settingBean.user.bluetooth)
- if (!settingBean.user.deviceId.isNullOrEmpty()) {
- Const.DeviceIdNum = settingBean.user.deviceId
- } else {
- Const.DeviceIdNum = ""
- }
- }
- //个人信息拿到之后再去获取mqtt信息
- mViewModel.getMqttInfo()
-
+ mViewModel.scinceLive.observe(this) {
+ adapterSince.setNewInstance(it.data)
}
//我家人信息
mViewModel.familyLive.observe(this) {
+ mFamilyAdapter.data.clear()
it.data.add(0, FamilyBean().apply {
this.fCall = "我"
})
@@ -927,129 +609,30 @@ HealthHomeFrag : BaseVmFrag() {
mFamilyAdapter.setNewInstance(it.data)
}
- //15秒钟更新一次蓝牙设备信息
- getDeviceInfoLive.observe(this) {
- LogUtils.d("定时更新一次蓝牙设备信息:${RxTimeTool.curTimeString}")
- startGetDeviceInfoLive()
-
- if (!MMkvHelper.contains(Const.Watch_Device_Type)) {//没有手表型号
- LogUtils.d("没有获取到手表型号")
- return@observe
- }
-
- if (!CommonUtils.isBlueTooth(MMkvHelper.getInt(Const.Watch_Device_Type))) {//不是蓝牙设备
- LogUtils.d("不是蓝牙设备!")
- return@observe
- }
-
- if (!YCBBlueConnectHelper.getBlueStatus(false)) {//蓝牙未连接
- LogUtils.d("蓝牙设备未连接!")
- return@observe
- }
-
- if ((!showIdInfo.isNullOrEmpty() && showIdInfo != CommonUtils.getMyUserId())) {//不是当前用户
- LogUtils.d("当前用户与showIdInfo不匹配!")
- return@observe
- }
-
- LogUtils.d("定时获取一次 DeviceInfo!")
- //连接之后 直接进行数据的同步
- YCBManager.getDeviceInfo { isok, value ->
- mainScope.launch {
- LogUtils.d("getDeviceInfo isOk:$isok;;; value=$value")
- if (isok) {//获取到设备信息,设备准备就绪上传手表数据
- }
- }
- }
- }
-
- //24小时健康报告返回信息
- mViewModel.infoLive.observe(this) {
-
- if (null == it.data) {
- LogUtils.e("返回数据为空!")
- return@observe
- }
-
- if (null == it.data.healthy) {
- LogUtils.e("健康信息数据为空!")
- return@observe
- }
-
- if (mFamilyAdapter.position != -1) {
- if (mFamilyAdapter.getItem(mFamilyAdapter.position).userJointId != it.data.user?.id) {
- if (mFamilyAdapter.position == 0 && it.data.user?.id.toString() == CommonUtils.getMyUserId()) {//如果是自己,啥也不做
-
- } else {
- LogUtils.e("当前用户与请求用户信息不一致,不作处理!")
- return@observe
- }
- }
- }
-
- reportBean = it.data
-
- var healthResult = it.data.healthy.result
- updateHealthDesc(healthResult)
- }
- }
-
-
-/**
- * 通过设备型号来处理不同业务逻辑*/
-
-
- private fun requestByDeviceModel() {
- when (MMkvHelper.getInt(Const.Watch_Device_Type)) {//如果是4GA3设备,则隐藏心电板块
- Const.Companion.WatchDevice.LightA3.ordinal -> {
- getXtInfo(showIdInfo, false)//获取血糖信息
- }
-
- else -> {
- if (!YCBBlueConnectHelper.isBlueExits()) {//检查蓝牙设备,如未发现蓝牙设备则获取用户上次的血糖信息和24小时信息
- LogUtils.d("未发现蓝牙设备...")
- getXtInfo(showIdInfo)//如果手表没数据也需要获取获取血糖信息
- }
- }
- }
- }
-
-/**
- * 更新血糖模块信息*/
-
-
- private fun updateBloodSugarInfo(info: XTangInfoBean) {
- if (null == info) {
- LogUtils.e("血糖模块信息没有,出错了~")
- return
- }
-
- if (!info.errorMsg.isNullOrEmpty()) {
- CommonToastUtils.showToast(info.errorMsg)
+ mViewModel.layoutLive.observe(this){
+ layoutTopAdapter.setNewInstance(it.data.top)
+ layoutContentAdapter.setNewInstance(it.data.middle)
}
}
-/**
- * 更新健康状态*/
-
-
- private fun updateHealthDesc(healthStatus: Int) {
- canGoto24Healthresult = healthStatus != 0 && healthStatus != -1
- }
+ private fun initFamilyAdapter() {
-/**
- * 家人信息绑定*/
+ defaultFamilyList.add(0, FamilyBean().apply {
+ this.fCall = "我"
+ })
+ defaultFamilyList.add(1, FamilyBean().apply {
+ this.fCall = "家人"
+ })
- private fun initFamilyAdapter() {
binding.mCom.mRecycle.layoutManager =
LinearLayoutManager(requireContext(), RecyclerView.HORIZONTAL, false)
binding.mCom.mRecycle.adapter = mFamilyAdapter
mFamilyAdapter.setOnItemClickListener { adapter, view, position ->
- if (position == mFamilyAdapter.data.size - 1) {
- onEventObject(requireContext(), UmengEventId.Family)
- RouteManager.goAct(ARouterUrl.BIND_FAMILY)
+ if (position == mFamilyAdapter.data.size - 1) { //第一期暂不做
+ /* onEventObject(requireContext(), UmengEventId.Family)
+ RouteManager.goAct(ARouterUrl.BIND_FAMILY)*/
} else {
var bean = adapter.getItem(position) as FamilyBean
showIdInfo = if (bean.id == 0) {
@@ -1065,177 +648,10 @@ HealthHomeFrag : BaseVmFrag() {
EventBus.getDefault().post(ChangeFamilyEvent(showIdInfo))
}
}
- }
-
-
-
- private fun getAllData() {
- YCBManager.getAllData {
- mainScope.launch {
- mViewModel.allDataInfo.postValue(it)
- }
- }
- }
-
-/**
- *15秒钟之内只能上传一次睡眠数据 避免重复上传*/
-
-
- private fun refreshTime() {
- if (isRefresh) {
- isRefresh = false
- mainScope.launch {
- delay(15 * 1000)
- isRefresh = true
-
- }
- }
- }
-
-/**
- * 获取历史步数*/
-
-
- private fun getStep() {
- YCBManager.getHistoryInfo(YCBOrder.STEP_DATA) {
- mainScope.launch {
- LogUtils.d("getStep Info!")
- var jsonArray = JSONArray()
- var arrayOrigin = JSONArray()
- for (i in 0 until it.size) {
- var info = it[i] as HashMap
- var jsonOrigin = JSONObject()
- for ((k, v) in info) {
- jsonOrigin.put(k, v)
- }
- arrayOrigin.put(jsonOrigin)
- var dataDayStr = RxTimeTool.milliseconds2String(
- System.currentTimeMillis(),
- SimpleDateFormat("yyyy-MM-dd")
- )
- var todayStartTime =
- RxTimeTool.string2Milliseconds("$dataDayStr 00:00:00") //今天0点的时间
-
- var startTime = (info["sportStartTime"] as Long)
- if (startTime < todayStartTime) {
- continue
- }
-
-
- var json = JSONObject()
- json.put("startTime", (info["sportStartTime"] as Long) / 1000)
- json.put("endTime", (info["sportEndTime"] as Long) / 1000)
- json.put("step", info["sportStep"])
- json.put("calories", info["sportCalorie"])
- json.put("distance", info["sportDistance"])
- jsonArray.put(json)
- }
- mViewModel.uploadStep(jsonArray)
-
- }
- }
- }
-
-
-/**
- * 获取血糖信息*/
-
-
- private fun getXtInfo(userId: String, isShowLoading: Boolean = false) {
- mViewModel.getXtInfo(userId, isShowLoading)
- }
-
-/**
- * 获取24小时健康报告*/
-
-
- private fun get24HourReportInfo(userId: String, isShowLoading: Boolean = false) {
- mViewModel.get24HourReportInfo(userId, isShowLoading)
- }
-/**
- * 新 睡眠时间上传
- * 限制睡眠在一定时间内请求的次数*/
-
-
- private fun getSleepNew() {
- YCBManager.getHistoryInfo(YCBOrder.SLEEP_DATA) {
- LogUtils.d("getSleep Info!")
- mainScope.launch {
- if (it.isNullOrEmpty()) {
- return@launch
- }
-
- CommonUtils.getMyUserInfo()?.apply {
- try {
- var arraySleep = JSONArray()
- var rawdata = sleepOriganData(it)
- for (i in 0 until it.size) {
- var json = JSONObject()
- var sleepDetailArray = JSONArray() //详细的睡眠时间
- var lastData = it[i] as HashMap<*, *>
- var startTime = lastData["startTime"] as Long
- var endTime = lastData["endTime"] as Long
-
- var lightAll = lastData["lightSleepTotal"] as Int //潜睡时长
- var deepLightAll = lastData["deepSleepTotal"] as Int //深睡时长
-
- var deepSleepCount = lastData["deepSleepCount"] as Int //深睡次数
- var lightSleepCount = lastData["lightSleepCount"] as Int //浅睡次数
-
- var listSleepData = lastData["sleepData"] as ArrayList<*>
-
- listSleepData.forEach {
- var value = it as HashMap<*, *>
- var jsonValue = JSONObject()
- jsonValue.put(
- "sleepStartTime",
- (value["sleepStartTime"] as Long) / 1000
- )
- jsonValue.put("sleepLen", value["sleepLen"] as Int)
- jsonValue.put("sleepType", value["sleepType"] as Int)
- jsonValue.put("userId", id)
- jsonValue.put("createBy", name)
- sleepDetailArray.put(jsonValue)
- }
-
- json.put("userId", id)
- json.put("createBy", name)
- json.put("lightSleepCount", lightSleepCount) //浅睡次数
- json.put("deepSleepCount", deepSleepCount) //深睡次数
- json.put("hmWatchSleepData", sleepDetailArray)
- json.put("lightSleepTotal", max(lightAll, deepLightAll)) //潜睡时长
- json.put("deepSleepTotal", min(lightAll, deepLightAll)) //深睡时长
- json.put("startTime", startTime / 1000) //开始时间
- json.put("endTime", endTime / 1000) //结束时间
- json.put("os", "android")
- if (i == it.size - 1) {
- json.put("original", rawdata.toString())
- } else {
- json.put("original", "---")
- }
- arraySleep.put(json)
- }
- if (arraySleep.length() > 0) {
- mViewModel.uploadSleep(arraySleep)
- }
- } catch (e: Exception) {
- LogUtils.e("睡眠数据上传错误:$e")
- }
- }
- }
- }
- }
-
-/**
- * 修改背景色*/
-
- private fun changeBg(view: View, colId: Int) {
- var bg = view.background as GradientDrawable
- bg.setColor(ContextCompat.getColor(requireContext(), colId))
- bg.mutate()
+ mFamilyAdapter.position = 0
+ mFamilyAdapter.setNewInstance(defaultFamilyList)
}
-
private val reqGpsPermissionDialog by lazy {
NoticeSettingDialog(requireContext(), "请打开GPS权限", {
@@ -1251,88 +667,6 @@ HealthHomeFrag : BaseVmFrag() {
reqGpsPermissionDialog.show()
}
-/**
- * 蓝牙链接*/
-
-
- private fun connect(mac: String) {
-
- if (!CommonUtils.isBlueTooth(MMkvHelper.getInt(Const.Watch_Device_Type))) {//如果不是蓝牙设备,不进行连接
- return
- }
-
- if (mac.isNullOrEmpty()) {
-// initBlueToothStatu()
- return
- }
-
- if (!checkBlueConnectPermission(requireContext())) {
- CommonToastUtils.showToast("请开启App蓝牙搜索权限!")
- getBluePermission(requireContext()) {
- if (it) {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !isGpsOpen(requireContext())) {
- requestGPSPermission()
- }
- }
- }
- return
- }
-
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !isGpsOpen(requireContext())) {
- CommonToastUtils.showToast("请打开GPS权限!")
- requestGPSPermission()
- return
- }
-
- mainScope.launch(Dispatchers.IO) {
- LogUtils.d("HealthFrag Connect!!!")
- YCBBlueConnectHelper.connectionBlueTooth(mac, true) {
- mainUIUpdate(it)
- }
- }
- }
-
- private fun mainUIUpdate(connectState: YCBBlueConnectHelper.BLEConnectState) {
-
- mainScope.launch(Dispatchers.Main) {
- when (connectState) {
- YCBBlueConnectHelper.BLEConnectState.Connecting -> {
- /* setDeviceInfo(
- DeviceInfoBean(
- true,
- YCBBlueConnectHelper.BLEConnectState.Connecting
- )
- )*/
-// binding.mContent.visibility = View.GONE
-// binding.mEle.visibility = View.VISIBLE
-// binding.mEle.text = getString(R.string.blue_tooth_connecting)
- }
-
- YCBBlueConnectHelper.BLEConnectState.Connected -> {
- getConnectStatus()
- }
-
- YCBBlueConnectHelper.BLEConnectState.DisConnect -> {
- //断开连接重置状态 为了重新连接自后可以进行睡眠上传
- // initBlueToothStatu()
- }
- }
- }
- }
-
-
-/* private fun initBlueToothStatu() {
- setDeviceInfo(DeviceInfoBean(blueTooth(), YCBBlueConnectHelper.BLEConnectState.DisConnect))
- }*/
-
- //workmanager 后台上传任务
- @Subscribe(threadMode = ThreadMode.MAIN)
- fun workManagerSuccess(event: WorkManagerEvent) {
- //上传成功回传刷新
- LogUtils.d("work is ok")
- mViewModel.getAllInfo(showIdInfo, false)
- }
-
//个人信息修改 主界面刷新
@Subscribe(threadMode = ThreadMode.MAIN)
fun refresh(event: MyInfoEvent) {
@@ -1342,14 +676,6 @@ HealthHomeFrag : BaseVmFrag() {
request()
}
- //绑定状态下的蓝牙连接状态
- @Subscribe(threadMode = ThreadMode.MAIN)
- fun blueToothStatus(event: BlueToothConnectEvent) {
- LogUtils.d("blueToothStatus change!!")
- CommonUtils.getBlueToothMac()?.let {
- connect(it)
- }
- }
//家人信息改变 刷新
@Subscribe(threadMode = ThreadMode.MAIN)
@@ -1357,129 +683,19 @@ HealthHomeFrag : BaseVmFrag() {
mViewModel.getMyFamilyList()
}
-/**
- * 重新签名之后隐藏提示框*/
@Subscribe(threadMode = ThreadMode.MAIN)
fun againSignEvent(event: AgainSignEvent) {
signDialog.dismiss()
}
-
-/**
- * 24小时健康状态更新事件
-*/
-
-
@Subscribe(threadMode = ThreadMode.MAIN)
- fun health24HourStatusUpdate(event: Health24HourStatusEvent) {
- if (-2 != event.healthStatus) {
- updateHealthDesc(event.healthStatus)
- }
- }
-
-/**
- * 血糖开通/续费成功*/
-
-
- @Subscribe(threadMode = ThreadMode.MAIN)
- fun xtOpenSuccess(event: XTangOpenEvent) {
- var time = RxTimeTool.getCurrentDateTime("mm").toInt()
- var sPrefix = String.format("%02d", time / 10 * 10) //当前时间对应的整分钟数
- var nowTimeStr = RxTimeTool.getCurrentDateTime("yyyy-MM-dd HH") + ":${sPrefix}" //整点时间
-// updateBloodsugarStatus(event.model, nowTimeStr)
+ fun LoginOrRegisterChange(event: LoginOrRegisterEvent){
+ request()
}
-/**
- * 血糖信息更新*/
-
-
@Subscribe(threadMode = ThreadMode.MAIN)
- fun xtDataUpdate(event: XTangUpdateEvent) {
- LogUtils.d("xtDataUpdate!!!")
- updateBloodSugarInfo(event.info)
- }
-
-/**
- * 睡眠的原始数据*/
-
-
- private fun sleepOriganData(list: ArrayList): JSONArray {
- var array = JSONArray()
- list.forEach {
- try {
- var json = JSONObject()
- var lastData = it as HashMap<*, *>
-
- var startTime = lastData["startTime"] as Long
- var endTIme = lastData["endTime"] as Long
-
- var l = lastData["lightSleepTotal"] as Int //潜睡时长
- var d = lastData["deepSleepTotal"] as Int //深睡时长
-
- json.put("startTime", startTime)
- json.put("endTime", endTIme)
- json.put("lightSleepTotal", l)
- json.put("deepSleepTotal", d)
-
- var listSleepData = lastData["sleepData"] as ArrayList<*>
- var sleepArray = JSONArray()
- listSleepData.forEach {
- var value = it as HashMap<*, *>
- var jsonValue = JSONObject()
- jsonValue.put("sleepStartTime", (value["sleepStartTime"] as Long))
- jsonValue.put("sleepLen", value["sleepLen"] as Int)
- jsonValue.put("sleepType", value["sleepType"] as Int)
- sleepArray.put(jsonValue)
- }
- json.put("sleepData", sleepArray)
- array.put(json)
- } catch (e: Exception) {
- e.printStackTrace()
- }
- }
- return array
- }
-
-/**
- * 15秒钟一次更新*/
-
+ fun loginOutChange(event: LoginOutEvent){
- private fun startGetDeviceInfoLive() {
- getDeviceInfoJob = mainScope.launch(Dispatchers.IO) {
- delay(1000 * 15)
- LogUtils.d("休眠结束:${RxTimeTool.curTimeString}")
- getDeviceInfoLive.postValue("")
- }
- }
-
-/**
- * 更新血糖状态*/
-
-
-/* private fun updateBloodsugarStatus(model: Int, updateTime: String) {
- mHealthAdapter.xtangInfo?.let {
- it.model = model
- it.time = updateTime
- }
- mHealthAdapter.notifyDataSetChanged()
- }*/
-
- override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
- super.onActivityResult(requestCode, resultCode, data)
- if (resultCode == RESULT_OK) {
- when (requestCode) {
- 1001 -> {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && isGpsOpen(requireContext())) {//如果GPS已打开
- LogUtils.d("GPS Is Open!")
- mainScope.launch {
- CommonUtils.getBlueToothMac()?.let {
- connect(it)
- }
- }
- }
- }
- }
- }
}
}
diff --git a/app/src/main/java/com/zj365/dc/fragment/MessageFragment.kt b/app/src/main/java/com/zj365/dc/fragment/MessageFragment.kt
index c8ead98..242252c 100644
--- a/app/src/main/java/com/zj365/dc/fragment/MessageFragment.kt
+++ b/app/src/main/java/com/zj365/dc/fragment/MessageFragment.kt
@@ -4,9 +4,13 @@ import android.graphics.Color
import android.view.View
import androidx.recyclerview.widget.LinearLayoutManager
import com.xty.base.fragment.BaseFragList
+import com.xty.common.event.LoginOrRegisterEvent
+import com.xty.common.event.LoginOutEvent
import com.zj365.dc.adapter.HomeMessageAdapter
import com.zj365.dc.databinding.FragMessageBinding
import com.zj365.dc.vm.MessageVm
+import org.greenrobot.eventbus.Subscribe
+import org.greenrobot.eventbus.ThreadMode
class MessageFragment : BaseFragList() {
@@ -45,4 +49,14 @@ class MessageFragment : BaseFragList() {
override fun setLayout()=binding.root
+ @Subscribe(threadMode = ThreadMode.MAIN)
+ fun LoginOrRegisterChange(event: LoginOrRegisterEvent){
+ refresh()
+ }
+
+ @Subscribe(threadMode = ThreadMode.MAIN)
+ fun loginOutChange(event: LoginOutEvent){
+
+ }
+
}
\ No newline at end of file
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 b6d2ef4..cf05d98 100644
--- a/app/src/main/java/com/zj365/dc/fragment/MineFrag.kt
+++ b/app/src/main/java/com/zj365/dc/fragment/MineFrag.kt
@@ -1,24 +1,29 @@
package com.zj365.dc.fragment
import android.os.Build
-import android.text.TextUtils
import android.view.View
import androidx.annotation.RequiresApi
+import com.xty.base.dialog.AppUpdateDialog
import com.xty.base.fragment.BaseVmFrag
import com.xty.common.*
import com.xty.common.arouter.ARouterUrl
import com.xty.common.arouter.RouteManager
import com.xty.common.bracelet.YCBBlueConnectHelper
+import com.xty.common.event.LoginOrRegisterEvent
+import com.xty.common.event.LoginOutEvent
import com.xty.common.event.MyInfoEvent
import com.xty.common.util.CommonToastUtils
import com.xty.common.util.CommonUtils
import com.xty.network.model.SettingBean
+import com.zj365.dc.BuildConfig
import com.zj365.dc.activity.MainActivity
import com.zj365.dc.databinding.FragMineBinding
import com.zj365.health.weight.DialogTip
import com.zj365.mime.vm.SettingVm
import org.greenrobot.eventbus.EventBus
+import org.greenrobot.eventbus.Subscribe
+import org.greenrobot.eventbus.ThreadMode
/**
** 我的
@@ -28,6 +33,14 @@ import org.greenrobot.eventbus.EventBus
class MineFrag : BaseVmFrag() {
private val binding by lazy { FragMineBinding.inflate(layoutInflater) }
+
+ private val dialog by lazy {
+ AppUpdateDialog(requireActivity()) {
+ if (it) {
+ //finish()
+ }
+ }
+ }
override fun setLayout(): View = binding.root
private val defaultIcon by lazy {
@@ -64,9 +77,14 @@ class MineFrag : BaseVmFrag() {
}
binding.mllIntegral.setOnClickListener { //积分
- bundle.clear()
- bundle.putSerializable("user", user)
- RouteManager.goAct(ARouterUrl.MY_INTEGRAL, bundle)
+ if(MMkvHelper.getLong(Const.USER_ID).toString() == "0"){
+ RouteManager.goAct(ARouterUrl.LOGIN_ACT)
+ }else{
+ bundle.clear()
+ bundle.putSerializable("user", user)
+ RouteManager.goAct(ARouterUrl.MY_INTEGRAL, bundle)
+ }
+
}
binding.llAboutUs.setOnClickListener {
RouteManager.goAct(ARouterUrl.ABOUT)
@@ -138,10 +156,20 @@ class MineFrag : BaseVmFrag() {
}
}
}
+ binding.llDataComparsion.setOnClickListener {
+ if(MMkvHelper.getLong(Const.USER_ID).toString() == "0"){
+ RouteManager.goAct(ARouterUrl.LOGIN_ACT)
+ }else {
+ goComparePage()
+ }
+ }
+
+ binding.llUpGraded.setOnClickListener {
+ mViewModel.getVersionNew(BuildConfig.VERSION_CODE)
+ }
/*binding.mInfo.setOnClickListener {
RouteManager.goAct(ARouterUrl.BASE_INFO_CHANGE, bundle)
}*/
- mViewModel.getNesProg("")
}
override fun onResume() {
@@ -153,10 +181,6 @@ class MineFrag : BaseVmFrag() {
mViewModel.getMySetting()
}
mViewModel.getScore(1)
- // mViewModel.getMyFamilyList()
- // mViewModel.getNesProg("")
- // mViewModel.getInviteCountRequest(CommonUtils.getMyUserId().toString())
-// mViewModel.getNotReadCount()
}
}
@@ -167,7 +191,16 @@ class MineFrag : BaseVmFrag() {
mViewModel.scoreLive.observe(this) {
binding.mIntegral.text = (if (it.data.num.isNullOrEmpty()) "0" else it.data.num!!)
}
- //设置邀请人数
+
+ mViewModel.updateLive.observe(this) {
+ if (!it.data.url.isNullOrEmpty()) {
+ dialog.showUploadDialog(it.data.url!!, it.data.log,it.data.versionName ,it.data.isupdate) { show ->
+ }
+ }else{
+ CommonToastUtils.showSucceedToast("已经是最新版本")
+ }
+ }
+
Const.mainLiveData.observe(this) {
if (null == it) {
@@ -225,6 +258,24 @@ class MineFrag : BaseVmFrag() {
}
+ private fun goComparePage() {
+ bundle.clear()
+ bundle.putString("id", user?.id)
+ RouteManager.goAct(ARouterUrl.COMPARE_PAGE_DATA_ACT, bundle)
+ }
+ @Subscribe(threadMode = ThreadMode.MAIN)
+ fun onLoginOrRegisterSuccess(event: LoginOrRegisterEvent){
+ mViewModel.getMySetting()
+ mViewModel.getScore(1)
+ }
+
+ @Subscribe(threadMode = ThreadMode.MAIN)
+ fun onLoginOutUIChange(event: LoginOutEvent){
+ refreshLogoutUI()
+ }
+
+
+
/*** 设置消息数量*/
@@ -251,4 +302,12 @@ class MineFrag : BaseVmFrag() {
// }
}
+ fun refreshLogoutUI(){
+ user = null
+ binding.mIntegral.text = "0"
+ binding.mName.text = ""
+ binding.mPhone.text = "账户:"
+ binding.mImage.setImageResource(defaultIcon[0])
+ }
+
}
diff --git a/app/src/main/java/com/zj365/dc/vm/HealthVm.kt b/app/src/main/java/com/zj365/dc/vm/HealthVm.kt
index aa275c7..ffa7845 100644
--- a/app/src/main/java/com/zj365/dc/vm/HealthVm.kt
+++ b/app/src/main/java/com/zj365/dc/vm/HealthVm.kt
@@ -122,17 +122,17 @@ class HealthVm : BaseVm() {
}
}
- /**
+/* *//**
* 首页轮播图
*
* @param id 机构ID
- */
+ *//*
fun getBanners(id: String?){
startHttp(false) {
var value=apiInterface().getBanners(id)
value.getCodeStatus(bannerLive,nowData)
}
- }
+ }*/
/**
* 首页小贴士
diff --git a/app/src/main/java/com/zj365/dc/vm/HomeVm.kt b/app/src/main/java/com/zj365/dc/vm/HomeVm.kt
new file mode 100644
index 0000000..3200227
--- /dev/null
+++ b/app/src/main/java/com/zj365/dc/vm/HomeVm.kt
@@ -0,0 +1,83 @@
+package com.zj365.dc.vm
+
+import androidx.lifecycle.MutableLiveData
+import com.xty.base.vm.BaseVm
+import com.xty.network.model.BannerBean
+import com.xty.network.model.FamilyBean
+import com.xty.network.model.HomeLayoutBean
+import com.xty.network.model.RespBody
+import com.xty.network.model.ScienceBean
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.async
+import kotlinx.coroutines.withContext
+import org.json.JSONObject
+
+class HomeVm: BaseVm() {
+
+ val bannerLive by lazy { MutableLiveData>>() }
+ val familyLive by lazy { MutableLiveData>>() }
+
+ val scinceLive by lazy{MutableLiveData>>()}
+
+ val layoutLive by lazy { MutableLiveData>() }
+
+
+ fun getBanners(id: String?,location:Int){
+ startHttp(false) {
+
+ withContext(Dispatchers.IO){
+ var json = JSONObject()
+ json.put("userId",id)
+ json.put("location",location) // 1,首页顶部,2,首页中部
+ var nowLine = async{apiInterface().getBanners(retrofits.getRequestBody(json.toString()))}
+ var showInfo = nowLine.await()
+ // var value=apiInterface().getBanners(retrofits.getRequestBody(json.toString()))
+ var dataMap = setMapValue(bannerLive.value,showInfo.data,location)
+ if (dataMap != null){
+ bannerLive.postValue(dataMap)
+ }
+ // value.getCodeStatus(bannerLive,nowData)
+ }
+
+ }
+ }
+
+ fun setMapValue(map: MutableMap>?, list: MutableList?, type: Int): MutableMap>? {
+ if (list == null) {
+ return null
+ } else { //当得到的值不是空的时候
+ var mapNew = mutableMapOf>()
+ if (map == null) {
+ mapNew[type] = list
+ return mapNew
+ } else {
+ map[type] = list
+ return map
+ }
+ }
+ }
+
+ fun getMyFamilyList(){
+ startHttp (false){
+ var json= JSONObject()
+
+ var request= apiInterface().getMyFamily(retrofits.getRequestBody(json.toString()))
+ request.getCodeStatus(familyLive,nowData)
+ }
+ }
+
+ fun getScinceList(){
+ startHttp {
+ var body= apiInterface().getScinceList()
+ body.getCodeStatus(scinceLive,nowData)
+ }
+ }
+
+ fun getHomeLayout(){
+ startHttp {
+ var body= apiInterface().getHomeLayout()
+ body.getCodeStatus(layoutLive,nowData)
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/zj365/dc/vm/LoginVm.kt b/app/src/main/java/com/zj365/dc/vm/LoginVm.kt
index c15f66b..f946b7b 100644
--- a/app/src/main/java/com/zj365/dc/vm/LoginVm.kt
+++ b/app/src/main/java/com/zj365/dc/vm/LoginVm.kt
@@ -36,14 +36,19 @@ class LoginVm() : BaseVm() {
return
}
if (pwd.isEmpty()) {
- CommonToastUtils.showToast(R.string.please_input_password)
+ CommonToastUtils.showToast(R.string.please_input_new_pwd)
return
+ } else {
+ if (pwd.length < 6) {
+ CommonToastUtils.showToast(R.string.please_input_new_pwd)
+ return
+ }
+
}
startHttp {
val json = JSONObject()
json.put("phone", account)
json.put("userPwd", RxTool.Md5(pwd))
- //json.put("userPwd", pwd)
val login = apiInterface().login(retrofits.getRequestBody(json.toString()))
if (login.body()?.code == 500) {
login.body()?.msg?.let { CommonToastUtils.showToast(it) }
diff --git a/app/src/main/java/com/zj365/dc/vm/RegisterVm.kt b/app/src/main/java/com/zj365/dc/vm/RegisterVm.kt
index 9031901..796cc7d 100644
--- a/app/src/main/java/com/zj365/dc/vm/RegisterVm.kt
+++ b/app/src/main/java/com/zj365/dc/vm/RegisterVm.kt
@@ -41,11 +41,7 @@ class RegisterVm : BaseVm() {
fun register(
phone: String,
code: String,
- password: String,
- birthday: String? = null,
- bean: WxInfoBean? = null,
- simple: SimpleInfoBean? = null,
- invitePhone: String? = ""
+ password: String
) {
if (phone.isEmpty()) {
CommonToastUtils.showToast(R.string.please_input_phone)
@@ -69,29 +65,8 @@ class RegisterVm : BaseVm() {
withContext(Dispatchers.IO) {
val json = JSONObject()
json.put("phone", phone)
-// json.put("sex",1) //性别默认传1
- json.put("birthday", birthday)
-// json.put("birthdayType",birthdayType)
json.put("code", code)
json.put("password", RxTool.Md5(password))
- if (!TextUtils.isEmpty(invitePhone)) {
- json.put("invitePhone", invitePhone)
- }
- if (bean != null) {
- json.put("openId", bean.openid)
- json.put("name", bean.nickname)
- json.put("avatarUrl", bean.headimgurl)
- json.put("sex", if (bean.sex == 0) 1 else bean.sex)
- }
- if (simple != null) {
- json.put("name", simple.name)
- if (simple.avatar.isNotEmpty()) {
- val image = async { upLoadImage(simple.avatar) }
- val await = image.await()
- json.put("avatarUrl", await.fileId)
- }
- json.put("sex", simple.sex)
- }
val register = apiInterface().register(retrofits.getRequestBody(json.toString()))
saveToken(register.raw().headers)
register.body()?.getCodeStatus(registerVm, nowData)
@@ -115,4 +90,23 @@ class RegisterVm : BaseVm() {
var body = apiInterface().uploadImage(fileRb)
return body.data
}
+
+ fun login(account: String, pwd: String) {
+ startHttp {
+ val json = JSONObject()
+ json.put("phone", account)
+ json.put("userPwd", RxTool.Md5(pwd))
+ //json.put("userPwd", pwd)
+ val login = apiInterface().login(retrofits.getRequestBody(json.toString()))
+ if (login.body()?.code == 500) {
+ login.body()?.msg?.let { CommonToastUtils.showToast(it) }
+ return@startHttp
+ }
+ saveToken(login.raw().headers)
+ val bodys = login.body() as RespBody
+
+ MMkvHelper.put(Const.USER_ID, bodys.data.id)
+ bodys.getCodeStatus(mLogin, nowData, loading)
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/res/layout/act_diet_management.xml b/app/src/main/res/layout/act_diet_management.xml
new file mode 100644
index 0000000..0b6d031
--- /dev/null
+++ b/app/src/main/res/layout/act_diet_management.xml
@@ -0,0 +1,211 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/act_info_simple.xml b/app/src/main/res/layout/act_info_simple.xml
index 5977f0e..ecb2f1a 100644
--- a/app/src/main/res/layout/act_info_simple.xml
+++ b/app/src/main/res/layout/act_info_simple.xml
@@ -265,7 +265,7 @@
android:paddingRight="@dimen/dp_20"
android:paddingLeft="@dimen/dp_20"
android:background="@drawable/shape_btn_select_bg_white"
- android:textColor="@color/col_8D0"
+ android:textColor="@color/col_02c"
android:textSize="@dimen/dp_16"
android:text="去绑定手表"/>
diff --git a/app/src/main/res/layout/act_login.xml b/app/src/main/res/layout/act_login.xml
index 25a4c35..c55953b 100644
--- a/app/src/main/res/layout/act_login.xml
+++ b/app/src/main/res/layout/act_login.xml
@@ -76,6 +76,7 @@
android:paddingTop="@dimen/dp_18"
android:paddingBottom="@dimen/dp_18"
android:singleLine="true"
+ android:maxLength="11"
android:text=""
android:textColor="@color/col_313"
android:textColorHint="@color/col_c7c"
diff --git a/app/src/main/res/layout/act_register.xml b/app/src/main/res/layout/act_register.xml
index c052b83..7983292 100644
--- a/app/src/main/res/layout/act_register.xml
+++ b/app/src/main/res/layout/act_register.xml
@@ -53,6 +53,7 @@
android:hint="@string/please_input_phone"
android:inputType="phone"
android:layout_marginTop="@dimen/dp_62"
+ android:maxLength="11"
android:paddingTop="@dimen/dp_18"
android:paddingBottom="@dimen/dp_18"
android:textColorHint="@color/col_c7c"
@@ -112,10 +113,11 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/shape_r25_eeeeee"
- android:hint="请输入6位密码"
+ android:hint="请输入6位以上密码"
android:paddingTop="@dimen/dp_18"
android:paddingBottom="@dimen/dp_18"
android:textColorHint="@color/col_c7c"
+ android:inputType="textPassword"
android:paddingLeft="@dimen/dp_20"
android:textColor="@color/col_313"
android:singleLine="true"
diff --git a/app/src/main/res/layout/child_healt.xml b/app/src/main/res/layout/child_healt.xml
index af49960..61b5e77 100644
--- a/app/src/main/res/layout/child_healt.xml
+++ b/app/src/main/res/layout/child_healt.xml
@@ -14,9 +14,15 @@
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent">
+
+
-
+ android:id="@+id/rv_layout"/>
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_home_top_layout.xml b/app/src/main/res/layout/item_home_top_layout.xml
new file mode 100644
index 0000000..9e5a72b
--- /dev/null
+++ b/app/src/main/res/layout/item_home_top_layout.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-xxhdpi/icon_calorie_analyze.png b/app/src/main/res/mipmap-xxhdpi/icon_calorie_analyze.png
new file mode 100644
index 0000000..4bb6a77
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_calorie_analyze.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/icon_diet_more.png b/app/src/main/res/mipmap-xxhdpi/icon_diet_more.png
new file mode 100644
index 0000000..1702da9
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_diet_more.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/icon_food_diary.png b/app/src/main/res/mipmap-xxhdpi/icon_food_diary.png
new file mode 100644
index 0000000..6c34740
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_food_diary.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/icon_healthy_diet.png b/app/src/main/res/mipmap-xxhdpi/icon_healthy_diet.png
new file mode 100644
index 0000000..bd3188d
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_healthy_diet.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/icon_medicine_food.png b/app/src/main/res/mipmap-xxhdpi/icon_medicine_food.png
new file mode 100644
index 0000000..701a5ef
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_medicine_food.png differ
diff --git a/base/src/main/java/com/xty/base/act/BaseVmAct.kt b/base/src/main/java/com/xty/base/act/BaseVmAct.kt
index a200c7f..4ff3a7c 100644
--- a/base/src/main/java/com/xty/base/act/BaseVmAct.kt
+++ b/base/src/main/java/com/xty/base/act/BaseVmAct.kt
@@ -29,6 +29,7 @@ abstract class BaseVmAct: IBaseAct() {
mViewModel.nowData.observe(this){
loadingView.dismiss()
+ MMkvHelper.clearUserInfo()
/*if(componentName.className!="LoginAct" ){
ToastUtils.show(R.string.again_login)
RxActivityTool.finishAllActivity()
diff --git a/base/src/main/java/com/xty/base/fragment/BaseVmFrag.kt b/base/src/main/java/com/xty/base/fragment/BaseVmFrag.kt
index 2a590f5..417906c 100644
--- a/base/src/main/java/com/xty/base/fragment/BaseVmFrag.kt
+++ b/base/src/main/java/com/xty/base/fragment/BaseVmFrag.kt
@@ -24,13 +24,14 @@ abstract class BaseVmFrag : IBaseFrag() {
super.initView()
mViewModel = setViewModel()
mViewModel.loading = loadingView
- /* mViewModel.nowData.observe(this) {
+
+ mViewModel.nowData.observe(this) {
loadingView.dismiss()
ToastUtils.show(R.string.again_login)
- RxActivityTool.finishAllActivity()
+ //RxActivityTool.finishAllActivity()
MMkvHelper.clearUserInfo()
- RouteManager.goAct(ARouterUrl.LOGIN_ACT)
- }*/
+ // RouteManager.goAct(ARouterUrl.LOGIN_ACT)
+ }
observer()
}
diff --git a/base/src/main/res/mipmap-xhdpi/ic_upload.png b/base/src/main/res/mipmap-xhdpi/ic_upload.png
index e11f3c2..90813f5 100644
Binary files a/base/src/main/res/mipmap-xhdpi/ic_upload.png and b/base/src/main/res/mipmap-xhdpi/ic_upload.png differ
diff --git a/base/src/main/res/mipmap-xxhdpi/ic_upload.png b/base/src/main/res/mipmap-xxhdpi/ic_upload.png
index 10337db..6fc2ade 100644
Binary files a/base/src/main/res/mipmap-xxhdpi/ic_upload.png and b/base/src/main/res/mipmap-xxhdpi/ic_upload.png differ
diff --git a/common/build.gradle b/common/build.gradle
index 1deabce..d1c43f0 100644
--- a/common/build.gradle
+++ b/common/build.gradle
@@ -103,4 +103,6 @@ dependencies {
api 'com.google.zxing:core:3.3.3'
api 'com.github.maning0303:MNZXingCode:V2.1.9'
+ api 'pub.devrel:easypermissions:3.0.0'
+
}
\ No newline at end of file
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 a134852..2fb8e06 100644
--- a/common/src/main/java/com/xty/common/arouter/ARouterUrl.kt
+++ b/common/src/main/java/com/xty/common/arouter/ARouterUrl.kt
@@ -3,17 +3,18 @@ package com.xty.common.arouter
class ARouterUrl {
companion object {
//app
- const val MAIN_ACT = "/com/zj365/dc/act/MainActivity"
- const val LOGIN_ACT = "/com/zj365/dc/act/LoginAct"
- const val REGIST_ACT = "/com/zj365/dc/act/RegisterAct"
- const val DEVICE_ACTIVE = "/com/zj365/dc/act/OneKeyBinderDeviceAct"
+ 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 BASIC_INFO = "/com/zj365/dc/act/BasicInfoAct"
const val BIND_WX_PHONE = "/com/zj365/dc/act/BindWxPhone"
- const val DEVICE_CONNECT = "/com/zj365/dc/act/DeviceConnectAct"
- const val DEVICE_CHOICE = "/com/zj365/dc/act/DeviceChoiceAct"
+ const val DEVICE_CONNECT = "/com/zj365/dc/activity/DeviceConnectAct"
+ const val DEVICE_CHOICE = "/com/zj365/dc/activity/DeviceChoiceAct"
const val INFO_SIMPLE = "/com/zj365/dc/act/InfoSimpleAct"
- const val DEVICE_SEARCH = "/com/zj365/dc/act/DeviceSearchBodyFatAct"
- const val DEVICE_BIND = "/com/zj365/dc/act/DeviceBindAct"
+ const val DEVICE_SEARCH = "/com/zj365/dc/activity/DeviceSearchBodyFatAct"
+ const val DEVICE_BIND = "/com/zj365/dc/activity/DeviceBindAct"
+ const val SCIENCE_LIST = "/com/zj365/dc/activity/HealthScienceAct"
// const val FAMILY_INFO="/com/zj365/dc/act/FamilyMainAct"
diff --git a/common/src/main/java/com/xty/common/event/LoginOrRegisterEvent.kt b/common/src/main/java/com/xty/common/event/LoginOrRegisterEvent.kt
new file mode 100644
index 0000000..4bf239d
--- /dev/null
+++ b/common/src/main/java/com/xty/common/event/LoginOrRegisterEvent.kt
@@ -0,0 +1,4 @@
+package com.xty.common.event
+
+class LoginOrRegisterEvent {
+}
\ No newline at end of file
diff --git a/common/src/main/java/com/xty/common/event/LoginOutEvent.kt b/common/src/main/java/com/xty/common/event/LoginOutEvent.kt
new file mode 100644
index 0000000..6a3d171
--- /dev/null
+++ b/common/src/main/java/com/xty/common/event/LoginOutEvent.kt
@@ -0,0 +1,4 @@
+package com.xty.common.event
+
+class LoginOutEvent {
+}
\ No newline at end of file
diff --git a/common/src/main/res/values/strings.xml b/common/src/main/res/values/strings.xml
index bdfba48..c30f27d 100644
--- a/common/src/main/res/values/strings.xml
+++ b/common/src/main/res/values/strings.xml
@@ -144,7 +144,7 @@
请输入账号 (手机号)
请输入机构授权码(选填)
请输入正确的手机号
- 请输入密码
+ 请输入6位以上密码
请输入不少于6位数的密码
请输入不少于6位数的密码
请输入不少于6位数的密码
diff --git a/config.gradle b/config.gradle
index 05b07ad..3403a64 100644
--- a/config.gradle
+++ b/config.gradle
@@ -6,7 +6,7 @@ ext {
appId : "com.zj365.dc",
minSdk : 23,
targetSdk : 32,
- versionCode : 1,
+ versionCode : 2,
versionName : "1.0.0"
]
@@ -28,7 +28,7 @@ ext {
/* debug_url : "https://auprty.com/app/",
release_url: "https://auprty.com/app/"*/
//测试环境
- debug_url : "http://175.6.39.20:8181/app/",
+ debug_url : "http://java01.zhongjian365.com/app/",
release_url: "http://175.6.39.20:8181/app/"
]
diff --git a/gradle.properties b/gradle.properties
index 8b7a7a9..e1dc032 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -21,4 +21,5 @@ android.enableJetifier=true
kotlin.code.style=official
kotlin.incremental=true
org.gradle.parallel=true
-android.injected.testOnly=false
\ No newline at end of file
+android.injected.testOnly=false
+android.defaults.buildfeatures.buildconfig=true
\ No newline at end of file
diff --git a/health/src/main/AndroidManifest.xml b/health/src/main/AndroidManifest.xml
index 49573a4..d59ff76 100644
--- a/health/src/main/AndroidManifest.xml
+++ b/health/src/main/AndroidManifest.xml
@@ -229,6 +229,12 @@
+
+
\ No newline at end of file
diff --git a/health/src/main/res/layout/act_datamanager_tijian.xml b/health/src/main/res/layout/act_datamanager_tijian.xml
index a755409..c1b53f4 100644
--- a/health/src/main/res/layout/act_datamanager_tijian.xml
+++ b/health/src/main/res/layout/act_datamanager_tijian.xml
@@ -147,7 +147,7 @@
android:paddingTop="@dimen/dp_10"
android:paddingBottom="@dimen/dp_10"
android:text="管理"
- android:textColor="@color/col_8D0"
+ android:textColor="@color/col_02c"
android:textSize="@dimen/sp_18"
android:textStyle="bold"
app:layout_constraintLeft_toLeftOf="parent"
diff --git a/health/src/main/res/layout/act_datamanager_user_medical.xml b/health/src/main/res/layout/act_datamanager_user_medical.xml
index f4bcfde..57ae932 100644
--- a/health/src/main/res/layout/act_datamanager_user_medical.xml
+++ b/health/src/main/res/layout/act_datamanager_user_medical.xml
@@ -63,7 +63,7 @@
android:paddingTop="@dimen/dp_10"
android:paddingBottom="@dimen/dp_10"
android:text="管理"
- android:textColor="@color/col_8D0"
+ android:textColor="@color/col_02c"
android:textSize="@dimen/sp_18"
android:textStyle="bold"
app:layout_constraintLeft_toLeftOf="parent"
diff --git a/health/src/main/res/layout/act_order_detail.xml b/health/src/main/res/layout/act_order_detail.xml
index e80b206..2e7811c 100644
--- a/health/src/main/res/layout/act_order_detail.xml
+++ b/health/src/main/res/layout/act_order_detail.xml
@@ -15,14 +15,11 @@
android:id="@+id/llUploadSuccess"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_marginLeft="@dimen/dp_14"
- android:layout_marginTop="@dimen/dp_10"
- android:layout_marginRight="@dimen/dp_14"
- android:layout_marginBottom="@dimen/dp_14"
+ android:layout_margin="@dimen/dp_14"
android:background="@drawable/shape_white_8radius"
android:orientation="vertical"
android:paddingLeft="@dimen/dp_16"
- android:paddingTop="@dimen/dp_23"
+ android:paddingTop="@dimen/dp_20"
android:paddingRight="@dimen/dp_16">
-
diff --git a/health/src/main/res/layout/item_order_list.xml b/health/src/main/res/layout/item_order_list.xml
index d190389..9e105c3 100644
--- a/health/src/main/res/layout/item_order_list.xml
+++ b/health/src/main/res/layout/item_order_list.xml
@@ -9,10 +9,7 @@
android:id="@+id/llUploadSuccess"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_marginLeft="@dimen/dp_14"
- android:layout_marginRight="@dimen/dp_14"
android:orientation="vertical"
- android:paddingTop="@dimen/dp_20"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent">
@@ -20,6 +17,9 @@
@@ -77,7 +77,7 @@
android:layout_marginBottom="@dimen/dp_8"
android:text="交易成功"
android:textColor="@color/col_D9BD"
- android:textSize="@dimen/sp_12"
+ android:textSize="@dimen/sp_13"
android:textStyle="bold"
tools:ignore="HardcodedText" />
@@ -89,18 +89,21 @@
android:layout_height="wrap_content"
tools:text="68.9"
android:textColor="@color/col_c7c"
+ android:textStyle="bold"
android:textSize="@dimen/sp_13" />
+
+
-
+
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 1744c93..043ae70 100644
--- a/mine/src/main/java/com/zj365/mime/act/DevInfoAct.kt
+++ b/mine/src/main/java/com/zj365/mime/act/DevInfoAct.kt
@@ -1,33 +1,47 @@
package com.zj365.mime.act
+import android.Manifest
+import android.content.Intent
+import android.net.Uri
+import android.text.SpannableString
+import android.text.Spanned
+import android.text.TextPaint
+import android.text.style.ClickableSpan
import android.view.View
import android.widget.ImageView
import androidx.core.content.ContextCompat
import com.alibaba.android.arouter.facade.annotation.Route
import com.xty.base.act.BaseVmAct
-import com.xty.common.bracelet.YCBBlueConnectHelper
import com.xty.common.Const
import com.xty.common.MMkvHelper
+import com.xty.common.MyLinkedMovementMethod
import com.xty.common.arouter.ARouterUrl
+import com.xty.common.bracelet.YCBBlueConnectHelper
import com.xty.common.event.BlueToothConnectEvent
import com.xty.common.event.MyInfoEvent
+import com.xty.network.MyRetrofit
+import com.xty.network.model.SettingBean
import com.zj365.mime.R
import com.zj365.mime.databinding.ActDevInfoBinding
import com.zj365.mime.vm.SettingVm
import com.zj365.mime.weight.FactorySettingDialog
-import com.xty.network.MyRetrofit
-import com.xty.network.model.SettingBean
import org.greenrobot.eventbus.EventBus
+import pub.devrel.easypermissions.EasyPermissions
+
/**
* 设备解绑 设备信息
*/
@Route(path = ARouterUrl.DEV_INFO)
-class DevInfoAct : BaseVmAct() {
+class DevInfoAct : BaseVmAct(),EasyPermissions.PermissionCallbacks {
val binding by lazy { ActDevInfoBinding.inflate(layoutInflater) }
override fun setLayout() = binding.root
+ companion object{
+ val perssionCode = 0x0001
+ }
+
var user: SettingBean.User? = null
var userId: String? = null
private val unBindDialog by lazy {
@@ -76,6 +90,32 @@ class DevInfoAct : BaseVmAct() {
userId?.let {
mViewModel.getUserDeviceInfo(userId!!)
}
+
+
+ var txtCol = ContextCompat.getColor(this, R.color.col_02c)
+ binding.tvContactKefu.movementMethod = MyLinkedMovementMethod().getInstance()
+ var span = SpannableString("续期或信号问题请联系客服")
+ span.setSpan(object : ClickableSpan() {
+ override fun onClick(widget: View) {
+
+ if(EasyPermissions.hasPermissions(this@DevInfoAct,Manifest.permission.CALL_PHONE)){
+ startActivity(Intent(Intent.ACTION_CALL, Uri.parse("400 0063 365")))
+
+ }else{
+ EasyPermissions.requestPermissions(this@DevInfoAct,"申请打电话权限",perssionCode,Manifest.permission.CALL_PHONE);
+
+ }
+ }
+
+ override fun updateDrawState(ds: TextPaint) {
+ super.updateDrawState(ds)
+ ds.color = txtCol
+ ds.isUnderlineText = false
+ }
+
+ }, 8, span.length, Spanned.SPAN_INCLUSIVE_INCLUSIVE)
+
+
}
override fun liveObserver() {
@@ -131,4 +171,11 @@ class DevInfoAct : BaseVmAct() {
}
}
+ override fun onPermissionsGranted(requestCode: Int, perms: MutableList) {
+ startActivity(Intent(Intent.ACTION_CALL, Uri.parse("400 0063 365")))
+ }
+
+ override fun onPermissionsDenied(requestCode: Int, perms: MutableList) {
+ }
+
}
\ No newline at end of file
diff --git a/mine/src/main/java/com/zj365/mime/act/SettingNewAct.kt b/mine/src/main/java/com/zj365/mime/act/SettingNewAct.kt
index d7eefd9..c190bc9 100644
--- a/mine/src/main/java/com/zj365/mime/act/SettingNewAct.kt
+++ b/mine/src/main/java/com/zj365/mime/act/SettingNewAct.kt
@@ -11,6 +11,7 @@ import com.xty.common.arouter.ARouterUrl
import com.xty.common.arouter.RouteManager
import com.xty.common.bracelet.YCBBlueConnectHelper
import com.xty.common.event.BlueToothConnectEvent
+import com.xty.common.event.LoginOutEvent
import com.xty.common.work.MyWorkManger
import com.xty.network.MyRetrofit
import com.xty.network.model.SettingBean
@@ -145,8 +146,9 @@ class SettingNewAct: BaseVmAct() {
MMkvHelper.clearUserInfo()//清除用户登录信息
YCBBlueConnectHelper.disconnect()//断开蓝牙连接
YCBBlueConnectHelper.cancelTimer()//断开重连定时器
+ EventBus.getDefault().post(LoginOutEvent())
EventBus.getDefault().post(BlueToothConnectEvent())//刷新蓝牙连接信息
RouteManager.goAct(ARouterUrl.LOGIN_ACT)
- RxActivityTool.finishAllActivity()
+ finish()
}
}
\ No newline at end of file
diff --git a/mine/src/main/java/com/zj365/mime/vm/SettingVm.kt b/mine/src/main/java/com/zj365/mime/vm/SettingVm.kt
index d491456..ce8d255 100644
--- a/mine/src/main/java/com/zj365/mime/vm/SettingVm.kt
+++ b/mine/src/main/java/com/zj365/mime/vm/SettingVm.kt
@@ -9,6 +9,7 @@ import com.xty.network.model.RespBody
import com.xty.network.model.ScoreBean
import com.xty.network.model.SettingBean
import com.xty.network.model.UnReadMessageBean
+import com.xty.network.model.Update
import com.xty.network.model.UserEquipmentInformationizationBean
import org.json.JSONObject
@@ -24,6 +25,8 @@ class SettingVm : BaseVm() {
val deviceInfo by lazy { MutableLiveData>() }
val inviteCountLive by lazy { MutableLiveData>() }
+ val updateLive by lazy { MutableLiveData>() }
+
fun getNesProg(id: String) {
startHttp {
val json = JSONObject()
@@ -135,4 +138,11 @@ class SettingVm : BaseVm() {
response.getCodeStatus(destLive,nowData)
}
}
+
+ fun getVersionNew(versionCode:Int) {
+ startHttp {
+ var response = apiInterface().getVersionNew(versionCode)
+ response.getCodeStatus(updateLive, nowData)
+ }
+ }
}
\ No newline at end of file
diff --git a/mine/src/main/res/layout/act_dev_info.xml b/mine/src/main/res/layout/act_dev_info.xml
index 4807c76..ed874f0 100644
--- a/mine/src/main/res/layout/act_dev_info.xml
+++ b/mine/src/main/res/layout/act_dev_info.xml
@@ -1,5 +1,5 @@
-
@@ -105,4 +106,38 @@
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/network/src/main/java/com/xty/network/ApiInterface.kt b/network/src/main/java/com/xty/network/ApiInterface.kt
index d7a1db9..95b1430 100644
--- a/network/src/main/java/com/xty/network/ApiInterface.kt
+++ b/network/src/main/java/com/xty/network/ApiInterface.kt
@@ -480,8 +480,8 @@ interface ApiInterface {
/**
* 首页轮播图
*/
- @GET("customer/bannerImg/listNew")
- suspend fun getBanners(@Query("userId") id: String?): RespBody>
+ @POST("customer/bannerImg/listNew")
+ suspend fun getBanners(@Body rb: RequestBody): RespBody>
/**
* 打卡首页信息
@@ -901,6 +901,12 @@ interface ApiInterface {
@GET("customer/analyse/coupeNew")
suspend fun getScinceList(): RespBody>
+ /**
+ * 获取首页布局
+ */
+ @POST("customer/layout/list")
+ suspend fun getHomeLayout():RespBody
+
/**
* 关于
*/
diff --git a/network/src/main/java/com/xty/network/model/HomeLayoutBean.kt b/network/src/main/java/com/xty/network/model/HomeLayoutBean.kt
new file mode 100644
index 0000000..672dcae
--- /dev/null
+++ b/network/src/main/java/com/xty/network/model/HomeLayoutBean.kt
@@ -0,0 +1,18 @@
+package com.xty.network.model
+
+data class HomeLayoutBean(
+ val middle:ArrayList,
+ val top:ArrayList
+){
+
+ data class HomeChildBean(
+ var id:Int,
+ var name:String, //名称
+ var imageUrl:String, //图标
+ var type:Int,
+ var jumpType:Int, //1,原生跳转,2,h5跳转,3,小程序跳转
+ var jumpUrl:String?, //跳转地址或编码
+ var status:Int,
+ var seq:String
+ )
+}