diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5e45ebc..1215eb1 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -125,6 +125,11 @@ android:launchMode="singleTop" android:screenOrientation="portrait" /> + + @@ -280,6 +285,14 @@ android:name="com.zj365.mime.act.MessageDetailAct" android:launchMode="singleTop" android:screenOrientation="portrait" /> + + + + \ No newline at end of file diff --git a/app/src/main/java/com/zj365/dc/activity/InfoSimpleAct.kt b/app/src/main/java/com/zj365/dc/activity/InfoSimpleAct.kt new file mode 100644 index 0000000..57a937c --- /dev/null +++ b/app/src/main/java/com/zj365/dc/activity/InfoSimpleAct.kt @@ -0,0 +1,234 @@ +package com.zj365.dc.activity + +import android.content.Intent +import android.text.Editable +import android.text.TextWatcher +import android.util.Log +import com.alibaba.android.arouter.facade.annotation.Route +import com.alibaba.android.arouter.launcher.ARouter +import com.luck.picture.lib.PictureSelector +import com.luck.picture.lib.config.PictureConfig +import com.tamsiree.rxkit.RxActivityTool +import com.tamsiree.rxkit.RxKeyboardTool +import com.tencent.qcloud.tuicore.TUILogin +import com.tencent.qcloud.tuicore.interfaces.TUICallback +import com.xty.base.act.BaseVmAct +import com.xty.common.TimeSelect +import com.xty.common.TimeUtils +import com.xty.common.arouter.ARouterUrl +import com.xty.common.arouter.RouteManager +import com.xty.common.event.MyInfoEvent +import com.xty.common.picture.PictureUtils +import com.xty.common.setImage +import com.xty.common.util.CommonToastUtils +import com.zj365.dc.R +import com.zj365.dc.databinding.ActInfoSimpleBinding +import com.zj365.dc.vm.InfoSimpleVm +import org.greenrobot.eventbus.EventBus +import java.util.regex.Pattern + +/** + * 基本信息 + * 简单信息填写 + */ +@Route(path = ARouterUrl.INFO_SIMPLE) +class InfoSimpleAct : BaseVmAct() { + + val binding by lazy { ActInfoSimpleBinding.inflate(layoutInflater) } + override fun setLayout() = binding.root + + private var isBinding: Boolean = false + private var sexType = 1 + private var birthdayType = 1 + + var phone: String = "" + private var pwd: String = "" + + private val timeSelect by lazy { TimeSelect(this) {} } + private val textListener by lazy { + object : TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + } + + override fun afterTextChanged(s: Editable?) { + binding.mName.removeTextChangedListener(this) + val str = s.toString().trim() + if (str.isNotEmpty()) { + val isNum = Pattern.matches("[0-9]", str.substring(0, 1)) + if (isNum) { + if (str.length > 2) { + binding.mName.setText(str.substring(1, str.length)) + } else { + binding.mName.setText("") + } + CommonToastUtils.showToast(R.string.name_first_num) + } + } + binding.mName.addTextChangedListener(this) + } + } + } + + override fun initData() { + super.initData() + isDarkBar = true + phone = intent.getStringExtra("phone").toString() + pwd = intent.getStringExtra("password").toString() + } + + override fun initView() { + super.initView() + statusBar(binding.title.mView) + binding.title.mTvTitle.text = getString(R.string.base_info) + binding.title.mIvBack.setOnClickListener { finish() } + binding.mImage.setOnClickListener { PictureUtils.openCamera(this) } +// val calendaryear = Calendar.getInstance() +// calendaryear.add(Calendar.YEAR, -14) + timeSelect.startDate.set(1922, 0, 1) +// timeSelect.endDate = calendaryear + binding.llBirthday.setOnClickListener { + RxKeyboardTool.hideSoftInput(this) + timeSelect.selectTime(binding.mBirthday) + } + sexType = if (binding.checkSex.isChecked) 2 else 1 + birthdayType = if (binding.checkBirthday.isChecked) 2 else 1 +// binding.mRadio.setOnCheckedChangeListener { group, checkedId -> +// when(checkedId){ +// R.id.mRadio1->birthdayType=1 +// R.id.mRadio2->birthdayType=2 +// +// } +// } + binding.bindingTv.setOnClickListener { + isBinding = true +// dialogChooseDevice.show() + turnToSaveBaseData() + + + } +// binding.mGroup.setOnCheckedChangeListener { group, checkedId -> +// when(checkedId){ +// R.id.mMale->sexType=1 +// R.id.mGirl->sexType=2 +// } +// } + binding.mName.addTextChangedListener(textListener) + + binding.mSubmit.setOnClickListener { + isBinding = false + turnToSaveBaseData() + //跳转注册 +// var bean =SimpleInfoBean() +// if( binding.mImage.tag!=null){ +// bean.avatar= binding.mImage.tag.toString() +// } +// bean.name=name +// bean.sex=sexType +// bundle.clear() +// bundle.putSerializable("bean",bean) +// RouteManager.goActRequest(ARouterUrl.REGIST_ACT,this,1000,bundle) + } + } + + /** + * 调用接口保存 + */ + private fun turnToSaveBaseData() { + + val birthDay = binding.mBirthday.text.toString().trim() + val name = binding.mName.text.toString().trim() +// if (name.isEmpty()) { +// isBinding = false +// ToastUtils.show(R.string.please_input_name) +// return +// } + if (TimeUtils.getAgeByBirth(birthDay) < 14) { + CommonToastUtils.showToast("需要年满14岁才可使用") + isBinding = false + return + } + val avatar = binding.mImage.tag + val datanal = avatar?.toString() ?: "" + val sexValue = if (binding.checkSex.isChecked) "2" else "1" + birthdayType = if (binding.checkBirthday.isChecked) 2 else 1 + //调用接口 + if (name.trim().isEmpty()) { + mViewModel.submit(datanal, null, sexValue, birthdayType.toString(), birthDay) + } else { + mViewModel.submit(datanal, name, sexValue, birthdayType.toString(), birthDay) + } + } + + override fun liveObserver() { + mViewModel.setBasic.observe(this) { + + //不管点击绑定还是完成都会去登录 + EventBus.getDefault().post(MyInfoEvent()) + mViewModel.login(phone, pwd) + + if (isBinding) { + return@observe + } + CommonToastUtils.showSucceedToast("信息设置成功") + } + + mViewModel.mLogin.observe(this) { + //登录成功请求用户token + mViewModel.getImUserSig("user_${it.data.id}") + } + + mViewModel.getImUserSig.observe(this) { + Log.e("simon", "login" + it.data) + TUILogin.login( + applicationContext, + 1400807230, + it.paramsData, + it.data, + object : TUICallback() { + override fun onSuccess() { + Log.e("simon", "onSuccess") + if (!isBinding) { //如果是直接点击完成,跳转到主页面 + ARouter.getInstance().build(ARouterUrl.MAIN_ACT).navigation() + RxActivityTool.finishAllActivity() + } else { //如果是去绑定设备,跳转到设备选择界面,同是给予标记,告诉该界面已经登录 + bundle.clear() + bundle.putBoolean("isLogin", true) + RouteManager.goAct(ARouterUrl.DEVICE_CHOICE, bundle) + } + } + + override fun onError(errorCode: Int, errorMessage: String?) { + Log.e("simon", "onError") + } + }) + } + } + + 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) { + var path = if (result[0].compressPath.isEmpty()) { + result[0].androidQToPath + } else { + result[0].compressPath + } + binding.mImage.setImage(this, path) + binding.mImage.tag = path + } + } + + 1000 -> { + finish() + } + } + } + } +} \ No newline at end of file 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 c6b9bf6..242a049 100644 --- a/app/src/main/java/com/zj365/dc/activity/MainActivity.kt +++ b/app/src/main/java/com/zj365/dc/activity/MainActivity.kt @@ -23,14 +23,6 @@ import com.lifesense.android.ble.core.serializer.AbstractMeasureData import com.lifesense.android.ble.device.fatscale.model.WeightMeasureData import com.tamsiree.rxkit.RxActivityTool import com.tamsiree.rxkit.RxSPTool -import com.tencent.imsdk.v2.V2TIMManager -import com.tencent.qcloud.tim.tuiofflinepush.notification.TUIUtils -import com.tencent.qcloud.tuicore.TUIConstants -import com.tencent.qcloud.tuicore.TUILogin -import com.tencent.qcloud.tuicore.event.ShowSystemMessageEvent -import com.tencent.qcloud.tuicore.interfaces.TUICallback -import com.tencent.qcloud.tuikit.tuichat.config.TUIChatConfigs -import com.tencent.qcloud.tuikit.tuiconversation.classicui.page.TUIConversationFragment import com.xty.base.act.BaseVmAct import com.xty.base.dialog.AppUpdateDialog import com.xty.base.vp2.VpAdapter @@ -46,6 +38,7 @@ import com.zj365.dc.R import com.zj365.dc.databinding.ActivityMainBinding import com.zj365.dc.fragment.DynamicManagementFrag import com.zj365.dc.fragment.HealthHomeFrag +import com.zj365.dc.fragment.MessageFragment import com.zj365.dc.fragment.MineFrag import com.zj365.dc.vm.MainVm import com.zj365.health.act.binddevice.BaseDeviceBindListAct @@ -81,7 +74,7 @@ class MainActivity : BaseVmAct(), Consumer { } private fun initUnreadCountReceiver() { - unreadCountReceiver = object : BroadcastReceiver() { + /* unreadCountReceiver = object : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { val unreadCount = intent.getLongExtra(TUIConstants.UNREAD_COUNT_EXTRA, 0) // if (unreadCount > 0) { @@ -97,7 +90,7 @@ class MainActivity : BaseVmAct(), Consumer { val unreadCountFilter = IntentFilter() unreadCountFilter.addAction(TUIConstants.CONVERSATION_UNREAD_COUNT_ACTION) LocalBroadcastManager.getInstance(this) - .registerReceiver(unreadCountReceiver as BroadcastReceiver, unreadCountFilter) + .registerReceiver(unreadCountReceiver as BroadcastReceiver, unreadCountFilter)*/ } private val listFragment by lazy { @@ -105,7 +98,8 @@ class MainActivity : BaseVmAct(), Consumer { HealthHomeFrag(), Fragment(), DynamicManagementFrag(), - TUIConversationFragment( + MessageFragment() + /*TUIConversationFragment( if (RxSPTool.getString(this, Const.UnReadSysMessageContentKey) .isNullOrEmpty() ) "用户预约提醒,新增用户提醒" @@ -114,7 +108,7 @@ class MainActivity : BaseVmAct(), Consumer { .isNullOrEmpty() ) Date().time.toString() else RxSPTool.getString(this, Const.UnReadSysMessageTimeKey) - ), + )*/, MineFrag() ) } @@ -127,13 +121,13 @@ class MainActivity : BaseVmAct(), Consumer { initBottomNav() addNv() // mViewModel.getVersionNew() - val loginStatus = V2TIMManager.getInstance().loginStatus +/* 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() + }*/ +// initUnreadCountReceiver() JPushInterface.setBadgeNumber(this, 0) // //前台空服务 // val service = RouteManager.getAny(ARouterUrl.NONE_SERVICE) as Service @@ -220,7 +214,7 @@ class MainActivity : BaseVmAct(), Consumer { override fun onResume() { super.onResume() - getUnReadMessage() +// getUnReadMessage() } override fun onNewIntent(intent: Intent?) { @@ -240,7 +234,7 @@ class MainActivity : BaseVmAct(), Consumer { "MainActivity", "OfflinePushConfigs.getOfflinePushConfigs().clickNotificationCallbackMode" ) - TUIUtils.handleOfflinePush( +/* TUIUtils.handleOfflinePush( intent ) { hasLogged -> if (hasLogged) { @@ -248,7 +242,7 @@ class MainActivity : BaseVmAct(), Consumer { } else { // finish() } - } + }*/ // } else { // val ext = intent.getStringExtra(TUIConstants.TUIOfflinePush.NOTIFICATION_EXT_KEY) // TUIUtils.handleOfflinePush(ext @@ -317,7 +311,7 @@ class MainActivity : BaseVmAct(), Consumer { } //未读消息操作 - mViewModel.countLive.observe(this) { + /* mViewModel.countLive.observe(this) { setUnreadcount(it.data.count) EventBus.getDefault() .post(ShowSystemMessageEvent(it.data.msg, it.data.time, it.data.count)) @@ -325,9 +319,9 @@ class MainActivity : BaseVmAct(), Consumer { RxSPTool.putString(this, Const.UnReadSysMessageContentKey, it.data.msg) RxSPTool.putString(this, Const.UnReadSysMessageTimeKey, it.data.time) } - } + }*/ - mViewModel.getImUserSig.observe(this) { + /*mViewModel.getImUserSig.observe(this) { Log.e("simon", it.data) TUILogin.login( applicationContext, @@ -345,7 +339,7 @@ class MainActivity : BaseVmAct(), Consumer { override fun onError(errorCode: Int, errorMessage: String?) { } }) - } + }*/ //获取用户设备信息网络请求返回 mViewModel.getUserEquipmentInformationization.observe(this) { 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 61d12ef..bf8dcfe 100644 --- a/app/src/main/java/com/zj365/dc/adapter/HealthMonitoringAdapter.kt +++ b/app/src/main/java/com/zj365/dc/adapter/HealthMonitoringAdapter.kt @@ -130,23 +130,29 @@ class HealthMonitoringAdapter( } } -// val calorie = healthMonitoringListBean.calorie -// if (!TextUtils.isEmpty(calorie) && healthMonitoringListBean.type == 4) { -// mTvCalorie.isVisible = true -// val calorieStr = "卡路里:${calorie}Kcal" -// mTvCalorie.text = setStrSpan( -// calorieStr, -// 11, -// ContextCompat.getColor( -// context, R.color.col_313 -// ), -// Typeface.BOLD, -// 0, -// calorieStr.length - 3 -// ) -// } else { -// mTvCalorie.isVisible = false -// } + val calorie = healthMonitoringListBean.calorie + if (!TextUtils.isEmpty(calorie) && healthMonitoringListBean.type == 4) { + val calorieStr = "卡路里:${calorie}Kcal" + mTvCalorie.text = calorieStr/*setStrSpan( + calorieStr, + 11, + ContextCompat.getColor( + context, R.color.col_7c7 + ), + Typeface.BOLD, + 0, + calorieStr.length - 3 + )*/ + } else { + 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/HomeMessageAdapter.kt b/app/src/main/java/com/zj365/dc/adapter/HomeMessageAdapter.kt new file mode 100644 index 0000000..b762f01 --- /dev/null +++ b/app/src/main/java/com/zj365/dc/adapter/HomeMessageAdapter.kt @@ -0,0 +1,17 @@ +package com.zj365.dc.adapter + +import com.chad.library.adapter.base.viewholder.BaseViewHolder +import com.xty.base.adapter.BaseAdapter +import com.xty.common.Dateutils +import com.xty.network.model.ScienceBean +import com.xty.network.model.SystemMsgBean +import com.zj365.dc.R + +class HomeMessageAdapter : BaseAdapter(R.layout.item_home_message) { + override fun convert(holder: BaseViewHolder, item: SystemMsgBean) { + holder.setText(R.id.tv_msg_title,item.title) + holder.setText(R.id.tv_msg_content,item.content) + holder.setText(R.id.tv_msg_time,Dateutils.formatTime(item.time,Dateutils.YYYY_MM_DD_HH_MM)) + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/zj365/dc/fragment/DynamicManagementFrag.kt b/app/src/main/java/com/zj365/dc/fragment/DynamicManagementFrag.kt index 1586ce6..c4cdbd6 100644 --- a/app/src/main/java/com/zj365/dc/fragment/DynamicManagementFrag.kt +++ b/app/src/main/java/com/zj365/dc/fragment/DynamicManagementFrag.kt @@ -2,6 +2,7 @@ package com.zj365.dc.fragment import android.annotation.SuppressLint import android.content.Intent +import android.graphics.Color import android.graphics.drawable.Drawable import android.os.Build import android.provider.Settings @@ -16,6 +17,7 @@ import androidx.lifecycle.MutableLiveData import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import cn.jpush.android.api.JPushInterface +import com.gyf.immersionbar.ImmersionBar import com.tamsiree.rxkit.RxTimeTool import com.xty.base.fragment.BaseVmFrag import com.xty.base.utils.UserInfoDefin @@ -149,9 +151,10 @@ class DynamicManagementFrag : BaseVmFrag() { "心率", "血氧", "呼吸率", "体温", "步数", "睡眠", "血压", "血糖", "心电", "尿酸", "血脂" ) + @SuppressLint("ResourceType") override fun initView() { super.initView() - statusBar(binding.statusBar) + // statusBar(binding.statusBar) isShrinkage = MMkvHelper.getBoolean(Const.Health_Monitoring_Shrinkage + MMkvHelper.getLong(Const.USER_ID)) @@ -858,9 +861,9 @@ class DynamicManagementFrag : BaseVmFrag() { } binding.mHeader.mWearManager.text = "绑定手表" - binding.mHeader.mBindState.visibility = View.VISIBLE - binding.mHeader.mConnectStatu.visibility = View.INVISIBLE - binding.mHeader.mWatchType.visibility = View.INVISIBLE + 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( diff --git a/app/src/main/java/com/zj365/dc/fragment/MessageFragment.kt b/app/src/main/java/com/zj365/dc/fragment/MessageFragment.kt new file mode 100644 index 0000000..c8ead98 --- /dev/null +++ b/app/src/main/java/com/zj365/dc/fragment/MessageFragment.kt @@ -0,0 +1,48 @@ +package com.zj365.dc.fragment + +import android.graphics.Color +import android.view.View +import androidx.recyclerview.widget.LinearLayoutManager +import com.xty.base.fragment.BaseFragList +import com.zj365.dc.adapter.HomeMessageAdapter +import com.zj365.dc.databinding.FragMessageBinding +import com.zj365.dc.vm.MessageVm + +class MessageFragment : BaseFragList() { + + val binding by lazy { FragMessageBinding.inflate(layoutInflater) } + + val adapter by lazy { HomeMessageAdapter() } + override fun initAdapter() { + binding.mRecycle.layoutManager= LinearLayoutManager(requireContext()) + binding.mRecycle.adapter=adapter + } + + override fun initView() { + super.initView() + statusBar(binding.title.mView) + binding.title.mTvTitle.text="消息" + binding.title.mTvRight.text="全部已读" + binding.title.mTvRight.setTextColor(Color.parseColor("#02C191")) + binding.title.mTvRight.visibility = View.VISIBLE + binding.title.mIvBack.visibility = View.INVISIBLE + binding.title.mTvRight.setOnClickListener { + + } + initAdapter() + setRecycleRefresh(binding.mRecycle,binding.mRefresh) + } + + override fun refresh() { + mViewModel.getSystemMsg() + } + + override fun setViewModel()= MessageVm() + + override fun observer() { + + } + + override fun setLayout()=binding.root + +} \ No newline at end of file diff --git a/app/src/main/java/com/zj365/dc/fragment/MineFrag.kt b/app/src/main/java/com/zj365/dc/fragment/MineFrag.kt index 5e10ee3..a563c97 100644 --- a/app/src/main/java/com/zj365/dc/fragment/MineFrag.kt +++ b/app/src/main/java/com/zj365/dc/fragment/MineFrag.kt @@ -4,7 +4,6 @@ import android.os.Build import android.text.TextUtils import android.view.View import androidx.annotation.RequiresApi -import com.tencent.qcloud.tuicore.event.ShowSystemMessageEvent import com.xty.base.fragment.BaseVmFrag import com.xty.common.* import com.xty.common.arouter.ARouterUrl @@ -56,7 +55,7 @@ class MineFrag : BaseVmFrag() { mViewModel.getMySetting() } - binding.mImage.setOnClickListener { + binding.clInfo.setOnClickListener { if(MMkvHelper.getLong(Const.USER_ID).toString() == "0"){ RouteManager.goAct(ARouterUrl.LOGIN_ACT) }else{ @@ -68,62 +67,37 @@ class MineFrag : BaseVmFrag() { bundle.clear() bundle.putSerializable("user", user) RouteManager.goAct(ARouterUrl.MY_INTEGRAL, bundle) - - /* bundle.clear() - bundle.putString("url","https://blog.csdn.net/wenmang_star/article/details/72911605") - RouteManager.goAct( ARouterUrl.WEB_ACT) -*/ } binding.llAboutUs.setOnClickListener { RouteManager.goAct(ARouterUrl.ABOUT) } - /* binding.mTvMsg.setOnClickListener { -// RouteManager.goAct(ARouterUrl.MESSAGE) - (requireActivity() as MainActivity).setCurrentTab(2) - }*/ + + binding.llHealthRecord.setOnClickListener { + bundle.putString("id", user?.id) + RouteManager.goAct(ARouterUrl.HEALTH_RECORD, bundle) + } + binding.llDataComparsion.setOnClickListener { + bundle.clear() + bundle.putString("id", user?.id) + RouteManager.goAct(ARouterUrl.COMPARE_PAGE_DATA_ACT, bundle) + } + binding.llSetting.setOnClickListener { bundle.clear() bundle.putSerializable("user", user) bundle.putBoolean("isDemonstrate", (requireActivity() as MainActivity).isDemonstrate) RouteManager.goAct(ARouterUrl.SETTING, bundle) } -/* binding.mTvOrgan.setOnClickListener {//我的机构 - bundle.clear() -// bundle.putSerializable("user", user) - RouteManager.goAct(ARouterUrl.MY_ORGAN, bundle) - }*/ + binding.llOrder.setOnClickListener { bundle.clear() bundle.putString("id", user?.id) RouteManager.goAct(ARouterUrl.ORDER_LIST, bundle) } - /*binding.mllmProg.setOnClickListener { - onEventObject(requireContext(), UmengEventId.HealthProgrammes, "我的页面") - RouteManager.goAct(ARouterUrl.MY_PROG) - }*/ + binding.llFamilyHealth.setOnClickListener { RouteManager.goAct(ARouterUrl.FAMILY) } - /*binding.mFamily.setOnClickListener { - RouteManager.goAct(ARouterUrl.FAMILY) - }*/ - /* binding.mTvAppoint.setOnClickListener { - if ((requireActivity() as MainActivity).isDemonstrate) { - dialogBind.show() - return@setOnClickListener - } - RouteManager.goAct(ARouterUrl.MY_APPOINT) - }*/ - /* binding.mKeeper.setOnClickListener { -// if ((requireActivity() as MainActivity).isDemonstrate ){ -// return@setOnClickListener -// } - CommonUtils.getMyUserId()?.let { - bundle.clear() - bundle.putString("fromUserId", it) - RouteManager.goAct(ARouterUrl.MY_KEEPER, bundle) - } - }*/ binding.llWearableDevice.setOnClickListener { CommonUtils.getMyUserInfo()?.let { if (it.watchName == null) { @@ -137,32 +111,9 @@ class MineFrag : BaseVmFrag() { } } } - /*binding.mSign.setOnClickListener { - if ((requireActivity() as MainActivity).isDemonstrate) { - RouteManager.goAct(ARouterUrl.BASE_INFO_CHANGE, bundle) - return@setOnClickListener - } - user?.let { - if (it.sign == 0) { - mViewModel.sign() - } - } - }*/ binding.mInfo.setOnClickListener { RouteManager.goAct(ARouterUrl.BASE_INFO_CHANGE, bundle) } - /* //邀请记录 - binding.tvLnvitationMessage.setOnClickListener { - bundle.clear() - bundle.putSerializable("user", user) - RouteManager.goAct(ARouterUrl.LNVITATION_MESSAGE, bundle) - } - //邀请好友 - binding.llInviteFriends.setOnClickListener { - bundle.clear() - bundle.putSerializable("user", user) - RouteManager.goAct(ARouterUrl.INVITE_FRIENDS, bundle) - }*/ mViewModel.getNesProg("") } @@ -239,12 +190,12 @@ class MineFrag : BaseVmFrag() { binding.mSign.text = "已签到" user!!.sign = 1 }*/ - mViewModel.countLive.observe(this) { +/* mViewModel.countLive.observe(this) { // setBadge(it.data.count) (requireActivity() as MainActivity).setUnreadcount(it.data.count) EventBus.getDefault() .post(ShowSystemMessageEvent(it.data.msg, it.data.time, it.data.count)) - } + }*/ //个人设置信息获取 mViewModel.settingLive.observe(this) { if (null == it.data) return@observe diff --git a/app/src/main/java/com/zj365/dc/vm/InfoSimpleVm.kt b/app/src/main/java/com/zj365/dc/vm/InfoSimpleVm.kt new file mode 100644 index 0000000..5a1af46 --- /dev/null +++ b/app/src/main/java/com/zj365/dc/vm/InfoSimpleVm.kt @@ -0,0 +1,123 @@ +package com.zj365.dc.vm + +import androidx.lifecycle.MutableLiveData +import com.tamsiree.rxkit.RxTool +import com.xty.base.vm.BaseVm +import com.xty.common.Const +import com.xty.common.MMkvHelper +import com.xty.common.util.CommonToastUtils +import com.xty.network.model.ImageUploadBean +import com.xty.network.model.MainBean +import com.xty.network.model.NotAccepted +import com.xty.network.model.RespBody +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.async +import kotlinx.coroutines.withContext +import okhttp3.Headers +import okhttp3.MultipartBody +import org.json.JSONObject +import java.io.File + +class InfoSimpleVm : BaseVm() { + + val setBasic by lazy { MutableLiveData>() } + val mLogin by lazy { MutableLiveData>() } + val getImUserSig by lazy { MutableLiveData>() } + + fun login(account: String, pwd: String) { + startHttp { + val json = JSONObject() + json.put("phone", account) + json.put("userPwd", RxTool.Md5(pwd)) + //json.put("userPwd", pwd) + val login = apiInterface().login(retrofits.getRequestBody(json.toString())) + if (login.body()?.code == 500) { + login.body()?.msg?.let { CommonToastUtils.showToast(it) } + return@startHttp + } + saveToken(login.raw().headers) + val bodys = login.body() as RespBody + + MMkvHelper.put(Const.USER_ID, bodys.data.id) + bodys.getCodeStatus(mLogin, nowData, loading) + } + } + + private fun saveToken(headers: Headers) { + val headerIterator = headers.iterator() + while (headerIterator.hasNext()) { + val next = headerIterator.next() + if (Const.Auth_Token == next.first) MMkvHelper.put(Const.Auth_Token, next.second) + + if (Const.Auth_Id == next.first) MMkvHelper.put(Const.Auth_Id, next.second) + } + } + + fun getImUserSig(identifier: String) { + startHttp { + val imUserSig = apiInterface().getImUserSig(identifier) + imUserSig.body()?.getCodeStatus(getImUserSig, nowData, paramsData = identifier) + } + } + + fun submit(path: String, name: String?, sex: String, birthDaytype: String, birthDay: String) { + startHttp { + withContext(Dispatchers.IO) { + var fileId = "" + if (path.isNullOrEmpty()) { + + } else { + val image = async { uploadImage(path) } + val await = image.await() + fileId = await.fileId + } + val upload = async { uploadInfo(name, sex, fileId, birthDaytype, birthDay) } + val await = upload.await() //个人信息上传 + if (await.code != 0) { + CommonToastUtils.showToast(await.msg) + } + } + } + } + + private suspend fun uploadInfo( + name: String?, + sex: String, + fileId: String = "", + birthdayType: String, + birthDay: String + ): RespBody { + val json = JSONObject() + json.put("name", name) + json.put("sex", sex) + if (sex == "1") { + json.put("height", "170") + json.put("weight", "65") + } else { + json.put("height", "160") + json.put("weight", "49") + } + + json.put("birthday", birthDay) + json.put("birthdayType", birthdayType) + + if (!fileId.isNullOrEmpty()) { + json.put("avatarUrl", fileId) + } + val rb = retrofits.getRequestBody(json.toString()) + val body = apiInterface().setUpdateUser(rb) + body.getCodeStatus(setBasic, nowData) + return body + } + + private suspend fun uploadImage(path: String): ImageUploadBean { + val f = File(path) + val fileRb = MultipartBody.Part.createFormData( + "file", + f.name, + retrofits.getMultiPartFileRb(f) + ) + val body = apiInterface().uploadImage(fileRb) + return body.data + } +} \ No newline at end of file diff --git a/app/src/main/java/com/zj365/dc/vm/MessageVm.kt b/app/src/main/java/com/zj365/dc/vm/MessageVm.kt new file mode 100644 index 0000000..04b8cf1 --- /dev/null +++ b/app/src/main/java/com/zj365/dc/vm/MessageVm.kt @@ -0,0 +1,10 @@ +package com.zj365.dc.vm + +import com.xty.base.vm.BaseVm + +class MessageVm(): BaseVm() { + + fun getSystemMsg(){ + + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_wear_bg_new.xml b/app/src/main/res/drawable/shape_wear_bg_new.xml index 8f38fcc..889c99a 100644 --- a/app/src/main/res/drawable/shape_wear_bg_new.xml +++ b/app/src/main/res/drawable/shape_wear_bg_new.xml @@ -2,7 +2,7 @@ + android:color="@color/col_02c"/> \ No newline at end of file diff --git a/app/src/main/res/layout/act_info_simple.xml b/app/src/main/res/layout/act_info_simple.xml new file mode 100644 index 0000000..5977f0e --- /dev/null +++ b/app/src/main/res/layout/act_info_simple.xml @@ -0,0 +1,291 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/frag_dynamic_management.xml b/app/src/main/res/layout/frag_dynamic_management.xml index b9c6e9e..7a5870c 100644 --- a/app/src/main/res/layout/frag_dynamic_management.xml +++ b/app/src/main/res/layout/frag_dynamic_management.xml @@ -4,33 +4,30 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="#F2F6F7" - android:orientation="vertical"> + android:orientation="vertical" + android:background="@color/white" + > - @@ -94,6 +91,7 @@ android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" + android:layout_marginTop="@dimen/dp_30" app:srlAccentColor="@color/white"> + android:layout_height="match_parent" + > + android:src="@color/white"/> + + @@ -32,14 +35,15 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" - android:layout_marginLeft="@dimen/dp_15" - android:text="我" - android:textColor="@color/black" - android:textSize="@dimen/dp_18" + android:layout_marginLeft="@dimen/dp_14" + android:text="BMI 24" + android:textColor="@color/col_313" + android:textSize="@dimen/sp_17" android:textStyle="bold" app:layout_constraintLeft_toRightOf="@+id/mHeaderImage" app:layout_constraintTop_toTopOf="parent" /> + + + + app:layout_constraintTop_toTopOf="@+id/mHeaderImage" /> + + + + + + + + + + + + @@ -133,7 +209,7 @@ android:layout_marginTop="@dimen/dp_16" android:layout_marginEnd="@dimen/dp_14" android:orientation="horizontal" - android:visibility="visible" + android:visibility="gone" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@+id/mUserInfoLayout"> @@ -171,9 +247,9 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/dp_14" - android:layout_marginTop="@dimen/dp_16" android:layout_marginRight="@dimen/dp_14" android:layout_marginBottom="@dimen/dp_6" + android:layout_marginTop="@dimen/dp_12" android:background="@drawable/shape_8round_white" android:orientation="vertical" android:paddingLeft="@dimen/dp_16"> diff --git a/app/src/main/res/layout/frag_message.xml b/app/src/main/res/layout/frag_message.xml new file mode 100644 index 0000000..be11b72 --- /dev/null +++ b/app/src/main/res/layout/frag_message.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/frag_mine.xml b/app/src/main/res/layout/frag_mine.xml index d2cd689..2f6dc73 100644 --- a/app/src/main/res/layout/frag_mine.xml +++ b/app/src/main/res/layout/frag_mine.xml @@ -39,66 +39,78 @@ android:background="@color/white" app:layout_constraintLeft_toLeftOf="parent"> - + app:layout_constraintTop_toBottomOf="@+id/view"> + + + + + + + + + - - - + app:layout_constraintBottom_toBottomOf="@+id/cl_info" + app:layout_constraintTop_toTopOf="@+id/cl_info" /> + app:layout_constraintTop_toBottomOf="@+id/cl_info"> diff --git a/app/src/main/res/layout/item_home_message.xml b/app/src/main/res/layout/item_home_message.xml new file mode 100644 index 0000000..65d0af5 --- /dev/null +++ b/app/src/main/res/layout/item_home_message.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-xxhdpi/bg_health_header_two.png b/app/src/main/res/mipmap-xxhdpi/bg_health_header_two.png new file mode 100644 index 0000000..799d561 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/bg_health_header_two.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/bg_health_main_two.png b/app/src/main/res/mipmap-xxhdpi/bg_health_main_two.png new file mode 100644 index 0000000..9b3ced4 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/bg_health_main_two.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_health_time.png b/app/src/main/res/mipmap-xxhdpi/icon_health_time.png new file mode 100644 index 0000000..265d937 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_health_time.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_msg_system.png b/app/src/main/res/mipmap-xxhdpi/icon_msg_system.png new file mode 100644 index 0000000..47342ba Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_msg_system.png differ diff --git a/base/src/main/res/values/colors.xml b/base/src/main/res/values/colors.xml index ce32402..67aa375 100644 --- a/base/src/main/res/values/colors.xml +++ b/base/src/main/res/values/colors.xml @@ -36,4 +36,6 @@ #3AD9BD #8A000000 #F2F6F7 + #00000000 + #f74c31 \ No newline at end of file diff --git a/common/src/main/java/com/xty/common/Dateutils.java b/common/src/main/java/com/xty/common/Dateutils.java index 5b661fd..dadfd9d 100644 --- a/common/src/main/java/com/xty/common/Dateutils.java +++ b/common/src/main/java/com/xty/common/Dateutils.java @@ -11,6 +11,8 @@ public class Dateutils { public static final String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss"; public static final String YYYY_MM_DD_HH = "yyyy-MM-dd HH"; + + public static final String YYYY_MM_DD_HH_MM = "yyyy-MM-dd HH:mm"; public static String yearToMonth(String dateString){ // 将字符串解析为日期对象 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 e55cee0..58c49d6 100644 --- a/common/src/main/java/com/xty/common/arouter/ARouterUrl.kt +++ b/common/src/main/java/com/xty/common/arouter/ARouterUrl.kt @@ -151,7 +151,7 @@ class ARouterUrl { const val MY_INTEGRAL = "/mine/com/zj365/dc/mime/act/MyIntegralAct" const val ADD_INTEGRAL = "/mine/com/zj365/dc/mime/act/AddIntegralAct" const val SCORE_RULE = "/mine/com/zj365/dc/mime/act/ScoreRuleAct" - const val SETTING = "/mine/com/zj365/dc/mime/act/SettingAct" + const val SETTING = "/mine/com/zj365/dc/mime/act/SettingNewAct" const val ACCOUNT_SAFE = "/mine/com/zj365/dc/mime/act/AccountSafeAct" const val BASE_INFO_CHANGE = "/mine/com/zj365/dc/mime/act/BaseInfoChangeAct" const val MY_INFO = "/mine/com/zj365/dc/mime/act/MyInfoAct" diff --git a/common/src/main/res/drawable/shape_r15_storke_25c.xml b/common/src/main/res/drawable/shape_r15_storke_25c.xml index 1fda3cf..f6c45d3 100644 --- a/common/src/main/res/drawable/shape_r15_storke_25c.xml +++ b/common/src/main/res/drawable/shape_r15_storke_25c.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/common/src/main/res/mipmap-xhdpi/arrow_right.png b/common/src/main/res/mipmap-xhdpi/arrow_right.png new file mode 100644 index 0000000..aa95aac Binary files /dev/null and b/common/src/main/res/mipmap-xhdpi/arrow_right.png differ diff --git a/common/src/main/res/mipmap-xhdpi/ic_app_time.jpg b/common/src/main/res/mipmap-xhdpi/ic_app_time.jpg deleted file mode 100644 index 6f0746f..0000000 Binary files a/common/src/main/res/mipmap-xhdpi/ic_app_time.jpg and /dev/null differ diff --git a/common/src/main/res/mipmap-xhdpi/ic_app_time.png b/common/src/main/res/mipmap-xhdpi/ic_app_time.png new file mode 100644 index 0000000..81dcb7e Binary files /dev/null and b/common/src/main/res/mipmap-xhdpi/ic_app_time.png differ diff --git a/common/src/main/res/mipmap-xhdpi/xingbie_nan.png b/common/src/main/res/mipmap-xhdpi/xingbie_nan.png index e74e3b1..bd26b9d 100644 Binary files a/common/src/main/res/mipmap-xhdpi/xingbie_nan.png and b/common/src/main/res/mipmap-xhdpi/xingbie_nan.png differ diff --git a/common/src/main/res/mipmap-xhdpi/xingbie_nv.png b/common/src/main/res/mipmap-xhdpi/xingbie_nv.png index 0384a5e..0077974 100644 Binary files a/common/src/main/res/mipmap-xhdpi/xingbie_nv.png and b/common/src/main/res/mipmap-xhdpi/xingbie_nv.png differ diff --git a/app/src/main/java/com/zj365/dc/MainActivity.kt b/health/consumer-rules.pro similarity index 100% rename from app/src/main/java/com/zj365/dc/MainActivity.kt rename to health/consumer-rules.pro diff --git a/health/src/main/AndroidManifest.xml b/health/src/main/AndroidManifest.xml index 1b28616..49573a4 100644 --- a/health/src/main/AndroidManifest.xml +++ b/health/src/main/AndroidManifest.xml @@ -216,6 +216,19 @@ android:name="com.zj365.health.act.datamanage.TZhongDataManageAct" android:launchMode="singleTop" android:screenOrientation="portrait" /> + + + + + \ No newline at end of file diff --git a/health/src/main/assets/forest.mp3 b/health/src/main/assets/forest.mp3 new file mode 100644 index 0000000..832436f Binary files /dev/null and b/health/src/main/assets/forest.mp3 differ diff --git a/health/src/main/assets/安瑜无创血糖趋势监测功能说明.html b/health/src/main/assets/安瑜无创血糖趋势监测功能说明.html new file mode 100644 index 0000000..2168126 --- /dev/null +++ b/health/src/main/assets/安瑜无创血糖趋势监测功能说明.html @@ -0,0 +1,893 @@ +

޴ѪƼ⹦˵

 

һǰ

1ʹöһ룬ͨ޴ѪƼ

2ͨû7ÿʱ䲻8Сʱ

  3ʱҪ21ѪʵⲢϴappȷʱǰ30Ӷֱ7δ21ϴģԶ˳ֱһϴѪǽģڽģɺ1СʱʼһѪ

4ÿһǰ1СʱѪƽֵ8ϵͳû7-8֮Ѫƽֵ

5޴ѪƼʵѪԼ20%ǰұ׼ڹұ׼15%

 

ѪǼԭ

ûѪѪѹģΪû721ѪݽûѪģͨ˹㷨ûֱÿСʱƽѪ

 

ûѪǽģ21ʱҪ

121ʱҪ

630    730    800

830    900    930

1000   1100   1200

1300   1400   1500

1600   1700   1830

1900   1930   2000

2030   2100   2200

2ÿѪDzʱʱǰ20

3ûÿɼһݼappϴҲһʱϴ

4ʱֱ¼ѪΪʵݣȷûģ͵׼ȷ

5ģɺappѪֵʵѪֵнϴڳƫʱٽģУ׼

6Ѫûÿ²ɼ4ѪУ׼һѪ

 

ġѪϴ˵

1Ѫϴʱѡڣѡ䣬ѡʱ䣻

221䣬ÿϴһݣϴɺ´βٴѡ䣻

3ϴʱһϴݣһʱδֱʱϵͳʾʱδϴɹʱݾϴ´νϴδֱʱεݼɣ

4ûʵѪDzѡոǰͺ˯ǰ

5ÿտϴݣ7ϴ21ݡ

 

\ No newline at end of file diff --git a/health/src/main/assets/血压校准流程和方法.html b/health/src/main/assets/血压校准流程和方法.html new file mode 100644 index 0000000..2f25e8d --- /dev/null +++ b/health/src/main/assets/血压校准流程和方法.html @@ -0,0 +1,849 @@ +

ѪѹУ׼׼

 

һΪʲôҪѪѹУ׼

appѪѹֱֱֵӲɼǸûѪݽûѪѹģͨ˹㷨Ѫѹ쳣ûһʱѪѹУ׼ԱٽԼĸѪѹģδУ׼ѪѹappѪѹʵѪѹֵܻнϴ

 

ʲôʱѪѹУ׼

1ȷѪѹûֱѪѹʵѪѹ10%ûֱһʱѪѹģУ׼

2һУ׼APPѪѹʵѪѹнϴٽ1-2ѪѹУ׼

3ѪѹûÿУ׼һѪѹ

 

ѪѹУ׼

1ѪѹȺѪѹƫδҩȺ

ȷѪѹƺֱͬһֱֱۣе£ɼ 4 ʱεʵѪѹֵ

6-8

12-14

5-7

④ 8-10

4 ʱʹѪѹƸ1 ݣ¼òʱӦѪѹֵɲ󣬽롰褽 APP ѪѹУ׼ҳ¼ݣȷύ30 ӼѪѹУ׼IJ

 

2ѪѹҩûѪѹУ׼̣

ȷѪѹƺֱͬһֱֱۣе£ɼ 4 ʱεʵѪѹֵ

ϷýѪѹҩû

ٷѪѹҩǰ 1 Сʱ

ڷѪѹҩ 1-2 Сʱ

5-7

④ 8-10

 

ýѪѹҩû

峿 6-8

ڷѪѹҩǰ 1 Сʱ

۷Ѫѹҩ 1-2 Сʱ

④ 8-10

 

ϷýѪѹҩû

峿 6-8

12-14

۷Ѫѹҩǰ 1 Сʱ

④Ѫѹҩ 1-2 Сʱ

 

νѪѹҩû

ٵһηѪѹҩǰ 1 Сʱ

ڵһηѪѹҩ 1-2 Сʱ

۵ڶηѪѹҩǰ 1 Сʱ

④ڶηѪѹҩ 1-2 Сʱ

 

4 ʱʹѪѹƸ1 ݣ¼òʱӦѪѹֵɲ󣬽롰褽 APP ѪѹУ׼ҳ¼ݣȷύ30 ӼѪѹУ׼IJ

\ No newline at end of file diff --git a/health/src/main/res/layout/frag_boold_fat.xml b/health/src/main/res/layout/frag_boold_fat.xml index 2cb5422..233e826 100644 --- a/health/src/main/res/layout/frag_boold_fat.xml +++ b/health/src/main/res/layout/frag_boold_fat.xml @@ -152,7 +152,7 @@ android:layout_height="wrap_content" android:layout_marginLeft="@dimen/dp_9" android:text="续费" - android:textColor="@color/col_25c" + android:textColor="@color/col_02c" android:textSize="@dimen/sp_12" android:textStyle="bold" android:visibility="gone" /> @@ -168,7 +168,7 @@ android:background="@drawable/shape_r15_storke_25c" android:gravity="center" android:text="血脂校准" - android:textColor="@color/col_25c" + android:textColor="@color/col_02c" android:textSize="@dimen/sp_13" />
diff --git a/mine/.gitignore b/mine/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/mine/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/mine/build.gradle b/mine/build.gradle new file mode 100644 index 0000000..634f1a6 --- /dev/null +++ b/mine/build.gradle @@ -0,0 +1,73 @@ +plugins { + id 'com.android.library' + id 'org.jetbrains.kotlin.android' + id 'kotlin-kapt' +} + + +def androidId = rootProject.ext.defaultSetting +def rely = rootProject.ext.relyOn +def imagePrefix =rootProject.ext.image_preifx +android { + compileSdkVersion androidId.compileSdk + + defaultConfig { + minSdkVersion androidId.minSdk + targetSdkVersion androidId.targetSdk + versionCode androidId.versionCode + versionName androidId.versionName + + kapt { + arguments { + arg("AROUTER_MODULE_NAME", project.getName()) + } + } + ndk{ + moduleName "libnew_native_libe" + ldLibs "log" + abiFilters "armeabi-v7a","arm64-v8a" + } + + + } + + buildTypes { + release { + buildConfigField("String","url","\"${url.release_url}\"") + buildConfigField("String", "image_prefix","\"${imagePrefix.release_url}\"") + + buildConfigField("Boolean","isRelease",String.valueOf(true)) + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + debug{ + buildConfigField("String","url","\"${url.debug_url}\"") + + buildConfigField("Boolean","isRelease",String.valueOf(false)) + buildConfigField("String", "image_prefix","\"${imagePrefix.debug_url}\"") + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + viewBinding{ + enabled=true + } + + kotlinOptions{ + jvmTarget="1.8" + } +} + +repositories { + flatDir { + dirs 'libs' + } +} +dependencies { + api project(':base') + implementation (name: 'ycbtsdk-release', ext: 'aar') + kapt rely.arouter_compiler +} \ No newline at end of file diff --git a/mine/consumer-rules.pro b/mine/consumer-rules.pro new file mode 100644 index 0000000..e69de29 diff --git a/mine/libs/ycbtsdk-release.aar b/mine/libs/ycbtsdk-release.aar new file mode 100644 index 0000000..3fc9f43 Binary files /dev/null and b/mine/libs/ycbtsdk-release.aar differ diff --git a/mine/proguard-rules.pro b/mine/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/mine/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/mine/src/main/assets/word_rule.html b/mine/src/main/assets/word_rule.html new file mode 100644 index 0000000..05e3254 --- /dev/null +++ b/mine/src/main/assets/word_rule.html @@ -0,0 +1,327 @@ +

1、如何获取积分
1.1新手注册,完善个人资料:+50分(仅1次)
1.2坚持佩戴,登录app同步数据:每天+10分
1.3分享日报/周报/月报:每次+10分,一天限一次
1.4上传数据:每次+10分,一天限一次

2、积分使用
1.积分可进行服务费续费抵扣,每20积分抵1元服务费
2.在积分商城兑换礼品(此功能暂未开放,敬请期待)

 

\ No newline at end of file diff --git a/mine/src/main/java/com/zj365/mime/act/SettingAct.kt b/mine/src/main/java/com/zj365/mime/act/SettingAct.kt index c43e4b7..383cab2 100644 --- a/mine/src/main/java/com/zj365/mime/act/SettingAct.kt +++ b/mine/src/main/java/com/zj365/mime/act/SettingAct.kt @@ -25,7 +25,6 @@ import org.greenrobot.eventbus.EventBus /** * 我的设置 */ -@Route(path = ARouterUrl.SETTING) class SettingAct : BaseVmAct() { val binding by lazy { ActSettingBinding.inflate(layoutInflater) } diff --git a/mine/src/main/java/com/zj365/mime/act/SettingNewAct.kt b/mine/src/main/java/com/zj365/mime/act/SettingNewAct.kt new file mode 100644 index 0000000..d7eefd9 --- /dev/null +++ b/mine/src/main/java/com/zj365/mime/act/SettingNewAct.kt @@ -0,0 +1,152 @@ +package com.zj365.mime.act + +import android.app.Service +import android.content.Intent +import com.alibaba.android.arouter.facade.annotation.Route +import com.tamsiree.rxkit.RxActivityTool +import com.xty.base.act.BaseVmAct +import com.xty.common.Const +import com.xty.common.MMkvHelper +import com.xty.common.arouter.ARouterUrl +import com.xty.common.arouter.RouteManager +import com.xty.common.bracelet.YCBBlueConnectHelper +import com.xty.common.event.BlueToothConnectEvent +import com.xty.common.work.MyWorkManger +import com.xty.network.MyRetrofit +import com.xty.network.model.SettingBean +import com.zj365.mime.R +import com.zj365.mime.databinding.ActSettingNewBinding +import com.zj365.mime.vm.SettingVm +import com.zj365.mime.weight.FactorySettingDialog +import org.greenrobot.eventbus.EventBus + +@Route(path = ARouterUrl.SETTING) +class SettingNewAct: BaseVmAct() { + val binding by lazy { ActSettingNewBinding.inflate(layoutInflater) } + + private val logOutDialog by lazy { + FactorySettingDialog(this, getString(R.string.dialog_logout)) { + logoOut() + } + } + + var user: SettingBean.User? = null + + private var destStr = """ + 一旦您注销安瑜健康账号后,您的安瑜健康APP将会被清除账号信息,请知悉并谨慎操作! + 注销安瑜健康账号前,请确保您的账号符合以下注销条件: + 1、账号处于安全状态 + 您的账号没有被盗、被封等风险(最近15天账号未在其他设备登录) + 2、其他关联用户解绑 + 您的账号已经解除对其他安瑜手表佩戴用户的关注与绑定 + 3、安瑜手表解绑 + 您的账号已经解除对安瑜手表的绑定 + 4、账号不可找回 + 注销后,账号绑定的信息将被释放,账号无法登录安瑜健康APP + """.trimIndent() + + private val destAccount by lazy { + FactorySettingDialog(this, destStr) { + //确认解除绑定 + user?.let { + mViewModel.destAccount(it.id.toString()) + } + } + } + + override fun initView() { + super.initView() + statusBar(binding.title.mView) + binding.title.mTvTitle.text ="设置" + binding.title.mIvBack.setOnClickListener { + finish() + } + + binding.tvLogout.setOnClickListener { + logOutDialog.show() + } + + binding.mTvModifyPwd.setOnClickListener { + RouteManager.goAct(ARouterUrl.CHANGE_PWD) + + } + + binding.mTvPrivacy.setOnClickListener { + + bundle.clear() + bundle.putString("title", "隐私政策") + bundle.putBoolean("isAgree", false) + bundle.putString("url","https://auprty.com/app/static/app/privacy.html") + RouteManager.goAct(ARouterUrl.AGREEMNT_READ_WEB_ACT, bundle) + + } + + binding.mTvUserAgree.setOnClickListener { + + bundle.clear() + bundle.putString("title", "用户协议") + bundle.putInt("type", Const.AGREEMENT_1) + bundle.putBoolean("isAgree", false) + RouteManager.goAct(ARouterUrl.RICH_TEXT, bundle) + + } + + binding.mTvSignOut.setOnClickListener { + destAccount.changeTextSetting() + destAccount.show() + } + } + + override fun initData() { + super.initData() + var intentData = intent.extras!!.getSerializable("user") + + if (null != intentData) user = intentData as SettingBean.User + } + + override fun liveObserver() { + + mViewModel.destLive.observe(this) { + logoOut() + } + } + + override fun setLayout() = binding.root + + + private fun logoOut() { + //退出音乐播放器 + var service= RouteManager.getAny(ARouterUrl.MUSIC_SERVICE) as Service + var intent= Intent(this,service::class.java) + intent.putExtra("close","") + stopService(intent) + //结束mqtt服务 +// var mqttService=RouteManager.getAny(ARouterUrl.MQTT_SERVICE) as Service +// var mqttIntent= Intent(this,mqttService::class.java) +// mqttIntent.putExtra("close","") + +// stopService(mqttIntent) +// //结束前台服务 +// val noneService = RouteManager.getAny(ARouterUrl.NONE_SERVICE) as Service +// var noneIntent=Intent(this,noneService::class.java) +// stopService(noneIntent) + + MyWorkManger.cancelWork() + Const.mainLiveData?.value?.apply { + user?.bluetooth = ""//将蓝牙信息清空 + } + + MMkvHelper.remove(Const.Watch_Device_Type)//清除手表型号 + Const.watchType = -1//将手表型号恢复初始值 + Const.battery = ""//电池信息恢复初始值 + + MyRetrofit.get().BLUETOOTH_MAC = ""//清除蓝牙信息 + MMkvHelper.remove(Const.Blue_Tooth)//清除蓝牙信息 + MMkvHelper.clearUserInfo()//清除用户登录信息 + YCBBlueConnectHelper.disconnect()//断开蓝牙连接 + YCBBlueConnectHelper.cancelTimer()//断开重连定时器 + EventBus.getDefault().post(BlueToothConnectEvent())//刷新蓝牙连接信息 + RouteManager.goAct(ARouterUrl.LOGIN_ACT) + RxActivityTool.finishAllActivity() + } +} \ No newline at end of file diff --git a/mine/src/main/java/com/zj365/mime/vm/SettingVm.kt b/mine/src/main/java/com/zj365/mime/vm/SettingVm.kt index 9fc4b0c..d491456 100644 --- a/mine/src/main/java/com/zj365/mime/vm/SettingVm.kt +++ b/mine/src/main/java/com/zj365/mime/vm/SettingVm.kt @@ -128,4 +128,11 @@ class SettingVm : BaseVm() { inviteCount.getCodeStatus(inviteCountLive, nowData) } } + + fun destAccount(id:String){ + startHttp { + var response= apiInterface().destAccount(id) + response.getCodeStatus(destLive,nowData) + } + } } \ No newline at end of file diff --git a/mine/src/main/res/layout/act_setting_new.xml b/mine/src/main/res/layout/act_setting_new.xml new file mode 100644 index 0000000..6af9a97 --- /dev/null +++ b/mine/src/main/res/layout/act_setting_new.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/network/src/main/java/com/xty/network/model/SystemMsgBean.kt b/network/src/main/java/com/xty/network/model/SystemMsgBean.kt new file mode 100644 index 0000000..58fb3dc --- /dev/null +++ b/network/src/main/java/com/xty/network/model/SystemMsgBean.kt @@ -0,0 +1,5 @@ +package com.xty.network.model + +import android.content.ContentResolver + +data class SystemMsgBean(var id:Long,var title:String,var time:Long,var content:String)