From 916d6ad193a66259fbe1f9eb7d0ca6d5ab61ad0c Mon Sep 17 00:00:00 2001 From: wlh <646507849@qq.com> Date: Mon, 18 Dec 2023 18:10:41 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=AD=E5=BB=BA365-=E5=AE=B6=E4=BA=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 16 + .../zj365/dc/activity/CalorieAnalyzeAct.kt | 39 ++ .../zj365/dc/activity/DietManagementAct.kt | 2 + .../java/com/zj365/dc/activity/LoginAct.kt | 40 +- .../com/zj365/dc/activity/MainActivity.kt | 108 ++---- .../zj365/dc/activity/RecognizeResultAct.kt | 48 ++- .../java/com/zj365/dc/activity/WelcomeAct.kt | 16 + .../dc/adapter/HealthMonitoringAdapter.kt | 21 +- .../dc/adapter/RecognizeResultAdapter.kt | 7 +- .../dc/fragment/DynamicManagementFrag.kt | 346 +++++++----------- .../com/zj365/dc/fragment/HealthHomeFrag.kt | 52 +-- .../java/com/zj365/dc/fragment/MineFrag.kt | 110 +++++- .../java/com/zj365/dc/vm/DietManagementVm.kt | 33 ++ .../com/zj365/dc/vm/DynamicManagementVm.kt | 32 +- .../java/com/zj365/dc/weight/PrevDialog.kt | 15 +- .../layout/frag_dynamic_management_header.xml | 98 ++--- base/src/main/res/values/colors.xml | 1 + common/src/main/java/com/xty/common/Const.kt | 3 + .../java/com/xty/common/aMapUtils/AmapInit.kt | 15 +- .../src/main/java/com/xty/common/app/MyApp.kt | 14 +- .../java/com/xty/common/arouter/ARouterUrl.kt | 4 + .../main/res/drawable/shape_r7_3fe_8f6.xml | 7 + .../res/mipmap-xxhdpi/icon_pay_success.png | Bin 0 -> 6486 bytes config.gradle | 6 +- health/src/main/AndroidManifest.xml | 13 + .../java/com/zj365/health/act/AgreeAct.kt | 11 +- .../com/zj365/health/act/HealthFamilyAct.kt | 19 + .../com/zj365/health/act/HealthMainAct.kt | 16 +- .../health/act/HealthSkyHourReportAct.kt | 12 +- .../act/HealthWeekMonthHourReportAct.kt | 12 +- .../act/familyhealth/AddFamilyGuardianAct.kt | 69 ++++ .../act/familyhealth/FamilyHealthAct.kt | 31 ++ .../FamilyHealth/HealthFamilyAdapter.kt | 12 + .../FamilyHealth/HealthFamilyTargetAdapter.kt | 11 + .../HealthFamilyUserAvatorAdapter.kt | 29 ++ .../zj365/health/vm/AddFamilyGuardianVm.kt | 24 ++ .../health/weight/AIIcingPaySuccessDialog.kt | 19 + .../com/zj365/health/weight/DialogTipNew.kt | 49 +++ .../res/layout/act_add_family_guardian.xml | 146 ++++++++ .../src/main/res/layout/act_health_family.xml | 16 + .../res/layout/act_health_sky_hour_report.xml | 1 + .../act_health_week_month_hour_report.xml | 1 + .../src/main/res/layout/dialog_ai_icing.xml | 97 +++++ .../main/res/layout/frag_community_rank.xml | 2 +- .../res/layout/frag_step_community_rank.xml | 2 +- .../main/res/layout/item_health_family.xml | 126 +++++++ .../res/layout/item_health_family_target.xml | 29 ++ .../layout/item_health_family_user_avator.xml | 16 + health/src/main/res/layout/item_rank_list.xml | 2 +- .../main/res/layout/item_step_rank_list.xml | 2 +- .../main/java/com/zj365/mime/act/AboutAct.kt | 18 +- .../com/zj365/mime/act/BaseInfoChangeAct.kt | 7 +- .../java/com/zj365/mime/act/DevInfoAct.kt | 8 +- .../com/zj365/mime/act/MessageDetailAct.kt | 2 +- .../java/com/zj365/mime/act/SettingNewAct.kt | 10 +- mine/src/main/res/layout/act_dev_info.xml | 4 +- .../main/java/com/xty/network/ApiInterface.kt | 17 + .../xty/network/model/FoodRecoginzeInfo.kt | 12 + .../java/com/xty/network/model/MainBean.kt | 17 +- .../java/com/xty/network/model/WeatherBean.kt | 7 + 60 files changed, 1380 insertions(+), 522 deletions(-) create mode 100644 app/src/main/java/com/zj365/dc/vm/DietManagementVm.kt create mode 100644 common/src/main/res/drawable/shape_r7_3fe_8f6.xml create mode 100644 common/src/main/res/mipmap-xxhdpi/icon_pay_success.png create mode 100644 health/src/main/java/com/zj365/health/act/HealthFamilyAct.kt create mode 100644 health/src/main/java/com/zj365/health/act/familyhealth/AddFamilyGuardianAct.kt create mode 100644 health/src/main/java/com/zj365/health/act/familyhealth/FamilyHealthAct.kt create mode 100644 health/src/main/java/com/zj365/health/adapter/FamilyHealth/HealthFamilyAdapter.kt create mode 100644 health/src/main/java/com/zj365/health/adapter/FamilyHealth/HealthFamilyTargetAdapter.kt create mode 100644 health/src/main/java/com/zj365/health/adapter/FamilyHealth/HealthFamilyUserAvatorAdapter.kt create mode 100644 health/src/main/java/com/zj365/health/vm/AddFamilyGuardianVm.kt create mode 100644 health/src/main/java/com/zj365/health/weight/AIIcingPaySuccessDialog.kt create mode 100644 health/src/main/java/com/zj365/health/weight/DialogTipNew.kt create mode 100644 health/src/main/res/layout/act_add_family_guardian.xml create mode 100644 health/src/main/res/layout/act_health_family.xml create mode 100644 health/src/main/res/layout/dialog_ai_icing.xml create mode 100644 health/src/main/res/layout/item_health_family.xml create mode 100644 health/src/main/res/layout/item_health_family_target.xml create mode 100644 health/src/main/res/layout/item_health_family_user_avator.xml create mode 100644 network/src/main/java/com/xty/network/model/FoodRecoginzeInfo.kt create mode 100644 network/src/main/java/com/xty/network/model/WeatherBean.kt diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2e1925b..91ab262 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -383,6 +383,22 @@ android:taskAffinity="com.xty.healthuser" android:theme="@style/Theme.AppCompat.NoActionBar.Transparent" /> + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/zj365/dc/activity/CalorieAnalyzeAct.kt b/app/src/main/java/com/zj365/dc/activity/CalorieAnalyzeAct.kt index 6565082..6673fe3 100644 --- a/app/src/main/java/com/zj365/dc/activity/CalorieAnalyzeAct.kt +++ b/app/src/main/java/com/zj365/dc/activity/CalorieAnalyzeAct.kt @@ -1,15 +1,20 @@ package com.zj365.dc.activity +import android.content.Intent import android.view.LayoutInflater import android.widget.TextView import com.alibaba.android.arouter.facade.annotation.Route import com.google.android.material.bottomsheet.BottomSheetDialog +import com.luck.picture.lib.PictureSelector +import com.luck.picture.lib.config.PictureConfig import com.luck.picture.lib.config.PictureMimeType import com.xty.base.act.BaseVmAct import com.xty.base.vm.BaseVm import com.xty.common.arouter.ARouterUrl +import com.xty.common.arouter.RouteManager import com.xty.common.picture.PictureUtils import com.zj365.dc.databinding.ActCalorieAnalyzeBinding +import com.zj365.dc.vm.DietManagementVm import com.zj365.health.R @Route(path = ARouterUrl.CALORIE_ANALYZE) @@ -17,6 +22,11 @@ class CalorieAnalyzeAct : BaseVmAct() { val binding by lazy { ActCalorieAnalyzeBinding.inflate(layoutInflater) } + var type:String = "1"//类型 1-菜品 2-果蔬 3-零食 + + var fileUrl:String? = null //当前选择的文件的路径 + + var bottomSheetDialog: BottomSheetDialog? = null override fun liveObserver() { @@ -38,14 +48,17 @@ class CalorieAnalyzeAct : BaseVmAct() { binding.tvDishes.setOnClickListener { bottomSheetDialog?.show() + type = "1" } binding.tvFruitVegetable.setOnClickListener { bottomSheetDialog?.show() + type = "2" } binding.tvSnack.setOnClickListener { bottomSheetDialog?.show() + type = "3" } @@ -83,4 +96,30 @@ class CalorieAnalyzeAct : BaseVmAct() { } } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + + if (resultCode === RESULT_OK) { + when (requestCode) { + PictureConfig.CHOOSE_REQUEST -> { + var result = PictureSelector.obtainMultipleResult(data) + if (result.size > 0) { + if (result.isNotEmpty()) { + fileUrl = result[0].compressPath + + fileUrl?.let { + bundle.clear() + bundle.putString("type",type) + bundle.putString("fileUrl",fileUrl) + RouteManager.goAct(ARouterUrl.RECOGNIZE_RESULT,bundle) + } + + } + } + } + + } + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/zj365/dc/activity/DietManagementAct.kt b/app/src/main/java/com/zj365/dc/activity/DietManagementAct.kt index bae5f61..679b87d 100644 --- a/app/src/main/java/com/zj365/dc/activity/DietManagementAct.kt +++ b/app/src/main/java/com/zj365/dc/activity/DietManagementAct.kt @@ -13,6 +13,8 @@ import com.zj365.dc.databinding.ActDietManagementBinding class DietManagementAct : BaseVmAct(){ val binding by lazy{ ActDietManagementBinding.inflate(layoutInflater)} + + override fun liveObserver() { } 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 af5126c..7118e11 100644 --- a/app/src/main/java/com/zj365/dc/activity/LoginAct.kt +++ b/app/src/main/java/com/zj365/dc/activity/LoginAct.kt @@ -5,7 +5,6 @@ import android.text.* import android.text.method.HideReturnsTransformationMethod import android.text.method.PasswordTransformationMethod import android.text.style.ClickableSpan -import android.util.Log import android.view.View import android.widget.EditText import androidx.core.content.ContextCompat @@ -14,8 +13,6 @@ import com.alibaba.android.arouter.facade.annotation.Route import com.androidkun.xtablayout.XTabLayout import com.tamsiree.rxkit.RxKeyboardTool import com.tamsiree.rxkit.RxRegTool -import com.tencent.qcloud.tuicore.TUILogin -import com.tencent.qcloud.tuicore.interfaces.TUICallback import com.xty.base.act.BaseVmAct import com.xty.base.dialog.AppUpdateDialog import com.xty.common.* @@ -27,6 +24,8 @@ 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 com.zj365.health.weight.DialogTip +import com.zj365.health.weight.DialogTipNew import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode @@ -44,6 +43,17 @@ class LoginAct : BaseVmAct() { var wxBean: WxInfoBean? = null var tabName = arrayOf("账号密码","验证码") + + + val dialogBind by lazy { + + DialogTipNew(this, "恭喜您成为中健三六五大家庭的医院,为了提供更好的信息服务,请完善您的基本信息。", "前往","取消",false,{ + RouteManager.goAct(ARouterUrl.BASE_INFO_CHANGE) + }){ + EventBus.getDefault().post(LoginOrRegisterEvent()) + finish() + } + } val dialog by lazy { AppUpdateDialog(this){ if (it){ @@ -143,7 +153,7 @@ class LoginAct : BaseVmAct() { var span = SpannableString(getString(R.string.private_info)) span.setSpan(object : ClickableSpan() { override fun onClick(widget: View) { - bundle.clear() + /* bundle.clear() bundle.putString("title", "用户协议") bundle.putInt("type", Const.AGREEMENT_1) RouteManager.goActRequest( @@ -151,7 +161,12 @@ class LoginAct : BaseVmAct() { this@LoginAct, USER_AGREEMENT, bundle - ) + )*/ + + bundle.clear() + bundle.putString("title", "用户协议") + bundle.putString("url", "https://dc.zhongjian365.com/agreement.html") + RouteManager.goAct(ARouterUrl.AGREEMNT_READ_WEB_ACT, bundle) } override fun updateDrawState(ds: TextPaint) { @@ -164,7 +179,7 @@ class LoginAct : BaseVmAct() { override fun onClick(widget: View) { bundle.clear() bundle.putString("title", "隐私政策") - bundle.putString("url", "https://auprty.com/app/static/app/privacy.html") + bundle.putString("url", "https://dc.zhongjian365.com/privacy.html") RouteManager.goAct(ARouterUrl.AGREEMNT_READ_WEB_ACT, bundle) } @@ -265,11 +280,16 @@ class LoginAct : BaseVmAct() { override fun liveObserver() { mViewModel.mLogin.observe(this) { loadingView.dismiss() + if (it.data.isPerfect == 0){ + dialogBind.show() + }else{ + EventBus.getDefault().post(LoginOrRegisterEvent()) + finish() + } // initTab() // mViewModel.getImUserSig("user_${it.data.id}") // RouteManager.goAct(ARouterUrl.MAIN_ACT) - EventBus.getDefault().post(LoginOrRegisterEvent()) - finish() + } // mViewModel.loginWx.observe(this) { // loadingView.dismiss() @@ -281,7 +301,7 @@ class LoginAct : BaseVmAct() { initTab() mViewModel.getImUserSig("user_${it}") }*/ - mViewModel.getImUserSig.observe(this) { + /* mViewModel.getImUserSig.observe(this) { Log.e("simon", "login"+it.data) TUILogin.login( applicationContext, @@ -300,7 +320,7 @@ class LoginAct : BaseVmAct() { } }) - } + }*/ mViewModel.codeLive.observe(this) { timeStart() diff --git a/app/src/main/java/com/zj365/dc/activity/MainActivity.kt b/app/src/main/java/com/zj365/dc/activity/MainActivity.kt index 0f6ab0b..8f208c5 100644 --- a/app/src/main/java/com/zj365/dc/activity/MainActivity.kt +++ b/app/src/main/java/com/zj365/dc/activity/MainActivity.kt @@ -1,9 +1,11 @@ package com.zj365.dc.activity +import android.Manifest import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.content.IntentFilter +import android.net.Uri import android.os.Build import android.util.Log import android.view.LayoutInflater @@ -17,6 +19,8 @@ import androidx.localbroadcastmanager.content.LocalBroadcastManager import cn.jpush.android.api.JPushInterface import com.alibaba.android.arouter.facade.annotation.Route import com.alibaba.fastjson.JSON +import com.amap.api.location.AMapLocationClient +import com.amap.api.location.AMapLocationClientOption import com.google.android.material.bottomnavigation.BottomNavigationItemView import com.google.android.material.bottomnavigation.BottomNavigationMenuView import com.lifesense.android.ble.core.serializer.AbstractMeasureData @@ -24,17 +28,20 @@ import com.lifesense.android.ble.device.fatscale.model.WeightMeasureData import com.tamsiree.rxkit.RxActivityTool import com.tamsiree.rxkit.RxSPTool import com.tencent.qcloud.tuicore.TUIConstants +import com.tencent.qcloud.tuikit.tuichat.util.PermissionHelper import com.xty.base.act.BaseVmAct import com.xty.base.dialog.AppUpdateDialog import com.xty.base.vp2.VpAdapter import com.xty.common.Const import com.xty.common.MMkvHelper +import com.xty.common.aMapUtils.AmapInit import com.xty.common.arouter.ARouterUrl import com.xty.common.arouter.RouteManager import com.xty.common.bracelet.checkBlueConnectPermission import com.xty.common.event.MeasureWeightEvent import com.xty.common.event.MqttReceive import com.xty.common.util.CommonToastUtils +import com.xty.common.util.ViewScreenshotUtils import com.zj365.dc.BuildConfig import com.zj365.dc.R import com.zj365.dc.databinding.ActivityMainBinding @@ -45,16 +52,18 @@ import com.zj365.dc.fragment.MineFrag import com.zj365.dc.vm.MainVm import com.zj365.health.act.binddevice.BaseDeviceBindListAct import com.zj365.health.act.binddevice.BlueUtil +import com.zj365.mime.act.DevInfoAct import io.reactivex.functions.Consumer import kotlinx.coroutines.delay import kotlinx.coroutines.launch import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode +import pub.devrel.easypermissions.EasyPermissions import java.util.Date @Route(path = ARouterUrl.MAIN_ACT) -class MainActivity : BaseVmAct(), Consumer { +class MainActivity : BaseVmAct(), Consumer { private val binding by lazy { ActivityMainBinding.inflate(layoutInflater) } override fun setLayout(): View = binding.root @@ -67,6 +76,9 @@ class MainActivity : BaseVmAct(), Consumer { private var unreadCountReceiver: BroadcastReceiver? = null private var badegView: View? = null + private var mLocationClient: AMapLocationClient? = null + private var mLocationOption: AMapLocationClientOption? = null + private val dialog by lazy { AppUpdateDialog(this) { if (it) { @@ -100,17 +112,7 @@ class MainActivity : BaseVmAct(), Consumer { HealthHomeFrag(), // Fragment(), DynamicManagementFrag(), - MessageFragment() - /*TUIConversationFragment( - if (RxSPTool.getString(this, Const.UnReadSysMessageContentKey) - .isNullOrEmpty() - ) "用户预约提醒,新增用户提醒" - else RxSPTool.getString(this, Const.UnReadSysMessageContentKey), - if (RxSPTool.getString(this, Const.UnReadSysMessageTimeKey) - .isNullOrEmpty() - ) Date().time.toString() - else RxSPTool.getString(this, Const.UnReadSysMessageTimeKey) - )*/, + MessageFragment(), MineFrag() ) } @@ -123,23 +125,8 @@ class MainActivity : BaseVmAct(), Consumer { initBottomNav() addNv() // mViewModel.getVersionNew() -/* val loginStatus = V2TIMManager.getInstance().loginStatus - Log.e("yansu", "loginStatus ${loginStatus}") - if (loginStatus != V2TIMManager.V2TIM_STATUS_LOGINED) { - Log.e("yansu", "请求 ${MMkvHelper.getString(Const.USER_ID)}") - mViewModel.getImUserSig("user_" + MMkvHelper.getLong(Const.USER_ID)) - }*/ initUnreadCountReceiver() JPushInterface.setBadgeNumber(this, 0) -// //前台空服务 -// val service = RouteManager.getAny(ARouterUrl.NONE_SERVICE) as Service -// intent.setClass(this,service::class.java) -// -// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){ -// startForegroundService(intent) -// } else{ -// startService(intent) -// } //请求用户设备信息 val userId = if (MMkvHelper.getLong(Const.USER_ID).toString() == "0") { @@ -148,25 +135,20 @@ class MainActivity : BaseVmAct(), Consumer { MMkvHelper.getLong(Const.USER_ID).toString() } mViewModel.getUserEquipmentInformationizationRequest(userId) - mViewModel.getBindList(BaseDeviceBindListAct.DeviceType.BODYFAT.type) - } - - - fun getUnReadMessage() { - mViewModel.getNotReadCount() + // mViewModel.getBindList(BaseDeviceBindListAct.DeviceType.BODYFAT.type) } - private fun initBleSDK() { + /* private fun initBleSDK() { BlueUtil.getBlueManage().setDebug(BuildConfig.isRelease) BlueUtil.getBlueManage() .init( this, - "lx1f367d71ff67ca73", - "a713f5e2fa03ec19476a3ac96287c4645986c4c6", + "", + "", null, this ) - } + }*/ fun initVp2() { binding.mVp2.adapter = VpAdapter(listFragment, this) @@ -221,48 +203,10 @@ class MainActivity : BaseVmAct(), Consumer { override fun onResume() { super.onResume() -// getUnReadMessage() } override fun onNewIntent(intent: Intent?) { super.onNewIntent(intent) -// isonNewIntent = true; - handleOfflinePush(intent) - } - - private fun handleOfflinePush(intent: Intent?) { - if (intent == null) { - Log.d("MainActivity", "handleOfflinePush intent is null") - return - } -// if (OfflinePushConfigs.getOfflinePushConfigs().clickNotificationCallbackMode === OfflinePushConfigs.CLICK_NOTIFICATION_CALLBACK_INTENT -// ) { - Log.d( - "MainActivity", - "OfflinePushConfigs.getOfflinePushConfigs().clickNotificationCallbackMode" - ) -/* TUIUtils.handleOfflinePush( - intent - ) { hasLogged -> - if (hasLogged) { - setIntent(null) - } else { -// finish() - } - }*/ -// } else { -// val ext = intent.getStringExtra(TUIConstants.TUIOfflinePush.NOTIFICATION_EXT_KEY) -// TUIUtils.handleOfflinePush(ext -// ) { hasLogged -> -// if (hasLogged) { -// setIntent(null) -// } else { -// Log.d("MainActivity", "finish()") -// finish() -// -// } -// } -// } } public fun setCurrentTab(position: Int) { @@ -292,13 +236,13 @@ class MainActivity : BaseVmAct(), Consumer { override fun liveObserver() { mViewModel.saveSuccess.observe(this) { } - mViewModel.boundDevices.observe(this) { +/* mViewModel.boundDevices.observe(this) { if (it.code != 0) return@observe val data = it.data if (data.isNotEmpty()) { if (checkBlueConnectPermission(this)) { //体脂秤sdk初始化 - initBleSDK() + // initBleSDK() if (BlueUtil.getBlueManage().isInitialized) { it.data.forEach { bleData -> BlueUtil.getBlueManage().addBondedMac(bleData.mac) @@ -307,7 +251,7 @@ class MainActivity : BaseVmAct(), Consumer { } } } - } + }*/ mViewModel.updateLive.observe(this) { if (!it.data.url.isNullOrEmpty()) { @@ -332,7 +276,7 @@ class MainActivity : BaseVmAct(), Consumer { Log.e("simon", it.data) TUILogin.login( applicationContext, - 1400807230, + , it.paramsData, it.data, object : TUICallback() { @@ -433,8 +377,12 @@ class MainActivity : BaseVmAct(), Consumer { } } + + override fun onDestroy() { super.onDestroy() - BlueUtil.getBlueManage().releaseResource() + AmapInit.stopLocation() + // BlueUtil.getBlueManage().releaseResource() } + } \ No newline at end of file diff --git a/app/src/main/java/com/zj365/dc/activity/RecognizeResultAct.kt b/app/src/main/java/com/zj365/dc/activity/RecognizeResultAct.kt index ea649d6..b82db22 100644 --- a/app/src/main/java/com/zj365/dc/activity/RecognizeResultAct.kt +++ b/app/src/main/java/com/zj365/dc/activity/RecognizeResultAct.kt @@ -1,5 +1,6 @@ package com.zj365.dc.activity +import android.content.Intent import android.view.LayoutInflater import android.view.View import android.widget.ImageView @@ -8,32 +9,50 @@ import android.widget.TextView import androidx.recyclerview.widget.LinearLayoutManager import com.alibaba.android.arouter.facade.annotation.Route import com.google.android.material.bottomsheet.BottomSheetDialog +import com.luck.picture.lib.PictureSelector +import com.luck.picture.lib.config.PictureConfig import com.luck.picture.lib.config.PictureMimeType import com.xty.base.act.BaseVmAct import com.xty.base.vm.BaseVm import com.xty.common.arouter.ARouterUrl +import com.xty.common.arouter.RouteManager import com.xty.common.picture.PictureUtils import com.xty.common.util.SpannableUtils +import com.xty.network.model.FoodRecoginzeInfo import com.zj365.dc.adapter.RecognizeResultAdapter import com.zj365.dc.databinding.ActRecognizeResultBinding +import com.zj365.dc.vm.DietManagementVm import com.zj365.health.R @Route(path = ARouterUrl.RECOGNIZE_RESULT) -class RecognizeResultAct : BaseVmAct() { +class RecognizeResultAct : BaseVmAct() { val binding by lazy{ ActRecognizeResultBinding.inflate(layoutInflater)} val adapter by lazy { RecognizeResultAdapter() } var bottomSheetDialog: BottomSheetDialog? = null - override fun liveObserver() { + var type:String? = null + var fileUrl :String? = null + override fun liveObserver() { + mViewModel.foodRecoginzeInfoLiveData.observe(this){ + adapter.setNewInstance(it.data) + } } override fun initView() { super.initView() statusBar(binding.title.mView) binding.title.mTvTitle.text = "识别结果" + + type = intent.getStringExtra("type") + fileUrl = intent.getStringExtra("fileUrl") + + fileUrl?.let { + mViewModel.submit(type!!,it) + } + binding.title.mIvBack.setOnClickListener { finish() } @@ -53,7 +72,7 @@ class RecognizeResultAct : BaseVmAct() { binding.recycler.layoutManager = LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,false) binding.recycler.adapter = adapter adapter.setOnItemChildClickListener { adapter, view, position -> - + val foodBean = adapter.getItem(position) as FoodRecoginzeInfo } } @@ -92,4 +111,27 @@ class RecognizeResultAct : BaseVmAct() { } } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + + if (resultCode === RESULT_OK) { + when (requestCode) { + PictureConfig.CHOOSE_REQUEST -> { + var result = PictureSelector.obtainMultipleResult(data) + if (result.size > 0) { + if (result.isNotEmpty()) { + fileUrl = result[0].compressPath + + fileUrl?.let { + mViewModel.submit(type!!,it) + } + + } + } + } + + } + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/zj365/dc/activity/WelcomeAct.kt b/app/src/main/java/com/zj365/dc/activity/WelcomeAct.kt index 0e1e7d5..099642d 100644 --- a/app/src/main/java/com/zj365/dc/activity/WelcomeAct.kt +++ b/app/src/main/java/com/zj365/dc/activity/WelcomeAct.kt @@ -2,6 +2,7 @@ package com.zj365.dc.activity import android.annotation.SuppressLint import android.graphics.Bitmap +import android.util.Log import android.view.View import android.view.ViewGroup import androidx.lifecycle.MutableLiveData @@ -206,12 +207,27 @@ class WelcomeAct : BaseVmAct() { private fun initUMeng() { UMConfigure.submitPolicyGrantResult(MyApp.instance, true) + UMConfigure.init( + MyApp.instance, + com.xty.common.BuildConfig.umengKey, + com.xty.common.BuildConfig.umengChannelName, + UMConfigure.DEVICE_TYPE_PHONE, + "" + ) } private fun initPush() { JPushInterface.setDebugMode(!BuildConfig.isRelease) JPushInterface.init(MyApp.instance) //根据用户的设置开启或关闭消息通知 + val registrationID = JPushInterface.getRegistrationID(this) + LogUtils.d("terry", "registrationID:$registrationID") + val userId = if (MMkvHelper.getLong(Const.USER_ID).toString() == "0") "" + else MMkvHelper.getLong(Const.USER_ID).toString() + if (!userId.isNullOrEmpty()){ + Log.i("terry", "useId:$userId") + JPushInterface.setAlias(this,userId.toInt(),"user_release_${userId}") + } JPushHelper(this).stopOrResumeJPush(MMkvHelper.getBoolean(Const.NOTICE_FLAG)) } diff --git a/app/src/main/java/com/zj365/dc/adapter/HealthMonitoringAdapter.kt b/app/src/main/java/com/zj365/dc/adapter/HealthMonitoringAdapter.kt index 6907764..f722aad 100644 --- a/app/src/main/java/com/zj365/dc/adapter/HealthMonitoringAdapter.kt +++ b/app/src/main/java/com/zj365/dc/adapter/HealthMonitoringAdapter.kt @@ -144,14 +144,25 @@ class HealthMonitoringAdapter( calorieStr.length - 3 )*/ } else { - if (TextUtils.isEmpty(calorie)){ - val calorieStr = "监测:--次" - mTvCalorie.text = calorieStr + if ( + healthMonitoringListBean.buttonContent == "建模中" || + healthMonitoringListBean.buttonContent == "未开通" || + healthMonitoringListBean.buttonContent == "续费" || + healthMonitoringListBean.buttonContent == "敬请期待" + ){ + mTvCalorie.visibility = View.GONE }else{ - val calorieStr = "监测:${calorie}次" - mTvCalorie.text = calorieStr + mTvCalorie.visibility = View.VISIBLE + if (TextUtils.isEmpty(calorie)){ + val calorieStr = "监测:--次" + mTvCalorie.text = calorieStr + }else{ + val calorieStr = "监测:${calorie}次" + mTvCalorie.text = calorieStr + } } + } mHealthTime.text = if (TextUtils.isEmpty(healthMonitoringListBean.buttonTime)) { diff --git a/app/src/main/java/com/zj365/dc/adapter/RecognizeResultAdapter.kt b/app/src/main/java/com/zj365/dc/adapter/RecognizeResultAdapter.kt index ab3135c..4d0971a 100644 --- a/app/src/main/java/com/zj365/dc/adapter/RecognizeResultAdapter.kt +++ b/app/src/main/java/com/zj365/dc/adapter/RecognizeResultAdapter.kt @@ -2,11 +2,14 @@ package com.zj365.dc.adapter import com.chad.library.adapter.base.viewholder.BaseViewHolder import com.xty.base.adapter.BaseAdapter +import com.xty.network.model.FoodRecoginzeInfo import com.xty.network.model.HomeLayoutBean import com.zj365.dc.R -class RecognizeResultAdapter : BaseAdapter(R.layout.item_recognize_result){ - override fun convert(holder: BaseViewHolder, item: HomeLayoutBean.HomeChildBean) { +class RecognizeResultAdapter : BaseAdapter(R.layout.item_recognize_result){ + override fun convert(holder: BaseViewHolder, item: FoodRecoginzeInfo) { + + } 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 35656c0..321a603 100644 --- a/app/src/main/java/com/zj365/dc/fragment/DynamicManagementFrag.kt +++ b/app/src/main/java/com/zj365/dc/fragment/DynamicManagementFrag.kt @@ -1,5 +1,6 @@ package com.zj365.dc.fragment +import android.Manifest import android.annotation.SuppressLint import android.content.Intent import android.graphics.Color @@ -25,6 +26,7 @@ import com.xty.common.Const import com.xty.common.LogUtils import com.xty.common.MMkvHelper import com.xty.common.UmengEventId +import com.xty.common.aMapUtils.AmapInit import com.xty.common.app.MyApp import com.xty.common.arouter.ARouterUrl import com.xty.common.arouter.RouteManager @@ -53,6 +55,7 @@ import com.zj365.mime.weight.NoticeSettingDialog import com.xty.network.MyRetrofit import com.xty.network.model.FamilyBean import com.xty.network.model.HealthMonitoringListBean +import com.xty.network.model.MainBean import com.xty.network.model.MessageBean import com.xty.network.model.ReportBean import com.zj365.dc.BuildConfig @@ -74,6 +77,7 @@ import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode import org.json.JSONArray import org.json.JSONObject +import pub.devrel.easypermissions.EasyPermissions import java.text.SimpleDateFormat import java.util.regex.Matcher import java.util.regex.Pattern @@ -83,7 +87,7 @@ import kotlin.math.min /** * 动态管理页面 */ -class DynamicManagementFrag : BaseVmFrag() { +class DynamicManagementFrag : BaseVmFrag() , EasyPermissions.PermissionCallbacks{ val binding by lazy { FragDynamicManagementBinding.inflate(layoutInflater) } override fun setLayout(): View = binding.root @@ -148,10 +152,10 @@ class DynamicManagementFrag : BaseVmFrag() { * 0.心率、1.血氧、2.呼吸率、3.体温、4.步数、5.睡眠、6.血压、7.血糖、8.心电、9.尿酸、10.血脂。 */ private val pageIndexs = arrayOf( - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9/*, 10*/ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ) private val pageNames = arrayOf( - "心率", "血氧", "呼吸率", "体温", "步数", "睡眠", "血压", "血糖", "心电", "尿酸"/*, "血脂"*/ + "心率", "血氧", "呼吸率", "体温", "步数", "睡眠", "血压", "血糖", "心电", "尿酸", "血脂" ) @SuppressLint("ResourceType") @@ -172,8 +176,6 @@ class DynamicManagementFrag : BaseVmFrag() { //刷新注册 refresh() - updateWarningStatus() - binding.mGriddingList.mGridView.adapter = mHealthAdapter binding.mGriddingList.mGridView.setOnItemClickListener { _, _, position, _ -> val index = mHealthAdapter.getItem(position).type @@ -206,10 +208,16 @@ class DynamicManagementFrag : BaseVmFrag() { 5 -> { val deviceType = MMkvHelper.getString(Const.DEVICE_TYPE) - if (deviceType == "U32" || deviceType == "A3") { + /*if (deviceType == "U32" || deviceType == "A3") { goPage(index - 1) } else { + + }*/ + + if (deviceType == "X1" || deviceType == "X2") { goPage(index - 2) + } else { + goPage(index - 1) } } @@ -222,7 +230,7 @@ class DynamicManagementFrag : BaseVmFrag() { } } - 9 -> { + 9 -> { //心电隐藏的前提下,尿酸为8 否则为9 val deviceType = MMkvHelper.getString(Const.DEVICE_TYPE) if (deviceType == "X1" || deviceType == "X2") { goPage(6) @@ -255,8 +263,10 @@ class DynamicManagementFrag : BaseVmFrag() { } } - 10 -> { //血脂 - when (MMkvHelper.getString(Const.DEVICE_TYPE)) { + 10 -> { // //心电隐藏的前提下血脂为9 否则为10 + + CommonToastUtils.showToast("尊敬的用户您好,血脂功能暂未开放,敬请期待哦~") + /*when (MMkvHelper.getString(Const.DEVICE_TYPE)) { "X1", "X2" -> { goPage(7) } @@ -269,11 +279,11 @@ class DynamicManagementFrag : BaseVmFrag() { else -> { goPage(7) } - } + }*/ } - 8 -> {//心电 + /*8 -> {//心电 暂时隐藏 尿酸就改成8 // if (MMkvHelper.getInt(Const.Watch_Device_Type) == -1) { //演示模式 // showToast("尊敬的用户您好,心电功能暂未开放,敬请期待哦~") // } else @@ -289,7 +299,7 @@ class DynamicManagementFrag : BaseVmFrag() { // RouteManager.goAct(ARouterUrl.XD_HISTORY, bundle) // } } - } + }*/ } } } @@ -338,7 +348,6 @@ class DynamicManagementFrag : BaseVmFrag() { private fun setOnClickListener() { binding.mMsgLayout.setOnClickListener(onClickListener) binding.mMsg.setOnClickListener(onClickListener) - binding.mHeader.mWearManager.setOnClickListener(onClickListener) binding.mHeader.mCard.setOnClickListener(onClickListener) binding.mHeader.mBtnBind.setOnClickListener(onClickListener) binding.mGriddingList.mSub.setOnClickListener(onClickListener) @@ -361,8 +370,8 @@ class DynamicManagementFrag : BaseVmFrag() { RouteManager.goAct(ARouterUrl.WARNING_MSG) } //设备连接 - R.id.mWearManager -> { - val btnStr = binding.mHeader.mWearManager.text + R.id.mHealthRecords -> { + /*val btnStr = binding.mHeader.mWearManager.text if (btnStr == "佩戴管理") { if (MMkvHelper.getInt(Const.Watch_Device_Type) == Const.Companion.WatchDevice.LightA3.ordinal) {//4G手表 RouteManager.goAct(ARouterUrl.WEAR_MANAGER) @@ -380,7 +389,7 @@ class DynamicManagementFrag : BaseVmFrag() { } } else { RouteManager.goAct(ARouterUrl.DEVICE_CHOICE) - } + }*/ } //评估 R.id.mCard -> { @@ -606,6 +615,20 @@ class DynamicManagementFrag : BaseVmFrag() { mViewModel.getMySetting() mViewModel.getTips() mViewModel.getRank(2) + if(EasyPermissions.hasPermissions(requireContext(), Manifest.permission.ACCESS_COARSE_LOCATION, + Manifest.permission.ACCESS_FINE_LOCATION)) { + AmapInit.startLocation(requireContext()) { + MMkvHelper.put(Const.LONGITUDE,it.longitude) + MMkvHelper.put(Const.LATITUDE,it.latitude) + mViewModel.getWeather() + + } + }else{ + EasyPermissions.requestPermissions(this,"申请定位权限", + 0x00022, + Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION); + } + } /** @@ -750,6 +773,47 @@ class DynamicManagementFrag : BaseVmFrag() { } } + /** + * 设置天气信息 + */ + private fun setWeatherInfo(weather: MainBean.Weather?) { + if (null == weather) { + binding.mHeader.tvWeather.visibility = View.GONE + } else { + weather.apply { + if (weatherNo.isNullOrEmpty()) { + binding.mHeader.tvWeather.visibility = View.GONE + return + } + + var icon = when (weatherNo) { + "32" -> {//晴天 + "晴天" + } + "44" -> {//多云 + "多云" + } + "20" -> {//阴天 + "阴天" + } + "12" -> {//雨天 + "雨天" + } + "45" -> {//雷阵雨 + "雷阵雨" + } + "16" -> {//雪 + "雪" + } + else -> { + "晴天" + } + } + binding.mHeader.tvWeather.text = "${icon} ${weatherInfo}" + } + } + } + /** * 获取所有信息 */ @@ -814,6 +878,15 @@ class DynamicManagementFrag : BaseVmFrag() { } } + mViewModel.weatherLiveDate.observe(this){ + if(it.data == null){ + binding.mHeader.tvWeather.visibility = View.GONE + + }else{ + binding.mHeader.tvWeather.text = "${it.data.text} ${it.data.temp}℃" + } + } + //获取首页所有信息返回 mViewModel.allData.observe(this) { it.data.let { bean -> @@ -824,60 +897,36 @@ class DynamicManagementFrag : BaseVmFrag() { (requireActivity() as MainActivity).isDemonstrate = isDemonstrate if (isDemonstrate) { binding.mHeader.mWearInfo.visibility = View.INVISIBLE - binding.mHeader.mWatchType.visibility = View.INVISIBLE } else { - binding.mHeader.mWatchType.visibility = View.GONE binding.mHeader.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.isNotEmpty()) { //自己 -//// 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) + binding.mHeader.tvNowTime.text = bean.nowDay + binding.mHeader.tvLanuDate.text = bean.chinaDay + // setWeatherInfo(bean.weather) + + binding.mHeader.mBMI.text = "BMI ${bean.bmiInfo.bmi}" + binding.mHeader.mBMIStatus.text = "${bean.bmiInfo.levelName}" + + binding.mHeader.tvWarningNum.text ="预警次数:${if (bean.warningCount == 0) "--" else bean.warningCount}次" + binding.mHeader.tvMonitorNum.text ="监测次数:${if (bean.healthCount == 0) "--" else bean.healthCount}次" + + /*if (bean.watchType == -1) { //没有绑定设备 + - if (bean.watchType == -1) { //没有绑定设备 - binding.mHeader.mBindState.apply { - text = "未绑定" - val drawable = getDrawable(R.mipmap.ic_unbind) - drawable.setBounds(0, 0, drawable.minimumWidth, drawable.minimumHeight) - setCompoundDrawables(drawable, null, null, null) - visibility = View.VISIBLE - } - binding.mHeader.mWearManager.text = "绑定手表" - binding.mHeader.mBindState.visibility = View.GONE - binding.mHeader.mConnectStatu.visibility = View.GONE - binding.mHeader.mWatchType.visibility = View.GONE } else if (Const.Companion.WatchDevice.LightA3.ordinal == bean.watchType) {//如果是4G设备,设置连接状态与电量信息 - setDeviceInfo( - DeviceInfoBean( - true, - YCBBlueConnectHelper.BLEConnectState.Connected, - if (Const.battery.isEmpty()) "" else "电量${Const.battery}%" - ) - ) - } else { + + } else {*/ if (showIdInfo.isEmpty()) { //自己 val localBlueMac = MMkvHelper.getString(Const.Blue_Tooth) if (YCBBlueConnectHelper.getBleNowStatus() == YCBBlueConnectHelper.BLEConnectState.DisConnect) {//如果本地有蓝牙信息且属于未连接状态,则直接连接 @@ -892,9 +941,9 @@ class DynamicManagementFrag : BaseVmFrag() { getConnectStatus() } } else { - setDeviceInfo(null) + } - } + // } get24HourReportInfo(showIdInfo)// 这里调用一次接口,防止首次进入App不会刷新评估状态 @@ -948,6 +997,8 @@ class DynamicManagementFrag : BaseVmFrag() { } } + + //24小时健康报告返回信息 mViewModel.infoLive.observe(this) { if (null == it.data) { @@ -1037,7 +1088,6 @@ class DynamicManagementFrag : BaseVmFrag() { // binding.mContent.visibility = View.VISIBLE binding.mHeader.mLayoutResult.visibility = View.GONE binding.mHeader.mBtnBind.visibility = View.VISIBLE - setDeviceInfo(DeviceInfoBean(false)) // if (!(activity as MainActivity).isDialogShow) { // dialogBind.show() // } @@ -1068,13 +1118,7 @@ class DynamicManagementFrag : BaseVmFrag() { } if (Const.Companion.WatchDevice.LightA3.ordinal == Const.watchType) {//如果是4G设备,设置连接状态与电量信息 - setDeviceInfo( - DeviceInfoBean( - true, - YCBBlueConnectHelper.BLEConnectState.Connected, - if (Const.battery.isEmpty()) "" else "电量${Const.battery}%" - ) - ) + get24HourReportInfo(showIdInfo)// 这里调用一次接口,防止首次进入App不会刷新评估状态 } @@ -1130,13 +1174,6 @@ class DynamicManagementFrag : BaseVmFrag() { mainScope.launch { LogUtils.d("getDeviceInfo isOk:$isok;;; value=$value") if (isok) {//获取到设备信息,设备准备就绪上传手表数据 - setDeviceInfo( - DeviceInfoBean( - true, - YCBBlueConnectHelper.BLEConnectState.Connected, - value - ) - ) } } } @@ -1374,15 +1411,7 @@ class DynamicManagementFrag : BaseVmFrag() { 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 -> { @@ -1491,16 +1520,6 @@ class DynamicManagementFrag : BaseVmFrag() { 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() @@ -1562,9 +1581,7 @@ class DynamicManagementFrag : BaseVmFrag() { // } private fun initBlueToothStatu() { - setDeviceInfo(DeviceInfoBean(blueTooth(), YCBBlueConnectHelper.BLEConnectState.DisConnect)) -// binding.mContent.visibility = View.VISIBLE -// binding.mEle.visibility = View.GONE + } private fun requestGPSPermission() { @@ -1644,134 +1661,6 @@ class DynamicManagementFrag : BaseVmFrag() { mViewModel.get24HourReportInfo(userId, isShowLoading) } - private fun updateWarningStatus() { - /*val position = mFamilyAdapter.position - if (position == 0 || position == -1) { - if (notifyStatus == 0) { - //未读 - binding.mHeader.llWarning.visibility = View.VISIBLE - } else { - //已读 - binding.mHeader.llWarning.visibility = View.GONE - } - } else { - binding.mHeader.llWarning.visibility = View.GONE - }*/ - } - - /** - * 设置设备信息 - */ - private fun setDeviceInfo(deviceInfo: DeviceInfoBean?) { - if (null != deviceInfo) { - if (blueTooth()) { - binding.mHeader.mWatchType.text = getString(R.string.blue_tooth) - val drawable = getDrawable(R.mipmap.ic_watch_bluetooth) - drawable.setBounds(0, 0, drawable.minimumWidth, drawable.minimumHeight) - binding.mHeader.mWatchType.setCompoundDrawables(drawable, null, null, null) - } else { - binding.mHeader.mWatchType.text = getString(R.string.lite_4g) - val drawable = getDrawable(R.mipmap.ic_watch_4g) - drawable.setBounds(0, 0, drawable.minimumWidth, drawable.minimumHeight) - binding.mHeader.mWatchType.setCompoundDrawables(drawable, null, null, null) - } - binding.mHeader.mBindState.visibility = View.VISIBLE - if (deviceInfo.bindState) {//已绑定 - binding.mHeader.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.mHeader.mWearManager.text = "佩戴管理" - - when (deviceInfo.connectState) { - YCBBlueConnectHelper.BLEConnectState.Connected -> {//已连接 - binding.mHeader.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.mHeader.mConnectStatu.apply { - text = "连接中..." - setCompoundDrawables(null, null, null, null) - } - } - - YCBBlueConnectHelper.BLEConnectState.DisConnect -> {//未连接 - binding.mHeader.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.mHeader.mConnectStatu.visibility = View.GONE - } else { - binding.mHeader.mBindState.apply { - text = "未绑定" - val drawable = getDrawable(R.mipmap.ic_unbind) - drawable.setBounds(0, 0, drawable.minimumWidth, drawable.minimumHeight) - setCompoundDrawables(drawable, null, null, null) - } - binding.mHeader.mWearManager.text = "绑定手表" - - binding.mHeader.mConnectStatu.visibility = View.GONE - } - } else { - binding.mHeader.mWatchType.text = getString(R.string.blue_tooth) - val drawable = getDrawable(R.mipmap.ic_watch_bluetooth) - drawable.setBounds(0, 0, drawable.minimumWidth, drawable.minimumHeight) - binding.mHeader.mWatchType.setCompoundDrawables(drawable, null, null, null) - binding.mHeader.mBindState.visibility = View.GONE - binding.mHeader.mConnectStatu.visibility = View.GONE - } - } private fun blueTooth(): Boolean { return CommonUtils.isBlueTooth(MMkvHelper.getInt(Const.Watch_Device_Type)) @@ -1824,7 +1713,6 @@ class DynamicManagementFrag : BaseVmFrag() { mViewModel.getAllInfo(event.showUserId, false) getXtInfo(event.showUserId) get24HourReportInfo(event.showUserId) - updateWarningStatus() } override fun onDestroy() { @@ -1841,4 +1729,16 @@ class DynamicManagementFrag : BaseVmFrag() { fun loginOutChange(event: LoginOutEvent){ } + + override fun onPermissionsGranted(requestCode: Int, perms: MutableList) { + AmapInit.startLocation(requireContext()) { + MMkvHelper.put(Const.LONGITUDE,it.longitude) + MMkvHelper.put(Const.LATITUDE,it.latitude) + mViewModel.getWeather() + + } + } + + override fun onPermissionsDenied(requestCode: Int, perms: MutableList) { + } } \ No newline at end of file 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 5fcd50f..000bddb 100644 --- a/app/src/main/java/com/zj365/dc/fragment/HealthHomeFrag.kt +++ b/app/src/main/java/com/zj365/dc/fragment/HealthHomeFrag.kt @@ -22,6 +22,7 @@ import com.xty.common.event.LoginOrRegisterEvent import com.xty.common.event.LoginOutEvent import com.xty.common.event.MyInfoEvent import com.xty.common.onEventObject +import com.xty.common.util.CommonToastUtils import com.xty.common.util.CommonUtils import com.xty.network.model.BannerBean import com.xty.network.model.FamilyBean @@ -196,7 +197,9 @@ 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 + + CommonToastUtils.showToast("敬请期待") + /*var contentData = adapter.getItem(position) as HomeLayoutBean.HomeChildBean when(contentData.jumpType){ 1 ->{ contentData.jumpUrl?.let { @@ -254,7 +257,7 @@ HealthHomeFrag : BaseVmFrag() { } } - } + }*/ } binding.mChildView.homeContentRv.layoutManager = GridLayoutManager(requireContext(),3) @@ -490,50 +493,7 @@ HealthHomeFrag : BaseVmFrag() { } } } -/** - * 设置天气信息*/ - - - 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 -// } -// } - } + 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 9adc28e..3600b37 100644 --- a/app/src/main/java/com/zj365/dc/fragment/MineFrag.kt +++ b/app/src/main/java/com/zj365/dc/fragment/MineFrag.kt @@ -85,24 +85,94 @@ class MineFrag : BaseVmFrag(),EasyPermissions.PermissionCallbacks { 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) + CommonToastUtils.showToast("敬请期待") } } - binding.llAboutUs.setOnClickListener { - RouteManager.goAct(ARouterUrl.ABOUT) + + binding.mllCoupon.setOnClickListener { + if(MMkvHelper.getLong(Const.USER_ID).toString() == "0"){ + RouteManager.goAct(ARouterUrl.LOGIN_ACT) + }else { + CommonToastUtils.showToast("敬请期待") + } + } + + binding.mllWallet.setOnClickListener { + if(MMkvHelper.getLong(Const.USER_ID).toString() == "0"){ + RouteManager.goAct(ARouterUrl.LOGIN_ACT) + }else { + CommonToastUtils.showToast("敬请期待") + } + } + /*binding.llOrder.setOnClickListener { + if(MMkvHelper.getLong(Const.USER_ID).toString() == "0"){ + RouteManager.goAct(ARouterUrl.LOGIN_ACT) + }else { + CommonToastUtils.showToast("敬请期待") + } + }*/ + + binding.mllMember.setOnClickListener { + if(MMkvHelper.getLong(Const.USER_ID).toString() == "0"){ + RouteManager.goAct(ARouterUrl.LOGIN_ACT) + }else { + CommonToastUtils.showToast("敬请期待") + } + } + + binding.mAppreciation.setOnClickListener { + if(MMkvHelper.getLong(Const.USER_ID).toString() == "0"){ + RouteManager.goAct(ARouterUrl.LOGIN_ACT) + }else { + CommonToastUtils.showToast("敬请期待") + } } binding.llHealthRecord.setOnClickListener { if(MMkvHelper.getLong(Const.USER_ID).toString() == "0"){ RouteManager.goAct(ARouterUrl.LOGIN_ACT) }else { - bundle.putString("id", user?.id) - RouteManager.goAct(ARouterUrl.HEALTH_RECORD, bundle) + CommonToastUtils.showToast("敬请期待") + } + } + + binding.llHealthMonitor.setOnClickListener { + if(MMkvHelper.getLong(Const.USER_ID).toString() == "0"){ + RouteManager.goAct(ARouterUrl.LOGIN_ACT) + }else { + CommonToastUtils.showToast("敬请期待") + } + } + + binding.llHealthDaily.setOnClickListener { + if(MMkvHelper.getLong(Const.USER_ID).toString() == "0"){ + RouteManager.goAct(ARouterUrl.LOGIN_ACT) + }else { + CommonToastUtils.showToast("敬请期待") + } + } + binding.llStartBs.setOnClickListener { + if(MMkvHelper.getLong(Const.USER_ID).toString() == "0"){ + RouteManager.goAct(ARouterUrl.LOGIN_ACT) + }else { + CommonToastUtils.showToast("敬请期待") } } + + binding.llDailyPoster.setOnClickListener { + if(MMkvHelper.getLong(Const.USER_ID).toString() == "0"){ + RouteManager.goAct(ARouterUrl.LOGIN_ACT) + }else { + CommonToastUtils.showToast("敬请期待") + } + } + + + binding.llAboutUs.setOnClickListener { + RouteManager.goAct(ARouterUrl.ABOUT) + } + binding.llDataComparsion.setOnClickListener { if(MMkvHelper.getLong(Const.USER_ID).toString() == "0"){ RouteManager.goAct(ARouterUrl.LOGIN_ACT) @@ -127,6 +197,30 @@ class MineFrag : BaseVmFrag(),EasyPermissions.PermissionCallbacks { } } + binding.llEnterpriseData.setOnClickListener { + if(MMkvHelper.getLong(Const.USER_ID).toString() == "0"){ + RouteManager.goAct(ARouterUrl.LOGIN_ACT) + }else { + CommonToastUtils.showToast("敬请期待") + } + } + + binding.llShippingAddress.setOnClickListener { + if(MMkvHelper.getLong(Const.USER_ID).toString() == "0"){ + RouteManager.goAct(ARouterUrl.LOGIN_ACT) + }else { + CommonToastUtils.showToast("敬请期待") + } + } + + binding.llOperationGuide.setOnClickListener { + if(MMkvHelper.getLong(Const.USER_ID).toString() == "0"){ + RouteManager.goAct(ARouterUrl.LOGIN_ACT) + }else { + CommonToastUtils.showToast("敬请期待") + } + } + binding.llOrder.setOnClickListener { if(MMkvHelper.getLong(Const.USER_ID).toString() == "0"){ RouteManager.goAct(ARouterUrl.LOGIN_ACT) @@ -141,7 +235,7 @@ class MineFrag : BaseVmFrag(),EasyPermissions.PermissionCallbacks { if(MMkvHelper.getLong(Const.USER_ID).toString() == "0"){ RouteManager.goAct(ARouterUrl.LOGIN_ACT) }else { - RouteManager.goAct(ARouterUrl.FAMILY) + RouteManager.goAct(ARouterUrl.FAMILY_HEALTH_ACT) } } binding.llWearableDevice.setOnClickListener { diff --git a/app/src/main/java/com/zj365/dc/vm/DietManagementVm.kt b/app/src/main/java/com/zj365/dc/vm/DietManagementVm.kt new file mode 100644 index 0000000..0cdc656 --- /dev/null +++ b/app/src/main/java/com/zj365/dc/vm/DietManagementVm.kt @@ -0,0 +1,33 @@ +package com.zj365.dc.vm + +import androidx.lifecycle.MutableLiveData +import com.xty.base.vm.BaseVm +import com.xty.network.model.FoodRecoginzeInfo +import com.xty.network.model.ImageUploadBean +import com.xty.network.model.RespBody +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.async +import kotlinx.coroutines.withContext +import okhttp3.MultipartBody +import org.json.JSONObject +import java.io.File + +class DietManagementVm : BaseVm() { + + val foodRecoginzeInfoLiveData by lazy { MutableLiveData>>() } + + fun submit(type:String,path: String){ + startHttp { + withContext(Dispatchers.IO) { + var f = File(path) + var fileRb = + MultipartBody.Part.createFormData("file", f.name, retrofits.getMultiPartFileRb(f)) + var body = apiInterface().foodRecognize(fileRb,retrofits.getRequestBody(type)) + + body.getCodeStatus(foodRecoginzeInfoLiveData,nowData) + + } + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/zj365/dc/vm/DynamicManagementVm.kt b/app/src/main/java/com/zj365/dc/vm/DynamicManagementVm.kt index 8ca0284..d8a27c2 100644 --- a/app/src/main/java/com/zj365/dc/vm/DynamicManagementVm.kt +++ b/app/src/main/java/com/zj365/dc/vm/DynamicManagementVm.kt @@ -25,6 +25,7 @@ import com.xty.network.model.ReportBean import com.xty.network.model.RespBody import com.xty.network.model.SettingBean import com.xty.network.model.TipsBean +import com.xty.network.model.WeatherBean import com.xty.network.model.XTangInfoBean import com.zj365.dc.R import org.json.JSONArray @@ -50,6 +51,8 @@ class DynamicManagementVm : BaseVm() { val mqtt by lazy { MutableLiveData>() } val uploadMultiple by lazy { MutableLiveData>() } + val weatherLiveDate by lazy { MutableLiveData>() } + /** * 获取所有信息 */ @@ -523,7 +526,7 @@ class DynamicManagementVm : BaseVm() { ) ) - //心电 + /*//心电 val statusXD = 0 val contentXD = if (TextUtils.isEmpty(heartData.hrData) || heartData.hrData == "0") { @@ -542,7 +545,7 @@ class DynamicManagementVm : BaseVm() { R.mipmap.ic_ecg, 8 ) - ) + )*/ //尿酸 // val statusNS = if (uricAcidData.value == "0") { @@ -625,7 +628,18 @@ class DynamicManagementVm : BaseVm() { ) //血脂 - var statusXZ = 0 + healthMonitoringList.add( + HealthMonitoringListBean( + "血脂", + 0, + "", + "敬请期待", + R.mipmap.bg_fat, + R.mipmap.ic_fat, + 10 + ) + ) + /*var statusXZ = 0 var contentXZ = "" var mTimeXZ = "" when (bloodFatData.status) { @@ -687,7 +701,7 @@ class DynamicManagementVm : BaseVm() { R.mipmap.ic_fat, 10 ) - ) + )*/ } "A3" -> { @@ -1473,4 +1487,14 @@ class DynamicManagementVm : BaseVm() { SimpleDateFormat("yyyy-MM-dd HH:mm") ) } + + fun getWeather(){ + startHttp { + val json = JSONObject() + json.put("longitude", MMkvHelper.getDouble(Const.LONGITUDE)) + json.put("latitude", MMkvHelper.getDouble(Const.LATITUDE)) + val body = apiInterface().getWeather(retrofits.getRequestBody(json.toString())) + body.getCodeStatus(weatherLiveDate, nowData) + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/zj365/dc/weight/PrevDialog.kt b/app/src/main/java/com/zj365/dc/weight/PrevDialog.kt index 3e3cc5d..84069dc 100644 --- a/app/src/main/java/com/zj365/dc/weight/PrevDialog.kt +++ b/app/src/main/java/com/zj365/dc/weight/PrevDialog.kt @@ -9,6 +9,7 @@ import android.text.TextPaint import android.text.style.ClickableSpan import android.view.View import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocationClient import com.hjq.toast.ToastUtils import com.xty.base.dialog.BaseDialog import com.xty.common.Const @@ -50,7 +51,7 @@ class PrevDialog(context: Context, private var agree: () -> Unit, private var gi ds.isUnderlineText = false } - }, 46, 52, Spanned.SPAN_INCLUSIVE_INCLUSIVE) + }, 49, 55, Spanned.SPAN_INCLUSIVE_INCLUSIVE) span.setSpan(object : ClickableSpan() { override fun onClick(widget: View) { val bundle = Bundle() @@ -66,7 +67,7 @@ class PrevDialog(context: Context, private var agree: () -> Unit, private var gi ds.clearShadowLayer() } - }, 53, 59, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) + }, 56, 62, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) span.setSpan(object : ClickableSpan() { override fun onClick(widget: View) { val bundle = Bundle() @@ -82,7 +83,7 @@ class PrevDialog(context: Context, private var agree: () -> Unit, private var gi ds.clearShadowLayer() } - }, 60, 75, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) + }, 72, 78, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) span.setSpan(object : ClickableSpan() { override fun onClick(widget: View) { val bundle = Bundle() @@ -98,8 +99,8 @@ class PrevDialog(context: Context, private var agree: () -> Unit, private var gi ds.isUnderlineText = false } - }, 85, 91, Spanned.SPAN_INCLUSIVE_INCLUSIVE) - span.setSpan(object : ClickableSpan() { + }, 79, 85, Spanned.SPAN_INCLUSIVE_INCLUSIVE) + /*span.setSpan(object : ClickableSpan() { override fun onClick(widget: View) { val bundle = Bundle() bundle.putString("title", "隐私政策") @@ -130,7 +131,7 @@ class PrevDialog(context: Context, private var agree: () -> Unit, private var gi ds.clearShadowLayer() } - }, 99, 114, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) + }, 99, 114, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)*/ binding.mContent.text = span binding.mContent.highlightColor = Color.TRANSPARENT @@ -141,6 +142,8 @@ class PrevDialog(context: Context, private var agree: () -> Unit, private var gi binding.mAgree.setOnClickListener { dismiss() agree.invoke() + AMapLocationClient.updatePrivacyShow(context,true,true); + AMapLocationClient.updatePrivacyAgree(context,true); } } } \ No newline at end of file diff --git a/app/src/main/res/layout/frag_dynamic_management_header.xml b/app/src/main/res/layout/frag_dynamic_management_header.xml index 9df9585..6e614ac 100644 --- a/app/src/main/res/layout/frag_dynamic_management_header.xml +++ b/app/src/main/res/layout/frag_dynamic_management_header.xml @@ -31,7 +31,7 @@ - - - - - - - - + + + android:text="农历 十月十九"/> + + #F2F6F7 #00000000 #f74c31 + #6EA8F6 \ No newline at end of file diff --git a/common/src/main/java/com/xty/common/Const.kt b/common/src/main/java/com/xty/common/Const.kt index 0dc5e24..fea20d7 100644 --- a/common/src/main/java/com/xty/common/Const.kt +++ b/common/src/main/java/com/xty/common/Const.kt @@ -127,6 +127,9 @@ class Const { const val X1_X2_Device = "x1_x2_device" const val DEVICE_TYPE = "device_Type" + const val LONGITUDE = "longitude" //经度 + const val LATITUDE = "latitude" //纬度 + var DeviceIdNum : String = "" // const val userName = "User_Name" // const val userBean = "UserUser" diff --git a/common/src/main/java/com/xty/common/aMapUtils/AmapInit.kt b/common/src/main/java/com/xty/common/aMapUtils/AmapInit.kt index 1b9a2e2..bb732de 100644 --- a/common/src/main/java/com/xty/common/aMapUtils/AmapInit.kt +++ b/common/src/main/java/com/xty/common/aMapUtils/AmapInit.kt @@ -1,6 +1,7 @@ package com.xty.common.aMapUtils import android.app.Application +import android.content.Context import com.amap.api.location.AMapLocation import com.amap.api.location.AMapLocationClient import com.amap.api.location.AMapLocationClientOption @@ -48,7 +49,7 @@ object AmapInit{ } } - private fun init(context: Application) { + private fun init(context: Context) { //隐私政策合规 AMapLocationClient.updatePrivacyShow(context,true,true) AMapLocationClient.updatePrivacyAgree(context,true) @@ -67,7 +68,8 @@ object AmapInit{ } //开启监听 - fun startLocation(context: Application, back:(listener:AMapLocation)->Unit) { + fun startLocation(context: Context, back:(listener:AMapLocation)->Unit) { + funs=back if (mLocationClient == null) { init(context) @@ -81,10 +83,11 @@ object AmapInit{ * 停止 */ fun stopLocation(){ -// mainScope.cancel() -// mLocationClient?.let { -// it.stopLocation() -// } + mainScope.cancel() + mLocationClient?.let { + it.stopLocation() + it.onDestroy() + } } diff --git a/common/src/main/java/com/xty/common/app/MyApp.kt b/common/src/main/java/com/xty/common/app/MyApp.kt index 1dc8b4b..904b476 100644 --- a/common/src/main/java/com/xty/common/app/MyApp.kt +++ b/common/src/main/java/com/xty/common/app/MyApp.kt @@ -55,14 +55,14 @@ class MyApp : Application() { super.onCreate() LogUtils.d("MyApp onCreate!!!!") - initCrash() + // initCrash() // 初始化 Toast 框架 getInstance(this) MMkvHelper.initMmkv(this) ToastUtils.init(this) ARouter.openDebug() ARouter.init(this) - initTouch() + // initTouch() initTimeUtils() initWxApi() initUMengSdk() @@ -70,7 +70,7 @@ class MyApp : Application() { registerBlueToothBoardCastReceiver() //bugly 上报 在release版本才会上报 // if(BuildConfig.isRelease){ - CrashReport.initCrashReport(this, "bdcd791680", true) + // CrashReport.initCrashReport(this, "", true) // } //删除角标 ShortcutBadger.applyCount(applicationContext, 0) @@ -146,10 +146,10 @@ class MyApp : Application() { fun initUMengSdk(){ //设置LOG开关,默认为false UMConfigure.setLogEnabled(!BuildConfig.isRelease) - /* //友盟预初始化 + //友盟预初始化 UMConfigure.preInit(applicationContext, BuildConfig.umengKey, BuildConfig.umengChannelName) // 支持在子进程中统计自定义事件 - UMConfigure.setProcessEvent(true)*/ + UMConfigure.setProcessEvent(true) } /** @@ -246,7 +246,7 @@ class MyApp : Application() { /** * 崩溃拦截框架 */ - @SuppressLint("RestrictedApi") +/* @SuppressLint("RestrictedApi") private fun initCrash() { CrashGuard.install(this, object : ExceptionHandler() { override fun onUncaughtException(thread: Thread, throwable: Throwable) { @@ -258,7 +258,7 @@ class MyApp : Application() { LogUtils.e("simon", "生命周期异常 thread:${thread.name} throwable:${e.message}") } }) - } + }*/ // CaocConfig.Builder.create() // .backgroundMode(CaocConfig.BACKGROUND_MODE_SILENT) 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 87b529b..3d37fdc 100644 --- a/common/src/main/java/com/xty/common/arouter/ARouterUrl.kt +++ b/common/src/main/java/com/xty/common/arouter/ARouterUrl.kt @@ -122,6 +122,10 @@ class ARouterUrl { //AI 测肤 const val AI_SKIN_MEASUREMENT_ACTIVITY = "/health/com/zj365/health/act/skin/SkinMeasurementMainAct" + const val ADD_FAMILY_GUARDIAN_ACT = "/health/com/zj365/health/act/familyhealth/AddFamilyGuardianAct" + const val FAMILY_HEALTH_ACT = "/health/com/zj365/health/act/familyhealth/FamilyHealthAct" + + //设备绑定相关 const val XUEYAJI_BIND_LIST = "/health/com/zj365/health/act/XueyaDeviceBindListAct" const val XUEYAJI_BIND = "/health/com/zj365/health/act/XueyaDeviceBindAct" diff --git a/common/src/main/res/drawable/shape_r7_3fe_8f6.xml b/common/src/main/res/drawable/shape_r7_3fe_8f6.xml new file mode 100644 index 0000000..2293e8d --- /dev/null +++ b/common/src/main/res/drawable/shape_r7_3fe_8f6.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/common/src/main/res/mipmap-xxhdpi/icon_pay_success.png b/common/src/main/res/mipmap-xxhdpi/icon_pay_success.png new file mode 100644 index 0000000000000000000000000000000000000000..f02da672a9394f855a978bf324cb685955904dca GIT binary patch literal 6486 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 literal 0 HcmV?d00001 diff --git a/config.gradle b/config.gradle index bd500c7..d861baf 100644 --- a/config.gradle +++ b/config.gradle @@ -17,7 +17,7 @@ ext { ] umeng = [ - umengKey : "", + umengKey : "657bf673a7208a5af1881764", umengChannelName: "android友盟统计" ] @@ -35,8 +35,8 @@ ext { image_preifx = [ - debug_url : "https://auprty.com/app", - release_url: "https://auprty.com/app" + debug_url : "http://java01.zhongjian365.com/app/", + release_url: "http://java01.zhongjian365.com/app/" //debug_url : "http://175.6.39.20:8181/app/", //release_url: "http://175.6.39.20:8181/app/" diff --git a/health/src/main/AndroidManifest.xml b/health/src/main/AndroidManifest.xml index 390c687..a3dd066 100644 --- a/health/src/main/AndroidManifest.xml +++ b/health/src/main/AndroidManifest.xml @@ -116,6 +116,11 @@ android:name="com.zj365.health.act.PreventCancertAct" android:launchMode="singleTop" android:screenOrientation="portrait" /> + + + + + + \ No newline at end of file diff --git a/health/src/main/java/com/zj365/health/act/AgreeAct.kt b/health/src/main/java/com/zj365/health/act/AgreeAct.kt index 582c6e4..095f1e7 100644 --- a/health/src/main/java/com/zj365/health/act/AgreeAct.kt +++ b/health/src/main/java/com/zj365/health/act/AgreeAct.kt @@ -74,12 +74,6 @@ class AgreeAct : BaseVmAct() { bundle.clear() bundle.putString("title", "用户协议") bundle.putInt("type", Const.AGREEMENT_1) - /* RouteManager.goActRequest( - ARouterUrl.RICH_TEXT, - this@AgreeAct, - USER_AGREEMENT, - bundle - )*/ } override fun updateDrawState(ds: TextPaint) { @@ -90,6 +84,8 @@ class AgreeAct : BaseVmAct() { }, 2, span.length, Spanned.SPAN_INCLUSIVE_INCLUSIVE) + binding.mPrivate.text = span + binding.mSubmit.setOnClickListener { if (!binding.mPrivate.isSelected) { CommonToastUtils.showToast(R.string.please_agree_server) @@ -97,6 +93,9 @@ class AgreeAct : BaseVmAct() { } mViewModel.uploadImagesFile(signPath) } + binding.tvSignAgain.setOnClickListener { + dialog.show() + } binding.mSign.setOnClickListener { dialog.show() } diff --git a/health/src/main/java/com/zj365/health/act/HealthFamilyAct.kt b/health/src/main/java/com/zj365/health/act/HealthFamilyAct.kt new file mode 100644 index 0000000..fe06534 --- /dev/null +++ b/health/src/main/java/com/zj365/health/act/HealthFamilyAct.kt @@ -0,0 +1,19 @@ +package com.zj365.health.act + +import com.xty.base.act.BaseVmAct +import com.xty.base.vm.BaseVm +import com.zj365.health.adapter.familyhealth.HealthFamilyAdapter +import com.zj365.health.databinding.ActHealthFamilyBinding + +class HealthFamilyAct : BaseVmAct() { + + val binding by lazy{ ActHealthFamilyBinding.inflate(layoutInflater)} + + val adapter by lazy { HealthFamilyAdapter() } + override fun liveObserver() { + + + } + + override fun setLayout() = binding.root +} \ No newline at end of file diff --git a/health/src/main/java/com/zj365/health/act/HealthMainAct.kt b/health/src/main/java/com/zj365/health/act/HealthMainAct.kt index 9f32b76..6dd9f71 100644 --- a/health/src/main/java/com/zj365/health/act/HealthMainAct.kt +++ b/health/src/main/java/com/zj365/health/act/HealthMainAct.kt @@ -70,8 +70,8 @@ class HealthMainAct : IBaseAct() { arrayOf( R.string.info_1, R.string.info_3, R.string.info_7, R.string.info_4, R.string.info_6, R.string.info_2, - R.string.info_8, R.string.info_11, R.string.info_5, - R.string.info_10 + R.string.info_8, R.string.info_11/*, R.string.info_5, + R.string.info_10*/ ) } @@ -79,7 +79,7 @@ class HealthMainAct : IBaseAct() { arrayOf( R.string.info_1, R.string.info_3, R.string.info_7, R.string.info_4, R.string.info_6, R.string.info_2, - R.string.info_8, R.string.info_11, R.string.info_10 + R.string.info_8, R.string.info_11/*, R.string.info_10*/ ) } @@ -87,7 +87,7 @@ class HealthMainAct : IBaseAct() { arrayOf( R.string.info_1, R.string.info_3, R.string.info_7, R.string.info_6, R.string.info_2, R.string.info_8, - R.string.info_11, R.string.info_10 + R.string.info_11/*, R.string.info_10*/ ) } } @@ -171,8 +171,8 @@ class HealthMainAct : IBaseAct() { listFragment.add(setArgumentFrag(XueyaFrag(), id)) listFragment.add(setArgumentFrag(XueTangFrag(), id)) listFragment.add(setArgumentFrag(UricAcidFrag(), id, sex)) - listFragment.add(setArgumentFrag(XdFrag(), id)) - listFragment.add(setArgumentFrag(BloodFatFrag(), id)) + // listFragment.add(setArgumentFrag(XdFrag(), id)) + // listFragment.add(setArgumentFrag(BloodFatFrag(), id)) } "A3" -> { @@ -184,7 +184,7 @@ class HealthMainAct : IBaseAct() { listFragment.add(setArgumentFrag(XueyaFrag(), id)) listFragment.add(setArgumentFrag(XueTangFrag(), id)) listFragment.add(setArgumentFrag(UricAcidFrag(), id, sex)) - listFragment.add(setArgumentFrag(BloodFatFrag(), id)) + // listFragment.add(setArgumentFrag(BloodFatFrag(), id)) } else -> { @@ -195,7 +195,7 @@ class HealthMainAct : IBaseAct() { listFragment.add(setArgumentFrag(XueyaFrag(), id)) listFragment.add(setArgumentFrag(XueTangFrag(), id)) listFragment.add(setArgumentFrag(UricAcidFrag(), id, sex)) - listFragment.add(setArgumentFrag(BloodFatFrag(), id)) + // listFragment.add(setArgumentFrag(BloodFatFrag(), id)) } } diff --git a/health/src/main/java/com/zj365/health/act/HealthSkyHourReportAct.kt b/health/src/main/java/com/zj365/health/act/HealthSkyHourReportAct.kt index 9701057..530a7df 100644 --- a/health/src/main/java/com/zj365/health/act/HealthSkyHourReportAct.kt +++ b/health/src/main/java/com/zj365/health/act/HealthSkyHourReportAct.kt @@ -898,7 +898,7 @@ class HealthSkyHourReportAct : BaseVmAct() { ) ) - if(bsseInfo.bloodFat == null){ + /*if(bsseInfo.bloodFat == null){ listInfo.add( ReportBean.HrInfo( "血脂", @@ -923,7 +923,7 @@ class HealthSkyHourReportAct : BaseVmAct() { R.mipmap.ic_uric_acid_small ) ) - } + }*/ if (bsseInfo.uricAcid == null) { //如果服务端没有返回数据,也就是演示模式,我们自己新增一些假数据用于展示 listInfo.add( @@ -1158,7 +1158,7 @@ class HealthSkyHourReportAct : BaseVmAct() { } list.add(uricAcid) - val bloodFat = if (it.data.bloodFat == null) { //服务端没有返回数据 + /* val bloodFat = if (it.data.bloodFat == null) { //服务端没有返回数据 com.xty.common.model.ReportBean().apply { title = "血脂" count = 1 @@ -1195,7 +1195,7 @@ class HealthSkyHourReportAct : BaseVmAct() { isShow = true } } - list.add(bloodFat) + list.add(bloodFat)*/ val yundong = com.xty.common.model.ReportBean().apply { title = "运动" @@ -1662,13 +1662,13 @@ class HealthSkyHourReportAct : BaseVmAct() { "平均睡眠:${minutesToHours(it.data.signData.sleep.avgTime)}" binding.analysisTv7.text = "平均血压:" + it.data.signData.dbp.avg + "mmHg" - if(!TextUtils.isEmpty(it.data.signData.bloodFat.tgAvg)){ + /*if(!TextUtils.isEmpty(it.data.signData.bloodFat.tgAvg)){ binding.analysisTv9.text = "平均血脂:" + it.data.signData.bloodFat.tgAvg + "mmol" }else{ binding.analysisTv9.text = "平均血脂:0mmol" - } + }*/ binding.state.apply { val statusInt = it.data.healthy.result val star = if (it.data.star.isEmpty()) 0 else Integer.valueOf(it.data.star) diff --git a/health/src/main/java/com/zj365/health/act/HealthWeekMonthHourReportAct.kt b/health/src/main/java/com/zj365/health/act/HealthWeekMonthHourReportAct.kt index 802145f..59fe8e4 100644 --- a/health/src/main/java/com/zj365/health/act/HealthWeekMonthHourReportAct.kt +++ b/health/src/main/java/com/zj365/health/act/HealthWeekMonthHourReportAct.kt @@ -1334,7 +1334,7 @@ class HealthWeekMonthHourReportAct : BaseVmAct() { ) } - if(bsseInfo.bloodFat == null){ + /*if(bsseInfo.bloodFat == null){ listInfo.add( com.xty.network.model.ReportBean.HrInfo( "血脂", @@ -1359,7 +1359,7 @@ class HealthWeekMonthHourReportAct : BaseVmAct() { R.mipmap.ic_uric_acid_small ) ) - } + }*/ infoAdapter.setNewInstance(listInfo) @@ -1566,7 +1566,7 @@ class HealthWeekMonthHourReportAct : BaseVmAct() { } list.add(uricAcid) - val bloodFat = if (it.data.bloodFat == null) { //服务端没有返回数据 + /*val bloodFat = if (it.data.bloodFat == null) { //服务端没有返回数据 ReportBean().apply { title = "血脂" count = 1 @@ -1603,7 +1603,7 @@ class HealthWeekMonthHourReportAct : BaseVmAct() { isShow = true } } - list.add(bloodFat) + list.add(bloodFat)*/ val yundong = ReportBean().apply { title = "运动" @@ -1953,13 +1953,13 @@ class HealthWeekMonthHourReportAct : BaseVmAct() { binding.analysisTv6.text = "平均睡眠: $sleep" binding.analysisTv7.text = "平均血压: " + it.data.analyse.dbp - if(!TextUtils.isEmpty(it.data.signData.bloodFat.tgAvg)){ + /* if(!TextUtils.isEmpty(it.data.signData.bloodFat.tgAvg)){ binding.analysisTv9.text = "平均血脂:" + it.data.signData.bloodFat.tgAvg + "mmol" }else{ binding.analysisTv9.text = "平均血脂:0mmol" - } + }*/ binding.state.apply { val statusInt = it.data.analyse.status.toInt() val star = if (it.data.star.isEmpty()) 0 else Integer.valueOf(it.data.star) diff --git a/health/src/main/java/com/zj365/health/act/familyhealth/AddFamilyGuardianAct.kt b/health/src/main/java/com/zj365/health/act/familyhealth/AddFamilyGuardianAct.kt new file mode 100644 index 0000000..f92188f --- /dev/null +++ b/health/src/main/java/com/zj365/health/act/familyhealth/AddFamilyGuardianAct.kt @@ -0,0 +1,69 @@ +package com.zj365.health.act.familyhealth + +import android.text.TextUtils +import com.alibaba.android.arouter.facade.annotation.Route +import com.xty.base.act.BaseVmAct +import com.xty.base.vm.BaseVm +import com.xty.common.arouter.ARouterUrl +import com.xty.common.util.CommonToastUtils +import com.zj365.health.databinding.ActAddFamilyGuardianBinding +import com.zj365.health.vm.AddFamilyGuardianVm + +@Route(path = ARouterUrl.ADD_FAMILY_GUARDIAN_ACT) +class AddFamilyGuardianAct : BaseVmAct() { + val binding by lazy { ActAddFamilyGuardianBinding.inflate(layoutInflater) } + + var isFrist = false + + var familyRelation:String? = null + var familyPhone:String? = null + var guardian:String = "0" + + override fun liveObserver() { + mViewModel.submitLiveData.observe(this){ + + } + + } + + override fun setLayout() = binding.root + + override fun initView() { + super.initView() + statusBar(binding.title.mView) + binding.title.mTvTitle.text = "添加监护人" + binding.title.mIvBack.setOnClickListener { + finish() + } + + binding.tvBind.setOnClickListener { + familyRelation = binding.etName.text.toString() + familyPhone = binding.etPhone.text.toString() + if(TextUtils.isEmpty(familyRelation)){ + CommonToastUtils.showToast("请填写监护关系") + return@setOnClickListener + }else if (TextUtils.isEmpty(familyPhone)){ + CommonToastUtils.showToast("请填写手机号码") + return@setOnClickListener + } + + if(isFrist){ + guardian = "1" + }else{ + guardian = "0" + } + + mViewModel.addFamily(familyRelation!!,familyPhone!!,guardian) + } + + binding.cbFrist.setOnCheckedChangeListener { compoundButton, b -> + isFrist = b + + + } + } + + override fun initData() { + super.initData() + } +} \ No newline at end of file diff --git a/health/src/main/java/com/zj365/health/act/familyhealth/FamilyHealthAct.kt b/health/src/main/java/com/zj365/health/act/familyhealth/FamilyHealthAct.kt new file mode 100644 index 0000000..012daec --- /dev/null +++ b/health/src/main/java/com/zj365/health/act/familyhealth/FamilyHealthAct.kt @@ -0,0 +1,31 @@ +package com.zj365.health.act.familyhealth + +import com.alibaba.android.arouter.facade.annotation.Route +import com.xty.base.act.BaseVmAct +import com.xty.base.vm.BaseVm +import com.xty.common.arouter.ARouterUrl +import com.zj365.health.adapter.familyhealth.HealthFamilyAdapter +import com.zj365.health.databinding.ActHealthFamilyBinding + +@Route(path = ARouterUrl.FAMILY_HEALTH_ACT) +class FamilyHealthAct : BaseVmAct() { + val binding by lazy { ActHealthFamilyBinding.inflate(layoutInflater) } + val adapter by lazy { HealthFamilyAdapter() } + override fun liveObserver() { + } + + override fun setLayout() = binding.root + + override fun initView() { + super.initView() + statusBar(binding.title.mView) + binding.title.mTvTitle.text = "家人健康" + binding.title.mIvBack.setOnClickListener { + finish() + } + } + + override fun initData() { + super.initData() + } +} \ No newline at end of file diff --git a/health/src/main/java/com/zj365/health/adapter/FamilyHealth/HealthFamilyAdapter.kt b/health/src/main/java/com/zj365/health/adapter/FamilyHealth/HealthFamilyAdapter.kt new file mode 100644 index 0000000..b165729 --- /dev/null +++ b/health/src/main/java/com/zj365/health/adapter/FamilyHealth/HealthFamilyAdapter.kt @@ -0,0 +1,12 @@ +package com.zj365.health.adapter.familyhealth + +import com.chad.library.adapter.base.viewholder.BaseViewHolder +import com.xty.base.adapter.BaseAdapter +import com.zj365.health.R + +class HealthFamilyAdapter: BaseAdapter(R.layout.item_health_family) { + override fun convert(holder: BaseViewHolder, item: Any) { + + + } +} \ No newline at end of file diff --git a/health/src/main/java/com/zj365/health/adapter/FamilyHealth/HealthFamilyTargetAdapter.kt b/health/src/main/java/com/zj365/health/adapter/FamilyHealth/HealthFamilyTargetAdapter.kt new file mode 100644 index 0000000..8eb01bf --- /dev/null +++ b/health/src/main/java/com/zj365/health/adapter/FamilyHealth/HealthFamilyTargetAdapter.kt @@ -0,0 +1,11 @@ +package com.zj365.health.adapter.familyhealth + +import com.chad.library.adapter.base.viewholder.BaseViewHolder +import com.xty.base.adapter.BaseAdapter +import com.zj365.health.R + +class HealthFamilyTargetAdapter : BaseAdapter(R.layout.item_health_family_target) { + override fun convert(holder: BaseViewHolder, item: String) { + TODO("Not yet implemented") + } +} \ No newline at end of file diff --git a/health/src/main/java/com/zj365/health/adapter/FamilyHealth/HealthFamilyUserAvatorAdapter.kt b/health/src/main/java/com/zj365/health/adapter/FamilyHealth/HealthFamilyUserAvatorAdapter.kt new file mode 100644 index 0000000..a34ba9c --- /dev/null +++ b/health/src/main/java/com/zj365/health/adapter/FamilyHealth/HealthFamilyUserAvatorAdapter.kt @@ -0,0 +1,29 @@ +package com.zj365.health.adapter.familyhealth + +import android.view.View +import android.view.ViewGroup +import com.chad.library.adapter.base.viewholder.BaseViewHolder +import com.xty.base.adapter.BaseAdapter +import com.xty.common.setImageUser +import com.zj365.health.R +import de.hdodenhof.circleimageview.CircleImageView + + +class HealthFamilyUserAvatorAdapter : BaseAdapter(R.layout.item_health_family_user_avator) { + override fun convert(holder: BaseViewHolder, item: String) { + val position = holder.layoutPosition + if (position == 0){ + setMargins(holder.itemView,0,0,0,0) + } + holder.getView(R.id.img_user_avator).setImageUser(context,item) + + } + + fun setMargins(v: View, l: Int, t: Int, r: Int, b: Int) { + if (v.layoutParams is ViewGroup.MarginLayoutParams) { + val p = v.layoutParams as ViewGroup.MarginLayoutParams + p.setMargins(l, t, r, b) + v.requestLayout() + } + } +} \ No newline at end of file diff --git a/health/src/main/java/com/zj365/health/vm/AddFamilyGuardianVm.kt b/health/src/main/java/com/zj365/health/vm/AddFamilyGuardianVm.kt new file mode 100644 index 0000000..a01da7f --- /dev/null +++ b/health/src/main/java/com/zj365/health/vm/AddFamilyGuardianVm.kt @@ -0,0 +1,24 @@ +package com.zj365.health.vm + +import androidx.lifecycle.MutableLiveData +import com.xty.base.vm.BaseVm +import com.xty.network.model.RespBody +import org.json.JSONObject + +class AddFamilyGuardianVm : BaseVm() { + + val submitLiveData by lazy { MutableLiveData>() } + + fun addFamily(relation:String,phone:String,guardian:String){ + startHttp (true){ + val json = JSONObject() + json.put("relation",relation) + json.put("phone",phone) + json.put("guardian",guardian) + + val body = apiInterface().addFamilyGuardian(retrofits.getRequestBody(json.toString())) + body.getCodeStatus(submitLiveData,nowData) + + } + } +} \ No newline at end of file diff --git a/health/src/main/java/com/zj365/health/weight/AIIcingPaySuccessDialog.kt b/health/src/main/java/com/zj365/health/weight/AIIcingPaySuccessDialog.kt new file mode 100644 index 0000000..07290fc --- /dev/null +++ b/health/src/main/java/com/zj365/health/weight/AIIcingPaySuccessDialog.kt @@ -0,0 +1,19 @@ +package com.zj365.health.weight + +import android.content.Context +import android.view.View +import com.xty.base.dialog.BaseDialog +import com.zj365.health.databinding.DialogAiIcingBinding +import com.zj365.health.databinding.DialogCancerBinding + +class AIIcingPaySuccessDialog(context: Context) : BaseDialog(context) { + val binding by lazy { DialogAiIcingBinding.inflate(layoutInflater) } + override fun setLayout() = binding.root + + override fun initView() { + super.initView() + binding.tvConfirm.setOnClickListener { + dismiss() + } + } +} \ No newline at end of file diff --git a/health/src/main/java/com/zj365/health/weight/DialogTipNew.kt b/health/src/main/java/com/zj365/health/weight/DialogTipNew.kt new file mode 100644 index 0000000..5d92ac8 --- /dev/null +++ b/health/src/main/java/com/zj365/health/weight/DialogTipNew.kt @@ -0,0 +1,49 @@ +package com.zj365.health.weight + +import android.content.Context +import android.view.View +import androidx.core.content.ContextCompat +import com.xty.base.dialog.BaseDialog +import com.xty.common.SizeUtil +import com.zj365.health.R +import com.zj365.health.databinding.DialogTipToastBinding + +class DialogTipNew( + context: Context, + var title: String, + var confirmText: String? = "确定", + var cancelText:String? = "取消", + var isSingleBtn:Boolean = false, + var confirm: () -> Unit, + var cancel: () -> Unit +) : BaseDialog(context) { + val binding by lazy { DialogTipToastBinding.inflate(layoutInflater) } + override fun setLayout() = binding.root + override fun initView() { + super.initView() + setDialogPadding(SizeUtil.dp2px(context, 40f), 0, SizeUtil.dp2px(context, 40f), 0) + binding.mTitle.text = title + + if (isSingleBtn) { + binding.clTwoBtnLayout.visibility = View.GONE + binding.mTitle.setTextColor(ContextCompat.getColor(context, R.color.col_7c7)) + binding.tvSingle.visibility = View.VISIBLE + binding.tvSingle.text = confirmText + binding.tvSingle.setOnClickListener { + dismiss() + } + } else { + binding.mTvConfirm.text = confirmText + binding.mTvCancel.text = cancelText + binding.mTvCancel.setOnClickListener { + cancel.invoke() + dismiss() + } + binding.mTvConfirm.setOnClickListener { + confirm.invoke() + dismiss() + } + } + + } +} \ No newline at end of file diff --git a/health/src/main/res/layout/act_add_family_guardian.xml b/health/src/main/res/layout/act_add_family_guardian.xml new file mode 100644 index 0000000..e9c17af --- /dev/null +++ b/health/src/main/res/layout/act_add_family_guardian.xml @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/health/src/main/res/layout/act_health_family.xml b/health/src/main/res/layout/act_health_family.xml new file mode 100644 index 0000000..ab2fd06 --- /dev/null +++ b/health/src/main/res/layout/act_health_family.xml @@ -0,0 +1,16 @@ + + + + + + + + \ No newline at end of file diff --git a/health/src/main/res/layout/act_health_sky_hour_report.xml b/health/src/main/res/layout/act_health_sky_hour_report.xml index c603a6b..89e29b6 100644 --- a/health/src/main/res/layout/act_health_sky_hour_report.xml +++ b/health/src/main/res/layout/act_health_sky_hour_report.xml @@ -745,6 +745,7 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/dp_12" android:textColor="@color/col_c7c" + android:visibility="gone" android:textSize="@dimen/sp_14" tools:text="平均心率: 92次/分" /> diff --git a/health/src/main/res/layout/act_health_week_month_hour_report.xml b/health/src/main/res/layout/act_health_week_month_hour_report.xml index 49fa9ab..8b7a168 100644 --- a/health/src/main/res/layout/act_health_week_month_hour_report.xml +++ b/health/src/main/res/layout/act_health_week_month_hour_report.xml @@ -767,6 +767,7 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/dp_12" android:textColor="@color/col_c7c" + android:visibility="gone" android:textSize="@dimen/sp_14" tools:text="平均心率: 92次/分" /> diff --git a/health/src/main/res/layout/dialog_ai_icing.xml b/health/src/main/res/layout/dialog_ai_icing.xml new file mode 100644 index 0000000..35db2ea --- /dev/null +++ b/health/src/main/res/layout/dialog_ai_icing.xml @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/health/src/main/res/layout/frag_community_rank.xml b/health/src/main/res/layout/frag_community_rank.xml index 4b6c034..7be6700 100644 --- a/health/src/main/res/layout/frag_community_rank.xml +++ b/health/src/main/res/layout/frag_community_rank.xml @@ -44,7 +44,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_vertical|right" - android:textColor="@color/col_8D0" + android:textColor="@color/col_02c" android:layout_marginRight="@dimen/dp_14" android:text="第23名" android:textSize="@dimen/dp_18" /> diff --git a/health/src/main/res/layout/frag_step_community_rank.xml b/health/src/main/res/layout/frag_step_community_rank.xml index b4e1d13..bd91885 100644 --- a/health/src/main/res/layout/frag_step_community_rank.xml +++ b/health/src/main/res/layout/frag_step_community_rank.xml @@ -73,7 +73,7 @@ android:layout_height="match_parent" android:layout_marginEnd="16dp" android:gravity="center" - android:textColor="@color/col_25C" + android:textColor="@color/col_02c" android:textSize="18dp" /> diff --git a/health/src/main/res/layout/item_health_family.xml b/health/src/main/res/layout/item_health_family.xml new file mode 100644 index 0000000..1d4d844 --- /dev/null +++ b/health/src/main/res/layout/item_health_family.xml @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/health/src/main/res/layout/item_health_family_target.xml b/health/src/main/res/layout/item_health_family_target.xml new file mode 100644 index 0000000..ee72caa --- /dev/null +++ b/health/src/main/res/layout/item_health_family_target.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/health/src/main/res/layout/item_health_family_user_avator.xml b/health/src/main/res/layout/item_health_family_user_avator.xml new file mode 100644 index 0000000..069e530 --- /dev/null +++ b/health/src/main/res/layout/item_health_family_user_avator.xml @@ -0,0 +1,16 @@ + + + + + + \ No newline at end of file diff --git a/health/src/main/res/layout/item_rank_list.xml b/health/src/main/res/layout/item_rank_list.xml index 33a1c36..f62ca67 100644 --- a/health/src/main/res/layout/item_rank_list.xml +++ b/health/src/main/res/layout/item_rank_list.xml @@ -74,7 +74,7 @@ android:layout_marginRight="@dimen/dp_10" android:gravity="right" android:layout_gravity="center_vertical" - android:textColor="@color/col_8D0" + android:textColor="@color/col_02c" android:textSize="@dimen/dp_16" /> \ No newline at end of file diff --git a/health/src/main/res/layout/item_step_rank_list.xml b/health/src/main/res/layout/item_step_rank_list.xml index 511fa3a..f1e1b93 100644 --- a/health/src/main/res/layout/item_step_rank_list.xml +++ b/health/src/main/res/layout/item_step_rank_list.xml @@ -73,7 +73,7 @@ android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:gravity="right" - android:textColor="@color/col_25C" + android:textColor="@color/col_02c" android:textSize="16dp" /> \ No newline at end of file diff --git a/mine/src/main/java/com/zj365/mime/act/AboutAct.kt b/mine/src/main/java/com/zj365/mime/act/AboutAct.kt index 0e79a2c..34c7a27 100644 --- a/mine/src/main/java/com/zj365/mime/act/AboutAct.kt +++ b/mine/src/main/java/com/zj365/mime/act/AboutAct.kt @@ -2,6 +2,7 @@ package com.zj365.mime.act import android.text.Html import com.alibaba.android.arouter.facade.annotation.Route +import com.blankj.utilcode.util.ArrayUtils import com.xty.base.act.BaseVmAct import com.xty.common.MMkvHelper import com.xty.common.arouter.ARouterUrl @@ -45,15 +46,18 @@ class AboutAct: BaseVmAct() { override fun liveObserver() { mViewModel.prevLive.observe(this){ - it.data[0].let { - binding.mVersion.text="版本号: V${packageManager.getPackageInfo(this.packageName,0).versionName}" - binding.mWebSite.text=Html.fromHtml(String.format(getString(R.string.about_info),"公司网址:",it.website)) - binding.mPhone.text=Html.fromHtml(String.format(getString(R.string.about_info),"联系电话:",it.phone)) - binding.mEmail.text=Html.fromHtml(String.format(getString(R.string.about_info),"邮箱地址:",it.email)) - binding.mCode.apply { - setImage(context,getImageUrl(it.qrCode)) + if (!ArrayUtils.isEmpty(it.data)){ + it.data[0].let { + binding.mVersion.text="版本号: V${packageManager.getPackageInfo(this.packageName,0).versionName}" + binding.mWebSite.text=Html.fromHtml(String.format(getString(R.string.about_info),"公司网址:",it.website)) + binding.mPhone.text=Html.fromHtml(String.format(getString(R.string.about_info),"联系电话:",it.phone)) + binding.mEmail.text=Html.fromHtml(String.format(getString(R.string.about_info),"邮箱地址:",it.email)) + binding.mCode.apply { + setImage(context,getImageUrl(it.qrCode)) + } } } + } } } \ No newline at end of file diff --git a/mine/src/main/java/com/zj365/mime/act/BaseInfoChangeAct.kt b/mine/src/main/java/com/zj365/mime/act/BaseInfoChangeAct.kt index cf62723..1df7a75 100644 --- a/mine/src/main/java/com/zj365/mime/act/BaseInfoChangeAct.kt +++ b/mine/src/main/java/com/zj365/mime/act/BaseInfoChangeAct.kt @@ -245,12 +245,17 @@ class BaseInfoChangeAct : BaseVmAct() { binding.mPhone.text = it.phone // binding.mId.setText(it.idCard) binding.mBirthday.text = it.birthday + if (it.birthdayType == 2){ + binding.tvCalType.text = "公历" + }else{ + binding.tvCalType.text = "农历" + } if(binding.tvCalType.text.toString().equals("公历")){ it.birthdayType == 2 }else{ it.birthdayType == 1 } - binding.checkBirthday.isChecked = it.birthdayType == 2 + // binding.checkBirthday.isChecked = it.birthdayType == 2 // when(it.birthdayType){ // 1-> binding.checkBirthday.isChecked = false // 2->binding.checkBirthday.isChecked = true 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 a7e53c0..82e6882 100644 --- a/mine/src/main/java/com/zj365/mime/act/DevInfoAct.kt +++ b/mine/src/main/java/com/zj365/mime/act/DevInfoAct.kt @@ -84,7 +84,7 @@ class DevInfoAct : BaseVmAct(),EasyPermissions.PermissionCallbacks { binding.mCode.text = "设备编号:${it.deviceId}" binding.mActiveCode.text = "设备激活码:${it.activationCode}" binding.mActiveCode.visibility = View.VISIBLE - setDevicePic(it.deviceType, binding.ivDevice) + // setDevicePic(it.deviceType, binding.ivDevice) } userId?.let { @@ -138,9 +138,9 @@ class DevInfoAct : BaseVmAct(),EasyPermissions.PermissionCallbacks { mViewModel.deviceInfo.observe(this) { binding.mNickName.text = "设备名称:${it.data.watchName?:""}" - binding.mNum.text = "设备地址:${it.data.bluetooth?:""}" - binding.mCode.text = "设备编号:${it.data.deviceCode?:""}" - binding.mActiveCode.text = "设备激活码:${it.data.activationCode?:""}" + binding.mNum.text = "设备编码:${it.data.bluetooth?:""}" + binding.mCode.text = "物联网卡:${it.data.deviceCode?:""}" + binding.mActiveCode.text = "流量到期:${it.data.activationCode?:""}" binding.mActiveCode.visibility = View.VISIBLE setDevicePic(it.data.deviceType, binding.ivDevice) diff --git a/mine/src/main/java/com/zj365/mime/act/MessageDetailAct.kt b/mine/src/main/java/com/zj365/mime/act/MessageDetailAct.kt index b980dc6..b81e8bf 100644 --- a/mine/src/main/java/com/zj365/mime/act/MessageDetailAct.kt +++ b/mine/src/main/java/com/zj365/mime/act/MessageDetailAct.kt @@ -31,7 +31,7 @@ class MessageDetailAct: IBaseAct() { } binding.mMsg.text=content - // onEventObject(baseContext, UmengEventId.WarningMsg, "查看预警消息详情$content") + onEventObject(baseContext, UmengEventId.WarningMsg, "查看预警消息详情$content") } override fun initView() { 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 f444dad..bf10e2a 100644 --- a/mine/src/main/java/com/zj365/mime/act/SettingNewAct.kt +++ b/mine/src/main/java/com/zj365/mime/act/SettingNewAct.kt @@ -77,18 +77,22 @@ class SettingNewAct: BaseVmAct() { bundle.clear() bundle.putString("title", "隐私政策") bundle.putBoolean("isAgree", false) - bundle.putString("url","https://auprty.com/app/static/app/privacy.html") + bundle.putString("url","https://dc.zhongjian365.com/privacy.html") RouteManager.goAct(ARouterUrl.AGREEMNT_READ_WEB_ACT, bundle) } binding.mTvUserAgree.setOnClickListener { - bundle.clear() + bundle.putString("title", "用户协议") + bundle.putBoolean("isAgree", false) + bundle.putString("url","https://dc.zhongjian365.com/agreement.html") + RouteManager.goAct(ARouterUrl.AGREEMNT_READ_WEB_ACT, bundle) + /* bundle.clear() bundle.putString("title", "用户协议") bundle.putInt("type", Const.AGREEMENT_1) bundle.putBoolean("isAgree", false) - RouteManager.goAct(ARouterUrl.RICH_TEXT, bundle) + RouteManager.goAct(ARouterUrl.RICH_TEXT, bundle)*/ } diff --git a/mine/src/main/res/layout/act_dev_info.xml b/mine/src/main/res/layout/act_dev_info.xml index ed874f0..0dc42d9 100644 --- a/mine/src/main/res/layout/act_dev_info.xml +++ b/mine/src/main/res/layout/act_dev_info.xml @@ -32,7 +32,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_vertical" - android:src="@mipmap/ic_device_watch" /> + android:src="@mipmap/ic_watch_gs29u" /> > + @POST("customer/index/getWeather") + suspend fun getWeather(@Body rb: RequestBody): RespBody + /** * 关联家人 */ @@ -907,6 +910,14 @@ interface ApiInterface { @POST("customer/layout/list") suspend fun getHomeLayout():RespBody + /** + * 膳食分析-热卡分析 + */ + @POST("customer/meals/foodRecognize") + @Multipart + suspend fun foodRecognize(@Part file: MultipartBody.Part, + @Part("type") type: RequestBody): RespBody> + /** * 关于 */ @@ -1685,4 +1696,10 @@ interface ApiInterface { */ @POST("customer/user/getInviteCount") suspend fun getInviteCount(@Body rb: RequestBody): RespBody + + /** + * 添加家人 + */ + @POST("customer/family/addFamily") + suspend fun addFamilyGuardian(@Body rb: RequestBody): RespBody } \ No newline at end of file diff --git a/network/src/main/java/com/xty/network/model/FoodRecoginzeInfo.kt b/network/src/main/java/com/xty/network/model/FoodRecoginzeInfo.kt new file mode 100644 index 0000000..2d19151 --- /dev/null +++ b/network/src/main/java/com/xty/network/model/FoodRecoginzeInfo.kt @@ -0,0 +1,12 @@ +package com.xty.network.model + +import java.nio.DoubleBuffer + +data class FoodRecoginzeInfo( + val heat:Double, + val df:Double, + val cho:Double, + val chol:Double, + val na:DoubleBuffer +) { +} \ No newline at end of file diff --git a/network/src/main/java/com/xty/network/model/MainBean.kt b/network/src/main/java/com/xty/network/model/MainBean.kt index 95a0730..1ff0c4a 100644 --- a/network/src/main/java/com/xty/network/model/MainBean.kt +++ b/network/src/main/java/com/xty/network/model/MainBean.kt @@ -20,13 +20,20 @@ data class MainBean( val power: String, val watchType: Int,//0:蓝牙U32 1:4G A3 val weather: Weather, + val bmi:String, //BMI 值 + val warningCount :Int, //预警次数 + val healthCount :Int, //监测次数 + val chinaDay:String, //农历日期 + val nowDay:String,//当前日期 val deviceTotal: DeviceTotal,//物联网数据 val demonstrate: Int,//0:普通模式 1: 演示模式 val stepData: StepData,//步数 val bloodSugarData: DloodSugarData,//血糖 val uricAcidData: UricAcidData,//尿酸 val caloriesData: String,//卡路里 - val bloodFatData: BloodFatData//血脂 + val bloodFatData: BloodFatData,//血脂 + val bmiInfo: BMIInfoBean //bmi信息 + ) { //血脂 data class BloodFatData( @@ -147,6 +154,12 @@ data class MainBean( val star: String, val deviceType: String, val weight: String? = null, - val bodyFatMac: String + val bodyFatMac: String, + val isPerfect:Int = 1 //0,未完善,1,已完善 ) : Serializable + + data class BMIInfoBean( + val levelName:String, + val bmi:String + ) } diff --git a/network/src/main/java/com/xty/network/model/WeatherBean.kt b/network/src/main/java/com/xty/network/model/WeatherBean.kt new file mode 100644 index 0000000..56e3e2c --- /dev/null +++ b/network/src/main/java/com/xty/network/model/WeatherBean.kt @@ -0,0 +1,7 @@ +package com.xty.network.model + +data class WeatherBean( + val temp:String, + val text:String +) { +} \ No newline at end of file