diff --git a/app/build.gradle b/app/build.gradle index 99ffb5b..dd90890 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,6 +9,7 @@ def androidId = rootProject.ext.defaultSetting def url = rootProject.ext.url def imagePrefix =rootProject.ext.image_preifx + android { compileSdkVersion androidId.compileSdk buildToolsVersion androidId.buildToolsVersion @@ -105,8 +106,16 @@ repositories { flatDir { dirs 'libs' } + + project.afterEvaluate { + com.android.build.gradle.BaseExtension android = project.extensions.getByName("android") + android.getPackagingOptions().exclude("META-INF/*.kotlin_module") + } } + + + dependencies { implementation (name: 'ycbtsdk-release', ext: 'aar') @@ -121,5 +130,4 @@ dependencies { kapt rely.GifDrawable kapt rely.xutil - } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e2b446e..1bdbaa7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -152,6 +152,7 @@ android:launchMode="singleTop" android:screenOrientation="portrait" /> + () { mViewModel.getWxLoginInfo(event.code) } + + @Subscribe(threadMode = ThreadMode.MAIN) + fun registerSuccess(event: RegisterSuccessEvent){ + finish() + } } \ No newline at end of file diff --git a/app/src/main/java/com/zj365/dc/activity/RegisterAct.kt b/app/src/main/java/com/zj365/dc/activity/RegisterAct.kt index 0e7a4f0..4871ce5 100644 --- a/app/src/main/java/com/zj365/dc/activity/RegisterAct.kt +++ b/app/src/main/java/com/zj365/dc/activity/RegisterAct.kt @@ -23,6 +23,7 @@ import com.xty.common.TimeSelect import com.xty.common.arouter.ARouterUrl import com.xty.common.arouter.RouteManager import com.xty.common.event.LoginOrRegisterEvent +import com.xty.common.event.RegisterSuccessEvent import com.xty.common.util.CommonToastUtils import com.xty.common.xqr_code.XQRCodeAct @@ -189,11 +190,8 @@ class RegisterAct : BaseVmAct() { timer = null } mViewModel.login(binding.mAccount.text.toString().trim(),binding.mPsw.text.toString().trim()) - runOnUiThread { - RxActivityTool.finishActivity(LoginAct::class.java) - - } - + EventBus.getDefault().post(RegisterSuccessEvent()) + // RxActivityTool.finishActivity(LoginAct::class.java) } mViewModel.codeLive.observe(this) { timeStart() 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 9d36000..9557e38 100644 --- a/app/src/main/java/com/zj365/dc/fragment/DynamicManagementFrag.kt +++ b/app/src/main/java/com/zj365/dc/fragment/DynamicManagementFrag.kt @@ -914,8 +914,11 @@ class DynamicManagementFrag : BaseVmFrag() , EasyPermission binding.mHeader.tvLanuDate.text = bean.chinaDay // setWeatherInfo(bean.weather) - binding.mHeader.mBMI.text = "BMI ${bean.bmiInfo.bmi}" - binding.mHeader.mBMIStatus.text = "${bean.bmiInfo.levelName}" + bean.bmiInfo?.let { + binding.mHeader.mBMI.text = "BMI ${it.bmi}" + binding.mHeader.mBMIStatus.text = "${it.levelName}" + } + binding.mHeader.tvWarningNum.text ="预警次数:${if (bean.warningCount == 0) "--" else bean.warningCount}次" binding.mHeader.tvMonitorNum.text ="监测次数:${if (bean.healthCount == 0) "--" else bean.healthCount}次" 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 78b56a3..b1859ee 100644 --- a/app/src/main/java/com/zj365/dc/vm/DynamicManagementVm.kt +++ b/app/src/main/java/com/zj365/dc/vm/DynamicManagementVm.kt @@ -589,13 +589,14 @@ class DynamicManagementVm : BaseVm() { uricAcidData.time } else { "${ - RxTimeTool.simpleDateFormat( + milliseconds2String(uricAcidData.time) + /* RxTimeTool.simpleDateFormat( "yyyy-MM-dd HH", RxTimeTool.string2Date( "yyyy-MM-dd HH:mm:ss", uricAcidData.time ) - ) + )*/ }:00" } } diff --git a/app/src/main/java/com/zj365/dc/vm/LoginVm.kt b/app/src/main/java/com/zj365/dc/vm/LoginVm.kt index f946b7b..ce6f21d 100644 --- a/app/src/main/java/com/zj365/dc/vm/LoginVm.kt +++ b/app/src/main/java/com/zj365/dc/vm/LoginVm.kt @@ -56,14 +56,16 @@ class LoginVm() : BaseVm() { } saveToken(login.raw().headers) val bodys = login.body() as RespBody - - MMkvHelper.put(Const.USER_ID, bodys.data.id) - val deviceType = bodys.data.deviceType - if (TextUtils.isEmpty(deviceType)) { - MMkvHelper.remove(Const.DEVICE_TYPE) - } else { - MMkvHelper.put(Const.DEVICE_TYPE, bodys.data.deviceType) + if (bodys != null){ + MMkvHelper.put(Const.USER_ID, bodys.data.id) + val deviceType = bodys.data.deviceType + if (TextUtils.isEmpty(deviceType)) { + MMkvHelper.remove(Const.DEVICE_TYPE) + } else { + MMkvHelper.put(Const.DEVICE_TYPE, bodys.data.deviceType) + } } + bodys.getCodeStatus(mLogin, nowData, loading) } } @@ -82,15 +84,22 @@ class LoginVm() : BaseVm() { } startHttp { val login = apiInterface().loginCode(account, code) + 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) - val deviceType = bodys.data.deviceType - if (TextUtils.isEmpty(deviceType)) { - MMkvHelper.remove(Const.DEVICE_TYPE) - } else { - MMkvHelper.put(Const.DEVICE_TYPE, bodys.data.deviceType) + if(bodys != null){ + MMkvHelper.put(Const.USER_ID, bodys.data.id) + val deviceType = bodys.data.deviceType + if (TextUtils.isEmpty(deviceType)) { + MMkvHelper.remove(Const.DEVICE_TYPE) + } else { + MMkvHelper.put(Const.DEVICE_TYPE, bodys.data.deviceType) + } } + bodys.getCodeStatus(mLogin, nowData, loading) } } 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 6e614ac..2cb0a4d 100644 --- a/app/src/main/res/layout/frag_dynamic_management_header.xml +++ b/app/src/main/res/layout/frag_dynamic_management_header.xml @@ -36,7 +36,7 @@ android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginLeft="@dimen/dp_14" - android:text="BMI 24" + tools:text="BMI 24" android:textColor="@color/col_313" android:textSize="@dimen/sp_17" android:textStyle="bold" @@ -59,7 +59,7 @@ android:paddingTop="@dimen/dp_2" android:paddingRight="@dimen/dp_8" android:paddingBottom="@dimen/dp_2" - android:text="正常" + tools:text="正常" android:textColor="@color/col_D9BD" android:textSize="@dimen/sp_14" android:textStyle="bold" diff --git a/base/src/main/java/com/xty/base/act/BaseTenCentWebViewActivity.kt b/base/src/main/java/com/xty/base/act/BaseTenCentWebViewActivity.kt index 57457aa..0c8fce5 100644 --- a/base/src/main/java/com/xty/base/act/BaseTenCentWebViewActivity.kt +++ b/base/src/main/java/com/xty/base/act/BaseTenCentWebViewActivity.kt @@ -17,9 +17,14 @@ import com.tencent.smtt.sdk.WebViewClient import com.xty.base.databinding.ActBaseTencentWebviewBinding import com.xty.base.h5.CloudJSBridge import com.xty.base.h5.IJsBridge +import com.xty.base.h5.WebUtils +import com.xty.base.utils.ContextUtils import com.xty.base.vm.BaseVm +import com.xty.common.Const import com.xty.common.LogUtils +import com.xty.common.MMkvHelper import com.xty.common.arouter.ARouterUrl +import org.json.JSONObject @Route(path = ARouterUrl.H5_ACT) @@ -41,6 +46,7 @@ import com.xty.common.arouter.ARouterUrl override fun initView() { super.initView() initWebViewSettings() + ContextUtils.init(this) getWindow().setFlags( WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED, WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED); @@ -64,6 +70,20 @@ import com.xty.common.arouter.ARouterUrl } binding.webView.addJavascriptInterface(cloudJSBridge,"business") + val userId = if (MMkvHelper.getLong(Const.USER_ID).toString() == "0") { + "" + } else { LogUtils.e("CloudJSBridge","str") + MMkvHelper.getLong(Const.USER_ID).toString() + } + + /* val jsonObject = JSONObject() + jsonObject.put("statuHeight", WebUtils.getStatesBar()) + jsonObject.put("token", MMkvHelper.getString(Const.Auth_Token)) + + jsonObject.put("userId", userId) + jsonObject.put("isAPP", 1) + LogUtils.e("CloudJSBridge",jsonObject.toString()) + sendDataToJS("sendBaseInfo", jsonObject.toString())*/ } override fun liveObserver() { @@ -195,7 +215,7 @@ import com.xty.common.arouter.ARouterUrl java.lang.String.format( "javascript:%s('%s')", functionName, - R.attr.data + data ) ) } diff --git a/base/src/main/java/com/xty/base/dialog/BaseDialogFragment.kt b/base/src/main/java/com/xty/base/dialog/BaseDialogFragment.kt new file mode 100644 index 0000000..0f17a89 --- /dev/null +++ b/base/src/main/java/com/xty/base/dialog/BaseDialogFragment.kt @@ -0,0 +1,85 @@ +package com.xty.base.dialog + +import android.content.DialogInterface +import android.os.Bundle +import android.view.Gravity +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.view.Window +import android.view.WindowManager +import androidx.fragment.app.DialogFragment +import androidx.lifecycle.ViewModelProvider +import com.xty.base.vm.BaseVm +import com.xty.common.ReflexUtils + +abstract class BaseDialogFragment :DialogFragment(){ + + + protected lateinit var mView: View + private var dismissListener: OnDismissListener? = null + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + getStyle()?.let { + setStyle(STYLE_NORMAL, it) + } + } + + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + dialog?.requestWindowFeature(Window.FEATURE_NO_TITLE) + mView = onCreateView() + + initView() + initData() + initListener() + return mView + } + + override fun onStart() { + super.onStart() + //设置 dialog 的宽高 + dialog?.window?.let { + it.setBackgroundDrawable(null) + val lp: WindowManager.LayoutParams = it.attributes + lp.gravity = getGravity() + lp.width = getWidth() + lp.height = getHeight() + if (isBGTransparent()) { + lp.dimAmount = 0.0f + } else { + lp.dimAmount = 0.5f + } + + it.attributes = lp + } + + } + + override fun onDismiss(dialog: DialogInterface) { + super.onDismiss(dialog) + dismissListener?.onDismiss() + } + fun setOnDismissListener(dismissListener: OnDismissListener) { + this.dismissListener = dismissListener + } + + protected abstract fun onCreateView(): View + protected open fun getStyle(): Int? = null //弹框样式 动画 + protected open fun getGravity(): Int = Gravity.BOTTOM //弹框位置 + protected open fun isBGTransparent() = false //是否全透明背景 + + protected open fun getHeight(): Int = WindowManager.LayoutParams.WRAP_CONTENT //弹框最大高度 + protected open fun getWidth(): Int = WindowManager.LayoutParams.MATCH_PARENT //弹框最大高度 + + + protected abstract fun initView() + + protected abstract fun initData() + + protected abstract fun initListener() + interface OnDismissListener { + fun onDismiss() + } +} \ No newline at end of file diff --git a/base/src/main/java/com/xty/base/h5/CloudJSBridge.kt b/base/src/main/java/com/xty/base/h5/CloudJSBridge.kt index d87fc87..36fff99 100644 --- a/base/src/main/java/com/xty/base/h5/CloudJSBridge.kt +++ b/base/src/main/java/com/xty/base/h5/CloudJSBridge.kt @@ -2,8 +2,8 @@ package com.xty.base.h5 import android.content.Context import android.webkit.JavascriptInterface +import com.google.gson.Gson import com.xty.base.act.BaseVmAct -import com.xty.base.act.IBaseAct import com.xty.common.Const import com.xty.common.LogUtils import com.xty.common.MMkvHelper @@ -27,6 +27,8 @@ open class CloudJSBridge(val context: Context, val listener: IJsBridge) { jsonObject.put("token", MMkvHelper.getString(Const.Auth_Token)) jsonObject.put("userId", userId) + jsonObject.put("isAPP", 1) + LogUtils.e("CloudJSBridge",jsonObject.toString()) listener.sendDataToJS("sendBaseInfo", jsonObject.toString()) } } diff --git a/base/src/main/res/layout/dialog_activities.xml b/base/src/main/res/layout/dialog_activities.xml index 94b4ad0..5f6ac44 100644 --- a/base/src/main/res/layout/dialog_activities.xml +++ b/base/src/main/res/layout/dialog_activities.xml @@ -15,7 +15,7 @@ + ResolutionStrategy rs = conf.resolutionStrategy + //统一第三方库的版本号 + rs.eachDependency { details -> + def requested = details.requested + if (requested.group == "com.android.support") { + //强制所有的 com.android.support 库采用固定版本 + if (requested.name.startsWith("multidex")) { + details.useVersion(MULTIDEX_VERSION) + } else { + details.useVersion(SUPPORT_VERSION) + } + } else if (requested.group == "com.google.code.gson") { + //统一 Gson 库的版本号 + details.useVersion(GSON_VERSION) + } else if (requested.group == "org.jetbrains.kotlin") { + //统一内部 kotlin 库的版本 + details.useVersion(kotlin_version) + } + } + } + } task clean(type: Delete) { diff --git a/common/src/main/java/com/xty/common/event/RegisterSuccessEvent.kt b/common/src/main/java/com/xty/common/event/RegisterSuccessEvent.kt new file mode 100644 index 0000000..6f13457 --- /dev/null +++ b/common/src/main/java/com/xty/common/event/RegisterSuccessEvent.kt @@ -0,0 +1,4 @@ +package com.xty.common.event + +class RegisterSuccessEvent { +} \ No newline at end of file diff --git a/config.gradle b/config.gradle index 37961cd..152818f 100644 --- a/config.gradle +++ b/config.gradle @@ -6,7 +6,7 @@ ext { appId : "com.zj365.dc", minSdk : 23, targetSdk : 32, - versionCode : 2, + versionCode : 114, versionName : "1.0.0" ] @@ -29,10 +29,10 @@ ext { release_url: "https://auprty.com/app/"*/ //测试环境 debug_url : "http://java01.zhongjian365.com/app/", - release_url: "http://175.6.39.20:8181/app/", + release_url: "http://java01.zhongjian365.com/app/", h5_debug_url : "http://testbuilt.zhongjian365.com/", - h5_release_url : "http://built.zhongjian365.com/" + h5_release_url : "http://testbuilt.zhongjian365.com/" ] diff --git a/gradle.properties b/gradle.properties index e1dc032..b2dd0f0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ # http://www.gradle.org/docs/current/userguide/build_environment.html # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. -org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 +org.gradle.jvmargs=-Xmx5120m -XX:MaxPermSize=2048m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects @@ -22,4 +22,3 @@ kotlin.code.style=official kotlin.incremental=true org.gradle.parallel=true android.injected.testOnly=false -android.defaults.buildfeatures.buildconfig=true \ No newline at end of file diff --git a/health/src/main/AndroidManifest.xml b/health/src/main/AndroidManifest.xml index 9f248a3..43c5bf3 100644 --- a/health/src/main/AndroidManifest.xml +++ b/health/src/main/AndroidManifest.xml @@ -259,6 +259,16 @@ + + + + \ 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 6dd9f71..927aaf9 100644 --- a/health/src/main/java/com/zj365/health/act/HealthMainAct.kt +++ b/health/src/main/java/com/zj365/health/act/HealthMainAct.kt @@ -65,7 +65,12 @@ class HealthMainAct : IBaseAct() { super.initView() val deviceType = MMkvHelper.getString(Const.DEVICE_TYPE) - tabName = when (deviceType) { + tabName = arrayOf( + R.string.info_1, R.string.info_3, R.string.info_7, + R.string.info_4, R.string.info_6, R.string.info_2, + R.string.info_8, R.string.info_11/*, R.string.info_5, + R.string.info_10*/ + ) /*when (deviceType) { "", "U32" -> { arrayOf( R.string.info_1, R.string.info_3, R.string.info_7, @@ -79,7 +84,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,10 +92,10 @@ 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*//* ) } - } + }*/ statusBar(binding.title.mView) initTitle() @@ -161,8 +166,8 @@ class HealthMainAct : IBaseAct() { private fun initVp2() { listFragment.clear() - when (MMkvHelper.getString(Const.DEVICE_TYPE)) { - "", "U32" -> { + /*when (MMkvHelper.getString(Const.DEVICE_TYPE)) { + "", "U32" -> {*/ listFragment.add(setArgumentFrag(XinlvFrag(), id)) listFragment.add(setArgumentFrag(XueyangFrag(), id)) listFragment.add(setArgumentFrag(BreathFrag(), id)) @@ -173,7 +178,7 @@ class HealthMainAct : IBaseAct() { listFragment.add(setArgumentFrag(UricAcidFrag(), id, sex)) // listFragment.add(setArgumentFrag(XdFrag(), id)) // listFragment.add(setArgumentFrag(BloodFatFrag(), id)) - } + /* } "A3" -> { listFragment.add(setArgumentFrag(XinlvFrag(), id)) @@ -197,7 +202,7 @@ class HealthMainAct : IBaseAct() { listFragment.add(setArgumentFrag(UricAcidFrag(), id, sex)) // listFragment.add(setArgumentFrag(BloodFatFrag(), id)) } - } + }*/ binding.mVp2.adapter = VpAdapter(listFragment, this) binding.mVp2.isUserInputEnabled = false diff --git a/health/src/main/res/drawable/shape_bind_device_history.xml b/health/src/main/res/drawable/shape_bind_device_history.xml index 522a19b..1d89b35 100644 --- a/health/src/main/res/drawable/shape_bind_device_history.xml +++ b/health/src/main/res/drawable/shape_bind_device_history.xml @@ -3,7 +3,7 @@ @@ -94,7 +94,7 @@ android:textSize="@dimen/sp_16" android:textStyle="bold" android:text="@string/blood_align_history" - android:textColor="@color/col_02b" /> + android:textColor="@color/col_02c" />