中建365-绑定设备

develop
wlh 1 year ago
parent 485b67d188
commit 0913f3115c

@ -70,6 +70,7 @@ android {
buildTypes { buildTypes {
release { release {
buildConfigField("String", "url", "\"${url.release_url}\"") buildConfigField("String", "url", "\"${url.release_url}\"")
buildConfigField("String","h5url","\"${url.h5_release_url}\"")
buildConfigField("String", "image_prefix","\"${imagePrefix.release_url}\"") buildConfigField("String", "image_prefix","\"${imagePrefix.release_url}\"")
buildConfigField("Boolean","isRelease",String.valueOf(true)) buildConfigField("Boolean","isRelease",String.valueOf(true))
minifyEnabled false minifyEnabled false
@ -78,6 +79,7 @@ android {
} }
debug { debug {
buildConfigField("String", "url", "\"${url.debug_url}\"") buildConfigField("String", "url", "\"${url.debug_url}\"")
buildConfigField("String","h5url","\"${url.h5_debug_url}\"")
buildConfigField("Boolean","isRelease",String.valueOf(false)) buildConfigField("Boolean","isRelease",String.valueOf(false))
buildConfigField("String", "image_prefix","\"${imagePrefix.debug_url}\"") buildConfigField("String", "image_prefix","\"${imagePrefix.debug_url}\"")
signingConfig signingConfigs.release signingConfig signingConfigs.release

@ -325,7 +325,12 @@
android:name="com.xty.common.xqr_code.XQRCodeAct" android:name="com.xty.common.xqr_code.XQRCodeAct"
android:launchMode="singleTop" android:launchMode="singleTop"
android:screenOrientation="portrait"/> android:screenOrientation="portrait"/>
<activity android:name="com.xty.base.act.WebAct"
android:launchMode="singleTop"
android:screenOrientation="portrait"/>
<activity android:name="com.xty.base.act.BaseTenCentWebViewActivity"
android:screenOrientation="portrait"/>
<service <service
android:name="com.xty.common.services.MusicService" android:name="com.xty.common.services.MusicService"
android:exported="true" android:exported="true"

@ -40,12 +40,6 @@ class CalorieAnalyzeAct : BaseVmAct<BaseVm>() {
finish() finish()
} }
binding.tvContent.text = "1.注意事项、操作指南文案。平台能通过照片分析出大部分食物、水果蔬菜、菜品。上传更清晰完整的照片,分析结果更准确。" +
"\n2.平台能通过照片分析出大部分食物、水果蔬菜、菜品。\n" +
"3.上传更清晰完整的招聘,分析结果更准确。平台能通过照片分析出大部分食物。\n" +
"4.上传更清晰完整的照片,分析结果更准确。平台能通过照片分析出大部分食物、水果蔬菜、菜品。\n" +
"5.上传更清晰完整的招聘,分析结果更准确。平台能通过照片分析出大部分食物、水果蔬菜、菜品。上传更清晰完整的招聘,分析结果更准确。\n"
binding.tvDishes.setOnClickListener { binding.tvDishes.setOnClickListener {
bottomSheetDialog?.show() bottomSheetDialog?.show()
type = "1" type = "1"

@ -6,6 +6,8 @@ import com.xty.base.act.BaseVmAct
import com.xty.base.vm.BaseVm import com.xty.base.vm.BaseVm
import com.xty.common.arouter.ARouterUrl import com.xty.common.arouter.ARouterUrl
import com.xty.common.arouter.RouteManager import com.xty.common.arouter.RouteManager
import com.xty.common.util.CommonToastUtils
import com.zj365.dc.BuildConfig
import com.zj365.dc.R import com.zj365.dc.R
import com.zj365.dc.databinding.ActDietManagementBinding import com.zj365.dc.databinding.ActDietManagementBinding
@ -40,17 +42,27 @@ class DietManagementAct : BaseVmAct<BaseVm>(){
} }
R.id.rx_healthy_diet ->{ R.id.rx_healthy_diet ->{
bundle.clear()
bundle.putString("web_site_url","http://testbuilt.zhongjian365.com/ ")
// bundle.putString("web_site_url","${BuildConfig.h5url}pages/index/index?pageId=cookbook")
RouteManager.goAct(ARouterUrl.H5_ACT,bundle)
// var url = "${BuildConfig.}"
} }
R.id.rx_medicine_food ->{ R.id.rx_medicine_food ->{
bundle.clear()
bundle.putString("web_site_url","${BuildConfig.h5url}pages/index/index?pageId=herbal")
RouteManager.goAct(ARouterUrl.H5_ACT,bundle)
} }
R.id.rx_food_diary ->{ R.id.rx_food_diary ->{
bundle.clear()
bundle.putString("web_site_url","${BuildConfig.h5url}pages/index/index?pageId=diary")
RouteManager.goAct(ARouterUrl.H5_ACT,bundle)
} }
R.id.rx_more ->{ R.id.rx_more ->{
CommonToastUtils.showToast("敬请期待")
} }
} }

@ -302,7 +302,7 @@ class MainActivity : BaseVmAct<MainVm>(), Consumer<AbstractMeasureData> {
it[3]?.let { it[3]?.let {
if(it != null && it.size > 0){ if(it != null && it.size > 0){
// DialogActivities(this,it[0].imgUrl).show() DialogActivities(this,it[0]).show()
} }
} }

@ -19,6 +19,7 @@ import com.xty.common.arouter.RouteManager
import com.xty.common.picture.PictureUtils import com.xty.common.picture.PictureUtils
import com.xty.common.util.SpannableUtils import com.xty.common.util.SpannableUtils
import com.xty.network.model.FoodRecoginzeInfo import com.xty.network.model.FoodRecoginzeInfo
import com.zj365.dc.BuildConfig
import com.zj365.dc.adapter.RecognizeResultAdapter import com.zj365.dc.adapter.RecognizeResultAdapter
import com.zj365.dc.databinding.ActRecognizeResultBinding import com.zj365.dc.databinding.ActRecognizeResultBinding
import com.zj365.dc.vm.DietManagementVm import com.zj365.dc.vm.DietManagementVm
@ -35,6 +36,10 @@ class RecognizeResultAct : BaseVmAct<DietManagementVm>() {
var type:String? = null var type:String? = null
var fileUrl :String? = null var fileUrl :String? = null
var currentId:String?= null
var foodRecoginzeInfo: FoodRecoginzeInfo? = null
override fun liveObserver() { override fun liveObserver() {
mViewModel.foodRecoginzeInfoLiveData.observe(this){ mViewModel.foodRecoginzeInfoLiveData.observe(this){
adapter.setNewInstance(it.data) adapter.setNewInstance(it.data)
@ -61,6 +66,12 @@ class RecognizeResultAct : BaseVmAct<DietManagementVm>() {
} }
binding.tvDetail.setOnClickListener { binding.tvDetail.setOnClickListener {
currentId?.let {
bundle.clear()
bundle.putString("web_site_url","${BuildConfig.h5url}pages/index/index?pageId=mealsDetail&id=${it}")
RouteManager.goAct(ARouterUrl.H5_ACT,bundle)
}
} }
@ -72,7 +83,13 @@ class RecognizeResultAct : BaseVmAct<DietManagementVm>() {
binding.recycler.layoutManager = LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,false) binding.recycler.layoutManager = LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,false)
binding.recycler.adapter = adapter binding.recycler.adapter = adapter
adapter.setOnItemChildClickListener { adapter, view, position -> adapter.setOnItemChildClickListener { adapter, view, position ->
val foodBean = adapter.getItem(position) as FoodRecoginzeInfo foodRecoginzeInfo = adapter.getItem(position) as FoodRecoginzeInfo
foodRecoginzeInfo?.let {
currentId = it.name
binding.tvAnalyzeTitle.text = it.name
val list = mutableListOf<com.xty.common.model.ReportBean>()
}
} }
} }

@ -189,9 +189,12 @@ class RegisterAct : BaseVmAct<RegisterVm>() {
timer = null timer = null
} }
mViewModel.login(binding.mAccount.text.toString().trim(),binding.mPsw.text.toString().trim()) mViewModel.login(binding.mAccount.text.toString().trim(),binding.mPsw.text.toString().trim())
runOnUiThread {
RxActivityTool.finishActivity(LoginAct::class.java) RxActivityTool.finishActivity(LoginAct::class.java)
} }
}
mViewModel.codeLive.observe(this) { mViewModel.codeLive.observe(this) {
timeStart() timeStart()
binding.mTvCode.apply { binding.mTvCode.apply {

@ -12,6 +12,8 @@ import com.bumptech.glide.request.target.SimpleTarget
import com.bumptech.glide.request.transition.Transition import com.bumptech.glide.request.transition.Transition
import com.gyf.immersionbar.ImmersionBar import com.gyf.immersionbar.ImmersionBar
import com.tamsiree.rxkit.RxDeviceTool import com.tamsiree.rxkit.RxDeviceTool
import com.tencent.smtt.export.external.TbsCoreSettings
import com.tencent.smtt.sdk.QbSdk
import com.umeng.commonsdk.UMConfigure import com.umeng.commonsdk.UMConfigure
import com.xty.base.act.BaseVmAct import com.xty.base.act.BaseVmAct
import com.xty.common.Const import com.xty.common.Const
@ -47,6 +49,7 @@ class WelcomeAct : BaseVmAct<WelcomeVm>() {
private val prevDialog by lazy { private val prevDialog by lazy {
PrevDialog(this, { PrevDialog(this, {
startTimer() startTimer()
// initX5()
MMkvHelper.put("private", "") MMkvHelper.put("private", "")
}) { }) {
finish() finish()
@ -231,6 +234,8 @@ class WelcomeAct : BaseVmAct<WelcomeVm>() {
JPushHelper(this).stopOrResumeJPush(MMkvHelper.getBoolean(Const.NOTICE_FLAG)) JPushHelper(this).stopOrResumeJPush(MMkvHelper.getBoolean(Const.NOTICE_FLAG))
} }
override fun onDestroy() { override fun onDestroy() {
job?.let { job?.let {
it.cancel() it.cancel()

@ -214,30 +214,30 @@ class DynamicManagementFrag : BaseVmFrag<DynamicManagementVm>() , EasyPermission
} else { } else {
}*/ }*/
goPage(index - 1)
if (deviceType == "X1" || deviceType == "X2") { /*if (deviceType == "X1" || deviceType == "X2") {
goPage(index - 2) goPage(index - 2)
} else { } else {
goPage(index - 1) goPage(index - 1)
} }*/
} }
6 -> { 6 -> {
val deviceType = MMkvHelper.getString(Const.DEVICE_TYPE) val deviceType = MMkvHelper.getString(Const.DEVICE_TYPE)
if (deviceType == "X1" || deviceType == "X2") { /*if (deviceType == "X1" || deviceType == "X2") {
goPage(4) goPage(4)
} else { } else {*/
goPage(index - 1) goPage(index - 1)
} // }
} }
9 -> { //心电隐藏的前提下尿酸为8 否则为9 9 -> { //心电隐藏的前提下尿酸为8 否则为9
val deviceType = MMkvHelper.getString(Const.DEVICE_TYPE) val deviceType = MMkvHelper.getString(Const.DEVICE_TYPE)
if (deviceType == "X1" || deviceType == "X2") { /* if (deviceType == "X1" || deviceType == "X2") {
goPage(6) goPage(6)
} else { } else {*/
goPage(7) goPage(7)
} // }
} }
7 -> { //血糖 7 -> { //血糖
@ -257,11 +257,11 @@ class DynamicManagementFrag : BaseVmFrag<DynamicManagementVm>() , EasyPermission
// } // }
// } // }
val deviceType = MMkvHelper.getString(Const.DEVICE_TYPE) val deviceType = MMkvHelper.getString(Const.DEVICE_TYPE)
if (deviceType == "X1" || deviceType == "X2") { /*if (deviceType == "X1" || deviceType == "X2") {
goPage(5) goPage(5)
} else { } else {*/
goPage(index - 1) goPage(index - 1)
} // }
} }
10 -> { // //心电隐藏的前提下血脂为9 否则为10 10 -> { // //心电隐藏的前提下血脂为9 否则为10

@ -4,6 +4,7 @@ import android.Manifest
import android.content.Intent import android.content.Intent
import android.net.Uri import android.net.Uri
import android.os.Build import android.os.Build
import android.text.TextUtils
import android.view.View import android.view.View
import androidx.annotation.RequiresApi import androidx.annotation.RequiresApi
import com.xty.base.dialog.AppUpdateDialog import com.xty.base.dialog.AppUpdateDialog
@ -23,6 +24,7 @@ import com.xty.network.model.SettingBean
import com.zj365.dc.BuildConfig import com.zj365.dc.BuildConfig
import com.zj365.dc.activity.MainActivity import com.zj365.dc.activity.MainActivity
import com.zj365.dc.databinding.FragMineBinding import com.zj365.dc.databinding.FragMineBinding
import com.zj365.health.act.HealthMainAct
import com.zj365.health.weight.DialogTip import com.zj365.health.weight.DialogTip
import com.zj365.mime.act.DevInfoAct import com.zj365.mime.act.DevInfoAct
import com.zj365.mime.vm.SettingVm import com.zj365.mime.vm.SettingVm
@ -142,7 +144,21 @@ class MineFrag : BaseVmFrag<SettingVm>(),EasyPermissions.PermissionCallbacks {
if(MMkvHelper.getLong(Const.USER_ID).toString() == "0"){ if(MMkvHelper.getLong(Const.USER_ID).toString() == "0"){
RouteManager.goAct(ARouterUrl.LOGIN_ACT) RouteManager.goAct(ARouterUrl.LOGIN_ACT)
}else { }else {
CommonToastUtils.showToast("敬请期待") // CommonToastUtils.showToast("敬请期待")
bundle.clear()
bundle.putInt("page", 0)
bundle.putBoolean("isDemonstrate", (requireActivity() as MainActivity).isDemonstrate)
val id = if (MMkvHelper.getLong(Const.USER_ID).toString() == "0") {
""
} else {
MMkvHelper.getLong(Const.USER_ID).toString()
}
bundle.putString("id", id)
bundle.putString("sex", CommonUtils.getMyUserInfo()?.sex.toString())
RouteManager.goAct(ARouterUrl.HEALTHMAIN, bundle)
} }
} }
@ -317,7 +333,7 @@ class MineFrag : BaseVmFrag<SettingVm>(),EasyPermissions.PermissionCallbacks {
} }
user = it.user user = it.user
binding.mName.text = it.user.name binding.mName.text = it.user.name
binding.mPhone.text = "账户:${it.user.phone}" binding.mPhone.text = "${it.user.phone}"
// binding.mDk.text = it.clock.toString() // binding.mDk.text = it.clock.toString()
// binding.mLevel.text = it.grade // binding.mLevel.text = it.grade
if (it.user.avatarUrl.isNullOrEmpty()) { if (it.user.avatarUrl.isNullOrEmpty()) {

@ -9,63 +9,45 @@
<include layout="@layout/title_white_bar" <include layout="@layout/title_white_bar"
android:id="@+id/title"/> android:id="@+id/title"/>
<LinearLayout <ImageView
android:layout_width="match_parent" android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_margin="@dimen/dp_14"
android:paddingTop="@dimen/dp_22"
android:paddingLeft="@dimen/dp_16"
android:paddingRight="@dimen/dp_23"
android:paddingBottom="@dimen/dp_26"
android:background="@drawable/shape_8round_white">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:background="@mipmap/bg_hot_card_analysis"
android:gravity="center_vertical" android:layout_gravity="center_horizontal"
> android:layout_marginTop="@dimen/dp_40"/>
<com.ruffian.library.widget.RView
android:layout_width="@dimen/dp_4"
android:layout_height="@dimen/dp_18"
app:background_normal="@color/col_02c"
app:corner_radius="2dp"
/>
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="@color/col_313" android:layout_marginTop="@dimen/dp_21"
android:text="提示文案标题" android:textSize="@dimen/sp_16"
android:textStyle="bold" android:textStyle="bold"
android:textSize="@dimen/sp_17" android:gravity="center"
android:paddingHorizontal="@dimen/dp_10" android:text="支持菜肴、果蔬、零食拍照识别"
/> android:textColor="@color/col_333"/>
</LinearLayout>
<TextView <TextView
android:id="@+id/tv_content" android:layout_width="wrap_content"
android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_21" android:layout_gravity="center_horizontal"
android:text=" 平台能通过照片分析出大部分食物、水果、 蔬菜、菜品上传更清晰完整的照片,分析结果更准确,热量、含脂率、人体所需元素、配伍禁忌推荐、个性化食物推荐。"
android:textSize="@dimen/sp_14" android:textSize="@dimen/sp_14"
android:textColor="@color/col_313"/> android:textColor="@color/col_333"
android:layout_marginLeft="@dimen/dp_10"
</LinearLayout> android:layout_marginRight="@dimen/dp_10"
android:layout_marginTop="@dimen/dp_10"/>
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:orientation="vertical"
android:layout_marginLeft="@dimen/dp_15" android:layout_marginLeft="@dimen/dp_58"
android:layout_marginRight="@dimen/dp_15" android:layout_marginRight="@dimen/dp_58"
android:layout_marginTop="@dimen/dp_46"> android:layout_marginTop="@dimen/dp_24">
<TextView <TextView
android:id="@+id/tv_dishes" android:id="@+id/tv_dishes"
android:layout_width="@dimen/dp_0" android:layout_width="match_parent"
android:layout_height="@dimen/dp_46" android:layout_height="@dimen/dp_40"
android:layout_weight="1"
android:background="@drawable/shape_r25_02c" android:background="@drawable/shape_r25_02c"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="@dimen/sp_18" android:textSize="@dimen/sp_18"
@ -75,12 +57,10 @@
<TextView <TextView
android:id="@+id/tv_fruit_vegetable" android:id="@+id/tv_fruit_vegetable"
android:layout_width="@dimen/dp_0" android:layout_width="match_parent"
android:layout_height="@dimen/dp_46" android:layout_height="@dimen/dp_40"
android:layout_weight="1"
android:layout_marginLeft="@dimen/dp_17"
android:layout_marginRight="@dimen/dp_17"
android:background="@drawable/shape_r25_02c" android:background="@drawable/shape_r25_02c"
android:layout_marginTop="@dimen/dp_16"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="@dimen/sp_18" android:textSize="@dimen/sp_18"
android:textStyle="bold" android:textStyle="bold"
@ -89,11 +69,11 @@
<TextView <TextView
android:id="@+id/tv_snack" android:id="@+id/tv_snack"
android:layout_width="@dimen/dp_0" android:layout_width="match_parent"
android:layout_height="@dimen/dp_46" android:layout_height="@dimen/dp_40"
android:layout_weight="1"
android:background="@drawable/shape_r25_02c" android:background="@drawable/shape_r25_02c"
android:textColor="@color/white" android:textColor="@color/white"
android:layout_marginTop="@dimen/dp_16"
android:textSize="@dimen/sp_18" android:textSize="@dimen/sp_18"
android:textStyle="bold" android:textStyle="bold"
android:gravity="center" android:gravity="center"

@ -40,22 +40,15 @@
android:text="相似解析"/> android:text="相似解析"/>
</LinearLayout> </LinearLayout>
<LinearLayout
<androidx.core.widget.NestedScrollView android:id="@+id/ll_analyze_result_title"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="wrap_content"
android:layout_below="@+id/ll_analyze" android:orientation="vertical"
android:layout_alignParentBottom="true"
android:layout_marginLeft="@dimen/dp_14" android:layout_marginLeft="@dimen/dp_14"
android:layout_marginRight="@dimen/dp_14" android:layout_marginRight="@dimen/dp_14"
android:layout_marginBottom="@dimen/dp_42"
android:layout_marginTop="@dimen/dp_12" android:layout_marginTop="@dimen/dp_12"
android:fitsSystemWindows="true" android:layout_below="@+id/ll_analyze"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingTop="@dimen/dp_22" android:paddingTop="@dimen/dp_22"
android:paddingLeft="@dimen/dp_16" android:paddingLeft="@dimen/dp_16"
android:paddingRight="@dimen/dp_16" android:paddingRight="@dimen/dp_16"
@ -95,17 +88,63 @@
android:textSize="@dimen/sp_18" android:textSize="@dimen/sp_18"
android:textColor="@color/col_313" android:textColor="@color/col_313"
tools:text="剁椒鱼头"/> tools:text="剁椒鱼头"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_below="@+id/ll_analyze_result_title"
android:paddingTop="@dimen/dp_22"
android:paddingLeft="@dimen/dp_16"
android:paddingRight="@dimen/dp_16"
android:paddingBottom="@dimen/dp_25"
android:layout_marginLeft="@dimen/dp_14"
android:layout_marginRight="@dimen/dp_14"
android:layout_marginTop="@dimen/dp_12"
android:background="@drawable/shape_8round_white">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
>
<com.ruffian.library.widget.RView
android:layout_width="@dimen/dp_4"
android:layout_height="@dimen/dp_18"
app:background_normal="@color/col_02c"
app:corner_radius="2dp"
/>
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:id="@+id/tv_analyze_content"
android:textSize="@dimen/sp_14"
android:textColor="@color/col_313" android:textColor="@color/col_313"
android:layout_marginTop="@dimen/dp_14"/> android:text="营养成分"
android:textStyle="bold"
android:textSize="@dimen/sp_17"
android:paddingHorizontal="@dimen/dp_10"
/>
</LinearLayout>
<com.xty.common.weight.MyProgressCircleView
android:id="@+id/mCircle"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_140"
android:layout_marginTop="@dimen/dp_9"
android:layout_marginEnd="@dimen/dp_9"
android:paddingTop="@dimen/dp_5"
android:paddingEnd="@dimen/dp_6"
android:paddingBottom="@dimen/dp_5"
app:circle_stroke_width="@dimen/dp_16"
app:count="3"
app:example_length="@dimen/dp_1"
app:example_size="@dimen/dp_5"
app:percent_size="@dimen/sp_12" />
</LinearLayout> </LinearLayout>
</androidx.core.widget.NestedScrollView>
<LinearLayout <LinearLayout

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

@ -1,4 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.xty.base"> package="com.xty.base">
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
</manifest> </manifest>

@ -0,0 +1,215 @@
package com.xty.base.act
import android.R
import android.annotation.SuppressLint
import android.content.Intent
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.text.TextUtils
import android.view.KeyEvent
import android.view.WindowManager
import com.alibaba.android.arouter.facade.annotation.Route
import com.tencent.smtt.sdk.WebChromeClient
import com.tencent.smtt.sdk.WebSettings
import com.tencent.smtt.sdk.WebView
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.vm.BaseVm
import com.xty.common.LogUtils
import com.xty.common.arouter.ARouterUrl
@Route(path = ARouterUrl.H5_ACT)
class BaseTenCentWebViewActivity: BaseVmAct<BaseVm>(),IJsBridge{
val binding by lazy { ActBaseTencentWebviewBinding.inflate(layoutInflater) }
var mWebSetting: WebSettings? = null
var mUrl:String? = null
val cloudJSBridge by lazy { CloudJSBridge(this@BaseTenCentWebViewActivity,this) }
companion object{
val WEB_SITE_URL = "web_site_url"
val WEB_SITE_TITLE = "web_title"
}
override fun initView() {
super.initView()
initWebViewSettings()
getWindow().setFlags(
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
if (!TextUtils.isEmpty(mUrl)) {
loadWebView(mUrl!!)
}
var data = Bundle()
//true表示标准全屏false表示X5全屏不设置默认false
//true表示标准全屏false表示X5全屏不设置默认false
data.putBoolean("standardFullScreen", false)
//false关闭小窗true开启小窗不设置默认true
//false关闭小窗true开启小窗不设置默认true
data.putBoolean("supportLiteWnd", false)
//1以页面内开始播放2以全屏开始播放不设置默认1
//1以页面内开始播放2以全屏开始播放不设置默认1
data.putInt("DefaultVideoScreen", 2)
if (binding.webView.x5WebViewExtension != null) {
binding.webView.x5WebViewExtension.invokeMiscMethod("setVideoParams", data)
}
binding.webView.addJavascriptInterface(cloudJSBridge,"business")
}
override fun liveObserver() {
}
override fun setLayout()= binding.root
@SuppressLint("SetJavaScriptEnabled")
open fun initWebViewSettings() {
mUrl = intent.getStringExtra(WEB_SITE_URL)
LogUtils.e("BaseTenCentWebViewActivity","mUrlmUrl${mUrl}")
mWebSetting = binding.webView.settings
mWebSetting!!.defaultTextEncodingName = "utf-8"
val ua: String = mWebSetting!!.getUserAgentString()
mWebSetting!!.userAgentString = ua.replace(
"Android",
"Android cswldxiaomi"
) //设置webview的浏览器标识
mWebSetting!!.setJavaScriptEnabled(true) //允许调用js
mWebSetting!!.allowFileAccess = true //启用webVIew访问文件数据
mWebSetting!!.layoutAlgorithm = WebSettings.LayoutAlgorithm.NARROW_COLUMNS
mWebSetting!!.setSupportZoom(true) //设置支持缩放
mWebSetting!!.builtInZoomControls = true
mWebSetting!!.useWideViewPort = true //将图片调整到合适的webView大小
mWebSetting!!.setSupportMultipleWindows(false) //是否支持多窗口
mWebSetting!!.loadWithOverviewMode = true
mWebSetting!!.setAppCacheEnabled(true) //设置是否启用缓存
mWebSetting!!.databaseEnabled = true
mWebSetting!!.domStorageEnabled = true
mWebSetting!!.setGeolocationEnabled(true)
mWebSetting!!.loadsImagesAutomatically = true //设置自动加载图片
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
mWebSetting!!.mixedContentMode = android.webkit.WebSettings.MIXED_CONTENT_ALWAYS_ALLOW
}
mWebSetting!!.blockNetworkImage = false //设置是否显示网络图像false为允许显示
mWebSetting!!.cacheMode = WebSettings.LOAD_DEFAULT //不缓存,只从网络获取数据
mWebSetting!!.setAppCacheMaxSize(Long.MAX_VALUE)
// 复写shouldOverrideUrlLoading()方法,使得打开网页时不调用系统浏览器, 而是在本WebView中显示
binding.webView.webViewClient = object : WebViewClient() {
override fun shouldOverrideUrlLoading(webView: WebView, url: String): Boolean {
if (url.startsWith("http:") || url.startsWith("https:")) webView.loadUrl(url) else {
try {
val uri = Uri.parse(url)
val intent = Intent(Intent.ACTION_VIEW, uri)
startActivity(intent)
} catch (e: Exception) {
}
}
return true
}
}
binding.webView.webChromeClient = object : WebChromeClient() {
override fun onProgressChanged(
view: WebView,
newProgress: Int
) {
super.onProgressChanged(view, newProgress)
}
}
}
/**
* 加载webview
*
* @param webUrl
*/
protected open fun loadWebView(webUrl: String) {
if (webUrl.startsWith("http:") || webUrl.startsWith("https:"))
binding.webView.loadUrl(webUrl)
else
binding.webView.loadUrl(
"http://$webUrl"
)
}
open fun setJsBridge(jsBridge: CloudJSBridge) {
// this.jsBridge = jsBridge
}
open fun reload() {
binding.webView.reload()
}
override fun onBackPressed() {
if (binding.webView != null) {
if (binding.webView.canGoBack()) {
binding.webView.goBack()
} else {
finish()
}
} else {
finish()
}
}
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
if (keyCode == KeyEvent.KEYCODE_BACK && binding.webView.canGoBack()) {
binding.webView.goBack() // 返回前一个webview页面
return true
}
return super.onKeyDown(keyCode, event)
}
override fun sendDataToJS(functionName: String, data: String) {
if (functionName.equals("reload")) {
runOnUiThread { reload() }
} else {
runOnUiThread {
binding.webView
.loadUrl(
java.lang.String.format(
"javascript:%s('%s')",
functionName,
R.attr.data
)
)
}
}
}
fun responseToJS(functionName: String?, data: String?) {
runOnUiThread {
binding.webView
.loadUrl(String.format("javascript:%s('%s')", functionName, data))
}
}
override fun switchView(name: String, data: String) {
}
}

@ -2,6 +2,7 @@ package com.xty.base.dialog
import android.content.Context import android.content.Context
import android.graphics.Bitmap import android.graphics.Bitmap
import android.os.Bundle
import android.view.View import android.view.View
import com.bumptech.glide.Glide import com.bumptech.glide.Glide
import com.bumptech.glide.request.target.SimpleTarget import com.bumptech.glide.request.target.SimpleTarget
@ -9,21 +10,23 @@ import com.bumptech.glide.request.transition.Transition
import com.xty.base.databinding.DialogActivitiesBinding import com.xty.base.databinding.DialogActivitiesBinding
import com.xty.common.R import com.xty.common.R
import com.xty.common.SizeUtil import com.xty.common.SizeUtil
import com.xty.common.arouter.ARouterUrl
import com.xty.common.arouter.RouteManager
import com.xty.common.setBigImage import com.xty.common.setBigImage
import com.xty.common.setImage import com.xty.common.setImage
import com.xty.common.setImageUser import com.xty.common.setImageUser
import com.xty.network.model.BannerBean
class DialogActivities (context:Context,var imgUrl:String?): BaseDialog(context) { class DialogActivities (context:Context,var bannerBean: BannerBean?): BaseDialog(context) {
val binding by lazy { DialogActivitiesBinding.inflate(layoutInflater) } val binding by lazy { DialogActivitiesBinding.inflate(layoutInflater) }
override fun setLayout() = binding.root override fun setLayout() = binding.root
override fun initView() { override fun initView() {
super.initView() super.initView()
setDialogPadding(SizeUtil.dp2px(context, 30f), 0, SizeUtil.dp2px(context, 30f), 0) setDialogPadding(SizeUtil.dp2px(context, 30f), 0, SizeUtil.dp2px(context, 30f), 0)
imgUrl?.let { bannerBean?.let {
binding.imgActivies.setBigImage(context,it.imgUrl)
binding.imgActivies.setImage(context,it) /*Glide.with(context).asBitmap().load(it.imgUrl).error(R.mipmap.ic_welcome_main_bg)
/* Glide.with(context).asBitmap().load(it).error(R.mipmap.ic_welcome_main_bg)
.into(object : SimpleTarget<Bitmap?>() { .into(object : SimpleTarget<Bitmap?>() {
override fun onResourceReady( override fun onResourceReady(
resource: Bitmap, resource: Bitmap,
@ -38,6 +41,12 @@ class DialogActivities (context:Context,var imgUrl:String?): BaseDialog(context)
binding.imgClose.setOnClickListener { dismiss() } binding.imgClose.setOnClickListener { dismiss() }
binding.imgActivies.setOnClickListener { binding.imgActivies.setOnClickListener {
bannerBean?.let {
var bundle = Bundle()
bundle.putString("title", it.title)
bundle.putString("url", it.linkAddress)
RouteManager.goAct(ARouterUrl.WEB_ACT, bundle)
}
} }
} }

@ -0,0 +1,56 @@
package com.xty.base.h5
import android.content.Context
import android.webkit.JavascriptInterface
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
import com.xty.common.util.ToastUtils
import org.json.JSONObject
open class CloudJSBridge(val context: Context, val listener: IJsBridge) {
private var baseActivity: BaseVmAct<*> = context as BaseVmAct<*>
@JavascriptInterface
fun getBaseInfoData(str: String?) {
LogUtils.e("CloudJSBridge","getBaseInfoData str")
str?.apply {
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)
listener.sendDataToJS("sendBaseInfo", jsonObject.toString())
}
}
@JavascriptInterface
fun getIsFromApp(str:String?){
LogUtils.e("CloudJSBridge","getIsFromApp str")
str?.let {
val jsonObject = JSONObject()
jsonObject.put("isAPP", 1)
listener.sendDataToJS("sendIsFrom ", jsonObject.toString())
}
}
@JavascriptInterface
fun onBack(str: String?){
LogUtils.e("CloudJSBridge","onBack str")
baseActivity.finish()
}
@JavascriptInterface
fun gotoElectronicFence(str: String?){
LogUtils.e("CloudJSBridge","gotoElectronicFence str")
ToastUtils(context).showToast("敬请期待")
}
}

@ -0,0 +1,7 @@
package com.xty.base.h5
interface IJsBridge {
fun sendDataToJS(functionName: String, data: String)
fun switchView(name: String, data: String)
}

@ -0,0 +1,11 @@
package com.xty.base.h5
import android.content.Context
class JsBridge(context: Context, listener: IJsBridge) : CloudJSBridge(context, listener) {
}

@ -0,0 +1,30 @@
package com.xty.base.h5
import com.xty.base.utils.ContextUtils
import com.xty.base.utils.SystemBarHelper
import com.xty.base.utils.SystemBarHelper.getStatusBarHeight
object WebUtils {
private var mSbar = -1
/**
* 获取状态栏高度
*
* @return 状态栏高度px
*/
@Synchronized
fun getStatesBar(): Int {
if (mSbar < 0) {
mSbar = getStatusBarHeight(ContextUtils.getContext())
}
return mSbar
}
@Synchronized
fun getDensityDpi(): Int {
val displayMetrics = ContextUtils.getApplication().resources.displayMetrics
return displayMetrics.density.toInt()
}
}

@ -0,0 +1,48 @@
package com.xty.base.utils
import android.app.Application
import android.content.Context
object ContextUtils {
private var context: Context? = null
private var mApplication: Application? = null
fun ContextUtils() {
throw UnsupportedOperationException("u can't instantiate me...")
}
/**
* 初始化工具类
*
* @param context 上下文
*/
fun init(context: Context) {
ContextUtils.context = context.applicationContext
if (context is Application) {
mApplication = context.getApplicationContext() as Application
}
}
/**
* 获取ApplicationContext
*
* @return ApplicationContext
*/
fun getContext(): Context {
if (context != null) return context!!
throw NullPointerException("u should init first")
}
/**
* 获取ApplicationContext
*
* @return ApplicationContext
*/
fun getApplication(): Application {
if (mApplication != null) return mApplication!!
throw NullPointerException("u should init first")
}
}

@ -0,0 +1,81 @@
package com.xty.base.utils;
import android.app.Activity;
import android.content.Context;
import android.location.LocationManager;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
public final class NetworkUtils {
public static int NET_ETHERNET = 1;
public static int NET_WIFI = 2;
public static int NET_NOCONNECT = 0;
/**
*
*
* @param
* @return
*/
public static boolean isNetworkAvailable(Context activity) {
Context context = activity;
if (activity instanceof Activity) {
context = activity.getApplicationContext();
}
//获取手机所有连接管理对象包括对wi-fi,net等连接的管理
ConnectivityManager connectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivityManager == null) {
return false;
} else {
// 获取NetworkInfo对象
NetworkInfo[] networkInfo = connectivityManager.getAllNetworkInfo();
if (networkInfo != null && networkInfo.length > 0) {
for (int i = 0; i < networkInfo.length; i++) {
/**
System.out.println(i + "===状态==="
+ networkInfo[i].getState());
System.out.println(i + "===类型==="
+ networkInfo[i].getTypeName());
**/
//判断当前网络状态是否为连接状态
if (networkInfo[i].getState() == NetworkInfo.State.CONNECTED) {
return true;
}
}
}
}
return false;
}
public static int isNetworkType(Context context) {
ConnectivityManager connectMgr = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo ethNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_ETHERNET);
NetworkInfo wifiNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (ethNetInfo != null && ethNetInfo.isConnected()) {
return NET_ETHERNET;
} else if (wifiNetInfo != null && wifiNetInfo.isConnected()) {
return NET_WIFI;
} else {
return NET_NOCONNECT;
}
}
/**
* GPS
* @param
* @return
*/
public static boolean isGpsEnabled(Context context){
//获取位置服务
LocationManager lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
//返回开启状态
return lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
}
}

@ -0,0 +1,22 @@
package com.xty.base.utils
import android.content.Context
import android.os.Build
object SystemBarHelper {
/**
* 获取状态栏高度
*/
fun getStatusBarHeight(context: Context): Int {
var result = 0
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
val resId = context.resources.getIdentifier("status_bar_height", "dimen", "android")
if (resId > 0) {
result = context.resources.getDimensionPixelSize(resId)
}
}
return result
}
}

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.tencent.smtt.sdk.WebView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/webView"/>
</LinearLayout>

@ -4,21 +4,25 @@
android:orientation="vertical" android:orientation="vertical"
android:gravity="center" android:gravity="center"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="match_parent">
<ImageView <ImageView
android:id="@+id/img_close" android:id="@+id/img_close"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/dp_9" android:layout_marginBottom="@dimen/dp_9"
android:layout_gravity="end" android:layout_gravity="end"
android:layout_marginRight="32dp"
android:background="@mipmap/icon_close"/> android:background="@mipmap/icon_close"/>
<ImageView <com.ruffian.library.widget.RImageView
android:id="@+id/img_activies" android:id="@+id/img_activies"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:maxHeight="@dimen/dp_306" android:maxWidth="@dimen/dp_312"
android:scaleType="centerCrop" android:scaleType="centerCrop"
android:maxHeight="@dimen/dp_500"
android:adjustViewBounds="true"
app:is_circle="false"
app:corner_radius="@dimen/dp_8"
/> />

@ -87,6 +87,7 @@ dependencies {
api files('libs/rtk-bbpro-core-1.5.9.jar') api files('libs/rtk-bbpro-core-1.5.9.jar')
api files('libs/rtk-core-1.1.7.jar') api files('libs/rtk-core-1.1.7.jar')
api files('libs/rtk-dfu-3.2.20.jar') api files('libs/rtk-dfu-3.2.20.jar')
// api files('tbs_sdk_thirdapp_v4.3.0.386_44286_sharewithdownloadwithfile_withoutGame_obfs_20230210_114429.jar')
api project(":AYCrashGuard") api project(":AYCrashGuard")
kapt rely.arouter_compiler kapt rely.arouter_compiler
kapt rely.glide_compiler kapt rely.glide_compiler

@ -9,6 +9,7 @@ import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.IntentFilter import android.content.IntentFilter
import android.os.Build import android.os.Build
import android.util.Log
import cat.ereza.customactivityoncrash.CustomActivityOnCrash import cat.ereza.customactivityoncrash.CustomActivityOnCrash
import cat.ereza.customactivityoncrash.config.CaocConfig import cat.ereza.customactivityoncrash.config.CaocConfig
import com.alibaba.android.arouter.launcher.ARouter import com.alibaba.android.arouter.launcher.ARouter
@ -25,6 +26,8 @@ import com.tencent.bugly.crashreport.CrashReport
import com.tencent.mm.opensdk.constants.ConstantsAPI import com.tencent.mm.opensdk.constants.ConstantsAPI
import com.tencent.mm.opensdk.openapi.IWXAPI import com.tencent.mm.opensdk.openapi.IWXAPI
import com.tencent.mm.opensdk.openapi.WXAPIFactory import com.tencent.mm.opensdk.openapi.WXAPIFactory
import com.tencent.smtt.export.external.TbsCoreSettings
import com.tencent.smtt.sdk.QbSdk
import com.umeng.commonsdk.UMConfigure import com.umeng.commonsdk.UMConfigure
import com.xty.common.* import com.xty.common.*
import com.xty.common.bracelet.checkBlueConnectPermission import com.xty.common.bracelet.checkBlueConnectPermission
@ -68,6 +71,7 @@ class MyApp : Application() {
initUMengSdk() initUMengSdk()
initRefresh() initRefresh()
registerBlueToothBoardCastReceiver() registerBlueToothBoardCastReceiver()
initX5()
//bugly 上报 在release版本才会上报 //bugly 上报 在release版本才会上报
// if(BuildConfig.isRelease){ // if(BuildConfig.isRelease){
// CrashReport.initCrashReport(this, "", true) // CrashReport.initCrashReport(this, "", true)
@ -170,6 +174,27 @@ class MyApp : Application() {
RxTool.init(this) RxTool.init(this)
} }
private fun initX5() {
QbSdk.setCoreMinVersion(QbSdk.CORE_VER_ENABLE_202112);
val map = HashMap<String, Any>()
map[TbsCoreSettings.TBS_SETTINGS_USE_SPEEDY_CLASSLOADER] = true
map[TbsCoreSettings.TBS_SETTINGS_USE_DEXLOADER_SERVICE] = true
QbSdk.initTbsSettings(map)
val cb: QbSdk.PreInitCallback =
object : QbSdk.PreInitCallback {
override fun onViewInitFinished(arg0: Boolean) {
//x5內核初始化完成的回调为true表示x5内核加载成功否则表示x5内核加载失败会自动切换到系统内核。
Log.d("webX5", " onViewInitFinished is $arg0")
}
override fun onCoreInitFinished() {}
}
//x5内核初始化接口
if (!QbSdk.isTbsCoreInited()) {
QbSdk.initX5Environment(applicationContext, cb)
}
}
/** /**
* 初始化手环SDK * 初始化手环SDK

@ -224,6 +224,7 @@ class ARouterUrl {
const val RICH_TEXT = "/base/com/xty/base/act/RichTextAct" const val RICH_TEXT = "/base/com/xty/base/act/RichTextAct"
const val CHAT_MSG = "/base/com/xty/base/act/ChatMsgAct" const val CHAT_MSG = "/base/com/xty/base/act/ChatMsgAct"
const val VIDEO_PLAY = "/base/com/xty/base/act/VideoPlayerAct" const val VIDEO_PLAY = "/base/com/xty/base/act/VideoPlayerAct"
const val H5_ACT = "/base/com/xty/base/act/BaseTenCentWebViewActivity"
//service //service

@ -3,6 +3,6 @@
<corners android:radius="@dimen/dp_20" /> <corners android:radius="@dimen/dp_20" />
<solid android:color="@color/white" /> <solid android:color="@color/white" />
<stroke android:color="@color/col_25C" <stroke android:color="@color/col_02c"
android:width="@dimen/dp_1"/> android:width="@dimen/dp_1"/>
</shape> </shape>

@ -3,6 +3,6 @@
<corners android:radius="@dimen/dp_6" /> <corners android:radius="@dimen/dp_6" />
<solid android:color="@color/white" /> <solid android:color="@color/white" />
<stroke android:color="@color/col_02b" <stroke android:color="@color/col_02c"
android:width="@dimen/dp_1"/> android:width="@dimen/dp_1"/>
</shape> </shape>

@ -29,7 +29,10 @@ ext {
release_url: "https://auprty.com/app/"*/ release_url: "https://auprty.com/app/"*/
// //
debug_url : "http://java01.zhongjian365.com/app/", debug_url : "http://java01.zhongjian365.com/app/",
release_url: "http://175.6.39.20:8181/app/" release_url: "http://175.6.39.20:8181/app/",
h5_debug_url : "http://testbuilt.zhongjian365.com/",
h5_release_url : "http://built.zhongjian365.com/"
] ]

@ -35,6 +35,7 @@ android {
buildTypes { buildTypes {
release { release {
buildConfigField("String","url","\"${url.release_url}\"") buildConfigField("String","url","\"${url.release_url}\"")
buildConfigField("String","h5url","\"${url.h5_release_url}\"")
buildConfigField("String", "image_prefix","\"${imagePrefix.release_url}\"") buildConfigField("String", "image_prefix","\"${imagePrefix.release_url}\"")
buildConfigField("Boolean","isRelease",String.valueOf(true)) buildConfigField("Boolean","isRelease",String.valueOf(true))
@ -43,7 +44,7 @@ android {
} }
debug{ debug{
buildConfigField("String","url","\"${url.debug_url}\"") buildConfigField("String","url","\"${url.debug_url}\"")
buildConfigField("String","h5url","\"${url.h5_debug_url}\"")
buildConfigField("Boolean","isRelease",String.valueOf(false)) buildConfigField("Boolean","isRelease",String.valueOf(false))
buildConfigField("String", "image_prefix","\"${imagePrefix.debug_url}\"") buildConfigField("String", "image_prefix","\"${imagePrefix.debug_url}\"")
} }

@ -251,6 +251,14 @@
<activity android:name=".act.familyhealth.AddFamilyGuardianAct" <activity android:name=".act.familyhealth.AddFamilyGuardianAct"
android:launchMode="singleTop" android:launchMode="singleTop"
android:screenOrientation="portrait" /> android:screenOrientation="portrait" />
<activity android:name=".act.BloodCalibrationAct"
android:launchMode="singleTop"
android:screenOrientation="portrait" />
<activity android:name=".act.BloodCalibrationHistoryAct"
android:launchMode="singleTop"
android:screenOrientation="portrait" />
</application> </application>
</manifest> </manifest>

@ -49,7 +49,7 @@
android:paddingTop="@dimen/dp_10" android:paddingTop="@dimen/dp_10"
android:paddingBottom="@dimen/dp_10" android:paddingBottom="@dimen/dp_10"
android:text="退出管理" android:text="退出管理"
android:textColor="@color/col_8D0" android:textColor="@color/col_02c"
android:textSize="@dimen/sp_16" android:textSize="@dimen/sp_16"
android:textStyle="bold" android:textStyle="bold"
android:visibility="gone" /> android:visibility="gone" />

@ -35,6 +35,7 @@ android {
release { release {
buildConfigField("String","url","\"${url.release_url}\"") buildConfigField("String","url","\"${url.release_url}\"")
buildConfigField("String", "image_prefix","\"${imagePrefix.release_url}\"") buildConfigField("String", "image_prefix","\"${imagePrefix.release_url}\"")
buildConfigField("String","h5url","\"${url.h5_release_url}\"")
buildConfigField("Boolean","isRelease",String.valueOf(true)) buildConfigField("Boolean","isRelease",String.valueOf(true))
minifyEnabled false minifyEnabled false
@ -42,6 +43,7 @@ android {
} }
debug{ debug{
buildConfigField("String","url","\"${url.debug_url}\"") buildConfigField("String","url","\"${url.debug_url}\"")
buildConfigField("String","h5url","\"${url.h5_debug_url}\"")
buildConfigField("Boolean","isRelease",String.valueOf(false)) buildConfigField("Boolean","isRelease",String.valueOf(false))
buildConfigField("String", "image_prefix","\"${imagePrefix.debug_url}\"") buildConfigField("String", "image_prefix","\"${imagePrefix.debug_url}\"")

@ -16,11 +16,13 @@ import com.xty.common.Const
import com.xty.common.MMkvHelper import com.xty.common.MMkvHelper
import com.xty.common.MyLinkedMovementMethod import com.xty.common.MyLinkedMovementMethod
import com.xty.common.arouter.ARouterUrl import com.xty.common.arouter.ARouterUrl
import com.xty.common.arouter.RouteManager
import com.xty.common.bracelet.YCBBlueConnectHelper import com.xty.common.bracelet.YCBBlueConnectHelper
import com.xty.common.event.BlueToothConnectEvent import com.xty.common.event.BlueToothConnectEvent
import com.xty.common.event.MyInfoEvent import com.xty.common.event.MyInfoEvent
import com.xty.network.MyRetrofit import com.xty.network.MyRetrofit
import com.xty.network.model.SettingBean import com.xty.network.model.SettingBean
import com.zj365.mime.BuildConfig
import com.zj365.mime.R import com.zj365.mime.R
import com.zj365.mime.databinding.ActDevInfoBinding import com.zj365.mime.databinding.ActDevInfoBinding
import com.zj365.mime.vm.SettingVm import com.zj365.mime.vm.SettingVm
@ -118,6 +120,12 @@ class DevInfoAct : BaseVmAct<SettingVm>(),EasyPermissions.PermissionCallbacks {
binding.tvContactKefu.text = span binding.tvContactKefu.text = span
binding.tvDeviceSetting.setOnClickListener {
bundle.clear()
bundle.putString("web_site_url","${BuildConfig.h5url}pages/index/index?pageId=braceletSetting")
RouteManager.goAct(ARouterUrl.H5_ACT,bundle)
}
} }

@ -1,9 +1,11 @@
package com.xty.network.model package com.xty.network.model
import java.io.Serializable
data class BannerBean( data class BannerBean(
val title: String, val title: String,
val content: String, val content: String,
val bannerType: Int,//1:图文展示, 5app内部打开 10web外部跳转 15视频播放】imgUrl 图片地址linkAddress连接地址 val bannerType: Int,//1:图文展示, 5app内部打开 10web外部跳转 15视频播放】imgUrl 图片地址linkAddress连接地址
val imgUrl: String, val imgUrl: String,
val linkAddress: String val linkAddress: String
) ):Serializable

@ -3,10 +3,38 @@ package com.xty.network.model
import java.nio.DoubleBuffer import java.nio.DoubleBuffer
data class FoodRecoginzeInfo( data class FoodRecoginzeInfo(
val heat:Double, val heat:Double, //热量(大卡/100g)
val df:Double, val df:Double, //膳食纤维(g/100g
val cho:Double, val cho:Double,//碳水化合物(g/100g)
val chol:Double,
val na:DoubleBuffer val chol:Double,//胆固醇(mg/100g)
val na:Double,//钠(mg/100g)
val vit_a:Double,//维生素A(μg/100g)
val vit_b1:Double,//维生素B1(mg/100g)
val vit_c:Double,//维生素C(mg/100g)
val faca:Double,//质量(g)
val protein:Double,//蛋白质(g/100g)
val vit_b2:Double,//维生素B2(mg/100g)
val vpp:Double,//烟酸(mg/100g)
val vit_e:Double,//维生素E(mg/100g)
val name:String,//食品中文名
val fat:Double,//脂肪(g/100g)
val ca:Double,//钙(mg/100g)
val as_name:String,//别名
val fe:Double//铁(mg/100g)
) { ) {
} }
Loading…
Cancel
Save