diff --git a/app/build.gradle b/app/build.gradle
index 661e259..99ffb5b 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -70,6 +70,7 @@ android {
buildTypes {
release {
buildConfigField("String", "url", "\"${url.release_url}\"")
+ buildConfigField("String","h5url","\"${url.h5_release_url}\"")
buildConfigField("String", "image_prefix","\"${imagePrefix.release_url}\"")
buildConfigField("Boolean","isRelease",String.valueOf(true))
minifyEnabled false
@@ -78,6 +79,7 @@ android {
}
debug {
buildConfigField("String", "url", "\"${url.debug_url}\"")
+ buildConfigField("String","h5url","\"${url.h5_debug_url}\"")
buildConfigField("Boolean","isRelease",String.valueOf(false))
buildConfigField("String", "image_prefix","\"${imagePrefix.debug_url}\"")
signingConfig signingConfigs.release
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 91ab262..e2b446e 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -325,7 +325,12 @@
android:name="com.xty.common.xqr_code.XQRCodeAct"
android:launchMode="singleTop"
android:screenOrientation="portrait"/>
+
+
() {
finish()
}
- binding.tvContent.text = "1.注意事项、操作指南文案。平台能通过照片分析出大部分食物、水果蔬菜、菜品。上传更清晰完整的照片,分析结果更准确。" +
- "\n2.平台能通过照片分析出大部分食物、水果蔬菜、菜品。\n" +
- "3.上传更清晰完整的招聘,分析结果更准确。平台能通过照片分析出大部分食物。\n" +
- "4.上传更清晰完整的照片,分析结果更准确。平台能通过照片分析出大部分食物、水果蔬菜、菜品。\n" +
- "5.上传更清晰完整的招聘,分析结果更准确。平台能通过照片分析出大部分食物、水果蔬菜、菜品。上传更清晰完整的招聘,分析结果更准确。\n"
-
binding.tvDishes.setOnClickListener {
bottomSheetDialog?.show()
type = "1"
diff --git a/app/src/main/java/com/zj365/dc/activity/DietManagementAct.kt b/app/src/main/java/com/zj365/dc/activity/DietManagementAct.kt
index 679b87d..d7add37 100644
--- a/app/src/main/java/com/zj365/dc/activity/DietManagementAct.kt
+++ b/app/src/main/java/com/zj365/dc/activity/DietManagementAct.kt
@@ -6,6 +6,8 @@ import com.xty.base.act.BaseVmAct
import com.xty.base.vm.BaseVm
import com.xty.common.arouter.ARouterUrl
import com.xty.common.arouter.RouteManager
+import com.xty.common.util.CommonToastUtils
+import com.zj365.dc.BuildConfig
import com.zj365.dc.R
import com.zj365.dc.databinding.ActDietManagementBinding
@@ -40,17 +42,27 @@ class DietManagementAct : BaseVmAct(){
}
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 ->{
+ 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 ->{
-
+ bundle.clear()
+ bundle.putString("web_site_url","${BuildConfig.h5url}pages/index/index?pageId=diary")
+ RouteManager.goAct(ARouterUrl.H5_ACT,bundle)
}
R.id.rx_more ->{
-
+ CommonToastUtils.showToast("敬请期待")
}
}
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 80b1216..4a1f503 100644
--- a/app/src/main/java/com/zj365/dc/activity/MainActivity.kt
+++ b/app/src/main/java/com/zj365/dc/activity/MainActivity.kt
@@ -302,7 +302,7 @@ class MainActivity : BaseVmAct(), Consumer {
it[3]?.let {
if(it != null && it.size > 0){
- // DialogActivities(this,it[0].imgUrl).show()
+ DialogActivities(this,it[0]).show()
}
}
diff --git a/app/src/main/java/com/zj365/dc/activity/RecognizeResultAct.kt b/app/src/main/java/com/zj365/dc/activity/RecognizeResultAct.kt
index b82db22..559e1d1 100644
--- a/app/src/main/java/com/zj365/dc/activity/RecognizeResultAct.kt
+++ b/app/src/main/java/com/zj365/dc/activity/RecognizeResultAct.kt
@@ -19,6 +19,7 @@ import com.xty.common.arouter.RouteManager
import com.xty.common.picture.PictureUtils
import com.xty.common.util.SpannableUtils
import com.xty.network.model.FoodRecoginzeInfo
+import com.zj365.dc.BuildConfig
import com.zj365.dc.adapter.RecognizeResultAdapter
import com.zj365.dc.databinding.ActRecognizeResultBinding
import com.zj365.dc.vm.DietManagementVm
@@ -35,6 +36,10 @@ class RecognizeResultAct : BaseVmAct() {
var type:String? = null
var fileUrl :String? = null
+
+ var currentId:String?= null
+
+ var foodRecoginzeInfo: FoodRecoginzeInfo? = null
override fun liveObserver() {
mViewModel.foodRecoginzeInfoLiveData.observe(this){
adapter.setNewInstance(it.data)
@@ -61,6 +66,12 @@ class RecognizeResultAct : BaseVmAct() {
}
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() {
binding.recycler.layoutManager = LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,false)
binding.recycler.adapter = adapter
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()
+ }
}
}
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 8aa1c31..0e7a4f0 100644
--- a/app/src/main/java/com/zj365/dc/activity/RegisterAct.kt
+++ b/app/src/main/java/com/zj365/dc/activity/RegisterAct.kt
@@ -189,7 +189,10 @@ class RegisterAct : BaseVmAct() {
timer = null
}
mViewModel.login(binding.mAccount.text.toString().trim(),binding.mPsw.text.toString().trim())
- RxActivityTool.finishActivity(LoginAct::class.java)
+ runOnUiThread {
+ RxActivityTool.finishActivity(LoginAct::class.java)
+
+ }
}
mViewModel.codeLive.observe(this) {
diff --git a/app/src/main/java/com/zj365/dc/activity/WelcomeAct.kt b/app/src/main/java/com/zj365/dc/activity/WelcomeAct.kt
index 81a300c..708c535 100644
--- a/app/src/main/java/com/zj365/dc/activity/WelcomeAct.kt
+++ b/app/src/main/java/com/zj365/dc/activity/WelcomeAct.kt
@@ -12,6 +12,8 @@ import com.bumptech.glide.request.target.SimpleTarget
import com.bumptech.glide.request.transition.Transition
import com.gyf.immersionbar.ImmersionBar
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.xty.base.act.BaseVmAct
import com.xty.common.Const
@@ -47,6 +49,7 @@ class WelcomeAct : BaseVmAct() {
private val prevDialog by lazy {
PrevDialog(this, {
startTimer()
+ // initX5()
MMkvHelper.put("private", "")
}) {
finish()
@@ -231,6 +234,8 @@ class WelcomeAct : BaseVmAct() {
JPushHelper(this).stopOrResumeJPush(MMkvHelper.getBoolean(Const.NOTICE_FLAG))
}
+
+
override fun onDestroy() {
job?.let {
it.cancel()
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 50f0a5b..9d36000 100644
--- a/app/src/main/java/com/zj365/dc/fragment/DynamicManagementFrag.kt
+++ b/app/src/main/java/com/zj365/dc/fragment/DynamicManagementFrag.kt
@@ -214,30 +214,30 @@ class DynamicManagementFrag : BaseVmFrag() , EasyPermission
} else {
}*/
-
- if (deviceType == "X1" || deviceType == "X2") {
+ goPage(index - 1)
+ /*if (deviceType == "X1" || deviceType == "X2") {
goPage(index - 2)
} else {
goPage(index - 1)
- }
+ }*/
}
6 -> {
val deviceType = MMkvHelper.getString(Const.DEVICE_TYPE)
- if (deviceType == "X1" || deviceType == "X2") {
+ /*if (deviceType == "X1" || deviceType == "X2") {
goPage(4)
- } else {
+ } else {*/
goPage(index - 1)
- }
+ // }
}
9 -> { //心电隐藏的前提下,尿酸为8 否则为9
val deviceType = MMkvHelper.getString(Const.DEVICE_TYPE)
- if (deviceType == "X1" || deviceType == "X2") {
+ /* if (deviceType == "X1" || deviceType == "X2") {
goPage(6)
- } else {
+ } else {*/
goPage(7)
- }
+ // }
}
7 -> { //血糖
@@ -257,11 +257,11 @@ class DynamicManagementFrag : BaseVmFrag() , EasyPermission
// }
// }
val deviceType = MMkvHelper.getString(Const.DEVICE_TYPE)
- if (deviceType == "X1" || deviceType == "X2") {
+ /*if (deviceType == "X1" || deviceType == "X2") {
goPage(5)
- } else {
+ } else {*/
goPage(index - 1)
- }
+ // }
}
10 -> { // //心电隐藏的前提下血脂为9 否则为10
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 6c816cb..db550de 100644
--- a/app/src/main/java/com/zj365/dc/fragment/MineFrag.kt
+++ b/app/src/main/java/com/zj365/dc/fragment/MineFrag.kt
@@ -4,6 +4,7 @@ import android.Manifest
import android.content.Intent
import android.net.Uri
import android.os.Build
+import android.text.TextUtils
import android.view.View
import androidx.annotation.RequiresApi
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.activity.MainActivity
import com.zj365.dc.databinding.FragMineBinding
+import com.zj365.health.act.HealthMainAct
import com.zj365.health.weight.DialogTip
import com.zj365.mime.act.DevInfoAct
import com.zj365.mime.vm.SettingVm
@@ -142,7 +144,21 @@ class MineFrag : BaseVmFrag(),EasyPermissions.PermissionCallbacks {
if(MMkvHelper.getLong(Const.USER_ID).toString() == "0"){
RouteManager.goAct(ARouterUrl.LOGIN_ACT)
}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(),EasyPermissions.PermissionCallbacks {
}
user = it.user
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.mLevel.text = it.grade
if (it.user.avatarUrl.isNullOrEmpty()) {
diff --git a/app/src/main/res/layout/act_calorie_analyze.xml b/app/src/main/res/layout/act_calorie_analyze.xml
index 125a278..ef539fe 100644
--- a/app/src/main/res/layout/act_calorie_analyze.xml
+++ b/app/src/main/res/layout/act_calorie_analyze.xml
@@ -9,63 +9,45 @@
-
-
-
-
-
-
-
+ android:background="@mipmap/bg_hot_card_analysis"
+ android:layout_gravity="center_horizontal"
+ android:layout_marginTop="@dimen/dp_40"/>
-
+
-
+
+ android:orientation="vertical"
+ android:layout_marginLeft="@dimen/dp_58"
+ android:layout_marginRight="@dimen/dp_58"
+ android:layout_marginTop="@dimen/dp_24">
-
-
+ android:layout_below="@+id/ll_analyze"
+ android:paddingTop="@dimen/dp_22"
+ android:paddingLeft="@dimen/dp_16"
+ android:paddingRight="@dimen/dp_16"
+ android:paddingBottom="@dimen/dp_25"
+ android:background="@drawable/shape_8round_white">
+
-
-
-
-
-
-
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ android:gravity="center_vertical"
+ >
+
+ android:text="识别结果"
+ android:textStyle="bold"
+ android:textSize="@dimen/sp_17"
+ android:paddingHorizontal="@dimen/dp_10"
+ />
+
+
+
+
+
+
+
+
+
-
+ android:text="营养成分"
+ android:textStyle="bold"
+ android:textSize="@dimen/sp_17"
+ android:paddingHorizontal="@dimen/dp_10"
+ />
-
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/base/src/main/java/com/xty/base/act/BaseTenCentWebViewActivity.kt b/base/src/main/java/com/xty/base/act/BaseTenCentWebViewActivity.kt
new file mode 100644
index 0000000..57457aa
--- /dev/null
+++ b/base/src/main/java/com/xty/base/act/BaseTenCentWebViewActivity.kt
@@ -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(),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) {
+
+ }
+ }
\ No newline at end of file
diff --git a/base/src/main/java/com/xty/base/dialog/DialogActivities.kt b/base/src/main/java/com/xty/base/dialog/DialogActivities.kt
index ac3ffeb..fc7285d 100644
--- a/base/src/main/java/com/xty/base/dialog/DialogActivities.kt
+++ b/base/src/main/java/com/xty/base/dialog/DialogActivities.kt
@@ -2,6 +2,7 @@ package com.xty.base.dialog
import android.content.Context
import android.graphics.Bitmap
+import android.os.Bundle
import android.view.View
import com.bumptech.glide.Glide
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.common.R
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.setImage
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) }
override fun setLayout() = binding.root
override fun initView() {
super.initView()
setDialogPadding(SizeUtil.dp2px(context, 30f), 0, SizeUtil.dp2px(context, 30f), 0)
- imgUrl?.let {
-
- binding.imgActivies.setImage(context,it)
- /* Glide.with(context).asBitmap().load(it).error(R.mipmap.ic_welcome_main_bg)
+ bannerBean?.let {
+ binding.imgActivies.setBigImage(context,it.imgUrl)
+ /*Glide.with(context).asBitmap().load(it.imgUrl).error(R.mipmap.ic_welcome_main_bg)
.into(object : SimpleTarget() {
override fun onResourceReady(
resource: Bitmap,
@@ -38,6 +41,12 @@ class DialogActivities (context:Context,var imgUrl:String?): BaseDialog(context)
binding.imgClose.setOnClickListener { dismiss() }
binding.imgActivies.setOnClickListener {
+ bannerBean?.let {
+ var bundle = Bundle()
+ bundle.putString("title", it.title)
+ bundle.putString("url", it.linkAddress)
+ RouteManager.goAct(ARouterUrl.WEB_ACT, bundle)
+ }
}
}
diff --git a/base/src/main/java/com/xty/base/h5/CloudJSBridge.kt b/base/src/main/java/com/xty/base/h5/CloudJSBridge.kt
new file mode 100644
index 0000000..d87fc87
--- /dev/null
+++ b/base/src/main/java/com/xty/base/h5/CloudJSBridge.kt
@@ -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("敬请期待")
+
+ }
+
+}
\ No newline at end of file
diff --git a/base/src/main/java/com/xty/base/h5/IJsBridge.kt b/base/src/main/java/com/xty/base/h5/IJsBridge.kt
new file mode 100644
index 0000000..b33ffd9
--- /dev/null
+++ b/base/src/main/java/com/xty/base/h5/IJsBridge.kt
@@ -0,0 +1,7 @@
+package com.xty.base.h5
+
+interface IJsBridge {
+ fun sendDataToJS(functionName: String, data: String)
+
+ fun switchView(name: String, data: String)
+}
\ No newline at end of file
diff --git a/base/src/main/java/com/xty/base/h5/JsBridge.kt b/base/src/main/java/com/xty/base/h5/JsBridge.kt
new file mode 100644
index 0000000..5c08cc2
--- /dev/null
+++ b/base/src/main/java/com/xty/base/h5/JsBridge.kt
@@ -0,0 +1,11 @@
+package com.xty.base.h5
+
+import android.content.Context
+
+class JsBridge(context: Context, listener: IJsBridge) : CloudJSBridge(context, listener) {
+
+
+
+
+
+}
diff --git a/base/src/main/java/com/xty/base/h5/WebUtils.kt b/base/src/main/java/com/xty/base/h5/WebUtils.kt
new file mode 100644
index 0000000..20d4ecf
--- /dev/null
+++ b/base/src/main/java/com/xty/base/h5/WebUtils.kt
@@ -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()
+ }
+}
\ No newline at end of file
diff --git a/base/src/main/java/com/xty/base/utils/ContextUtils.kt b/base/src/main/java/com/xty/base/utils/ContextUtils.kt
new file mode 100644
index 0000000..1c7716f
--- /dev/null
+++ b/base/src/main/java/com/xty/base/utils/ContextUtils.kt
@@ -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")
+ }
+}
\ No newline at end of file
diff --git a/base/src/main/java/com/xty/base/utils/NetworkUtils.java b/base/src/main/java/com/xty/base/utils/NetworkUtils.java
new file mode 100644
index 0000000..9af3e94
--- /dev/null
+++ b/base/src/main/java/com/xty/base/utils/NetworkUtils.java
@@ -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);
+ }
+}
diff --git a/base/src/main/java/com/xty/base/utils/SystemBarHelper.kt b/base/src/main/java/com/xty/base/utils/SystemBarHelper.kt
new file mode 100644
index 0000000..42ccb8e
--- /dev/null
+++ b/base/src/main/java/com/xty/base/utils/SystemBarHelper.kt
@@ -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
+ }
+}
\ No newline at end of file
diff --git a/base/src/main/res/layout/act_base_tencent_webview.xml b/base/src/main/res/layout/act_base_tencent_webview.xml
new file mode 100644
index 0000000..9baad2f
--- /dev/null
+++ b/base/src/main/res/layout/act_base_tencent_webview.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/base/src/main/res/layout/dialog_activities.xml b/base/src/main/res/layout/dialog_activities.xml
index e41d590..94b4ad0 100644
--- a/base/src/main/res/layout/dialog_activities.xml
+++ b/base/src/main/res/layout/dialog_activities.xml
@@ -4,21 +4,25 @@
android:orientation="vertical"
android:gravity="center"
android:layout_width="match_parent"
- android:layout_height="wrap_content">
+ android:layout_height="match_parent">
-
diff --git a/common/build.gradle b/common/build.gradle
index d1c43f0..014eb1a 100644
--- a/common/build.gradle
+++ b/common/build.gradle
@@ -87,6 +87,7 @@ dependencies {
api files('libs/rtk-bbpro-core-1.5.9.jar')
api files('libs/rtk-core-1.1.7.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")
kapt rely.arouter_compiler
kapt rely.glide_compiler
diff --git a/common/libs/tbs_sdk_thirdapp_v4.3.0.386_44286_sharewithdownloadwithfile_withoutGame_obfs_20230210_114429.jar b/common/libs/tbs_sdk_thirdapp_v4.3.0.386_44286_sharewithdownloadwithfile_withoutGame_obfs_20230210_114429.jar
new file mode 100644
index 0000000..465ea1b
Binary files /dev/null and b/common/libs/tbs_sdk_thirdapp_v4.3.0.386_44286_sharewithdownloadwithfile_withoutGame_obfs_20230210_114429.jar differ
diff --git a/common/src/main/java/com/xty/common/app/MyApp.kt b/common/src/main/java/com/xty/common/app/MyApp.kt
index 904b476..c6ec44e 100644
--- a/common/src/main/java/com/xty/common/app/MyApp.kt
+++ b/common/src/main/java/com/xty/common/app/MyApp.kt
@@ -9,6 +9,7 @@ import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.os.Build
+import android.util.Log
import cat.ereza.customactivityoncrash.CustomActivityOnCrash
import cat.ereza.customactivityoncrash.config.CaocConfig
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.openapi.IWXAPI
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.xty.common.*
import com.xty.common.bracelet.checkBlueConnectPermission
@@ -68,6 +71,7 @@ class MyApp : Application() {
initUMengSdk()
initRefresh()
registerBlueToothBoardCastReceiver()
+ initX5()
//bugly 上报 在release版本才会上报
// if(BuildConfig.isRelease){
// CrashReport.initCrashReport(this, "", true)
@@ -170,6 +174,27 @@ class MyApp : Application() {
RxTool.init(this)
}
+ private fun initX5() {
+ QbSdk.setCoreMinVersion(QbSdk.CORE_VER_ENABLE_202112);
+ val map = HashMap()
+ 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
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 3d37fdc..93e1cac 100644
--- a/common/src/main/java/com/xty/common/arouter/ARouterUrl.kt
+++ b/common/src/main/java/com/xty/common/arouter/ARouterUrl.kt
@@ -224,6 +224,7 @@ class ARouterUrl {
const val RICH_TEXT = "/base/com/xty/base/act/RichTextAct"
const val CHAT_MSG = "/base/com/xty/base/act/ChatMsgAct"
const val VIDEO_PLAY = "/base/com/xty/base/act/VideoPlayerAct"
+ const val H5_ACT = "/base/com/xty/base/act/BaseTenCentWebViewActivity"
//service
diff --git a/common/src/main/res/drawable/shape_btn_select_bg_25c.xml b/common/src/main/res/drawable/shape_btn_select_bg_25c.xml
index 5b221d2..b46bdea 100644
--- a/common/src/main/res/drawable/shape_btn_select_bg_25c.xml
+++ b/common/src/main/res/drawable/shape_btn_select_bg_25c.xml
@@ -3,6 +3,6 @@
-
\ No newline at end of file
diff --git a/common/src/main/res/drawable/shape_btn_select_bg_rad6.xml b/common/src/main/res/drawable/shape_btn_select_bg_rad6.xml
index b1a68f1..4df8fd4 100644
--- a/common/src/main/res/drawable/shape_btn_select_bg_rad6.xml
+++ b/common/src/main/res/drawable/shape_btn_select_bg_rad6.xml
@@ -3,6 +3,6 @@
-
\ No newline at end of file
diff --git a/config.gradle b/config.gradle
index d861baf..37961cd 100644
--- a/config.gradle
+++ b/config.gradle
@@ -29,7 +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://175.6.39.20:8181/app/",
+
+ h5_debug_url : "http://testbuilt.zhongjian365.com/",
+ h5_release_url : "http://built.zhongjian365.com/"
]
diff --git a/health/build.gradle b/health/build.gradle
index ef1f763..7fa1109 100644
--- a/health/build.gradle
+++ b/health/build.gradle
@@ -35,6 +35,7 @@ android {
buildTypes {
release {
buildConfigField("String","url","\"${url.release_url}\"")
+ buildConfigField("String","h5url","\"${url.h5_release_url}\"")
buildConfigField("String", "image_prefix","\"${imagePrefix.release_url}\"")
buildConfigField("Boolean","isRelease",String.valueOf(true))
@@ -43,7 +44,7 @@ android {
}
debug{
buildConfigField("String","url","\"${url.debug_url}\"")
-
+ buildConfigField("String","h5url","\"${url.h5_debug_url}\"")
buildConfigField("Boolean","isRelease",String.valueOf(false))
buildConfigField("String", "image_prefix","\"${imagePrefix.debug_url}\"")
}
diff --git a/health/src/main/AndroidManifest.xml b/health/src/main/AndroidManifest.xml
index a3dd066..9f248a3 100644
--- a/health/src/main/AndroidManifest.xml
+++ b/health/src/main/AndroidManifest.xml
@@ -251,6 +251,14 @@
+
+
+
+
\ No newline at end of file
diff --git a/health/src/main/res/layout/act_blood_calibeation_history.xml b/health/src/main/res/layout/act_blood_calibeation_history.xml
index 17171b7..9107c3a 100644
--- a/health/src/main/res/layout/act_blood_calibeation_history.xml
+++ b/health/src/main/res/layout/act_blood_calibeation_history.xml
@@ -49,7 +49,7 @@
android:paddingTop="@dimen/dp_10"
android:paddingBottom="@dimen/dp_10"
android:text="退出管理"
- android:textColor="@color/col_8D0"
+ android:textColor="@color/col_02c"
android:textSize="@dimen/sp_16"
android:textStyle="bold"
android:visibility="gone" />
diff --git a/mine/build.gradle b/mine/build.gradle
index 634f1a6..3280f00 100644
--- a/mine/build.gradle
+++ b/mine/build.gradle
@@ -35,6 +35,7 @@ android {
release {
buildConfigField("String","url","\"${url.release_url}\"")
buildConfigField("String", "image_prefix","\"${imagePrefix.release_url}\"")
+ buildConfigField("String","h5url","\"${url.h5_release_url}\"")
buildConfigField("Boolean","isRelease",String.valueOf(true))
minifyEnabled false
@@ -42,6 +43,7 @@ android {
}
debug{
buildConfigField("String","url","\"${url.debug_url}\"")
+ buildConfigField("String","h5url","\"${url.h5_debug_url}\"")
buildConfigField("Boolean","isRelease",String.valueOf(false))
buildConfigField("String", "image_prefix","\"${imagePrefix.debug_url}\"")
diff --git a/mine/src/main/java/com/zj365/mime/act/DevInfoAct.kt b/mine/src/main/java/com/zj365/mime/act/DevInfoAct.kt
index e12eac7..cf2fc3c 100644
--- a/mine/src/main/java/com/zj365/mime/act/DevInfoAct.kt
+++ b/mine/src/main/java/com/zj365/mime/act/DevInfoAct.kt
@@ -16,11 +16,13 @@ import com.xty.common.Const
import com.xty.common.MMkvHelper
import com.xty.common.MyLinkedMovementMethod
import com.xty.common.arouter.ARouterUrl
+import com.xty.common.arouter.RouteManager
import com.xty.common.bracelet.YCBBlueConnectHelper
import com.xty.common.event.BlueToothConnectEvent
import com.xty.common.event.MyInfoEvent
import com.xty.network.MyRetrofit
import com.xty.network.model.SettingBean
+import com.zj365.mime.BuildConfig
import com.zj365.mime.R
import com.zj365.mime.databinding.ActDevInfoBinding
import com.zj365.mime.vm.SettingVm
@@ -118,6 +120,12 @@ class DevInfoAct : BaseVmAct(),EasyPermissions.PermissionCallbacks {
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)
+ }
+
}
diff --git a/network/src/main/java/com/xty/network/model/BannerBean.kt b/network/src/main/java/com/xty/network/model/BannerBean.kt
index c75a344..4d9d15b 100644
--- a/network/src/main/java/com/xty/network/model/BannerBean.kt
+++ b/network/src/main/java/com/xty/network/model/BannerBean.kt
@@ -1,9 +1,11 @@
package com.xty.network.model
+import java.io.Serializable
+
data class BannerBean(
val title: String,
val content: String,
val bannerType: Int,//1:图文展示, 5:app内部打开, 10:web外部跳转, 15:视频播放】,imgUrl 图片地址,linkAddress,连接地址
val imgUrl: String,
val linkAddress: String
-)
\ No newline at end of file
+):Serializable
\ No newline at end of file
diff --git a/network/src/main/java/com/xty/network/model/FoodRecoginzeInfo.kt b/network/src/main/java/com/xty/network/model/FoodRecoginzeInfo.kt
index 2d19151..bfee988 100644
--- a/network/src/main/java/com/xty/network/model/FoodRecoginzeInfo.kt
+++ b/network/src/main/java/com/xty/network/model/FoodRecoginzeInfo.kt
@@ -3,10 +3,38 @@ package com.xty.network.model
import java.nio.DoubleBuffer
data class FoodRecoginzeInfo(
- val heat:Double,
- val df:Double,
- val cho:Double,
- val chol:Double,
- val na:DoubleBuffer
+ val heat:Double, //热量(大卡/100g)
+ val df:Double, //膳食纤维(g/100g
+ val cho:Double,//碳水化合物(g/100g)
+
+ 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)
+
) {
}
\ No newline at end of file