diff --git a/app/build.gradle b/app/build.gradle index 49f5ce1..45330a8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -18,8 +18,8 @@ applicationId "com.casic.br.operationsite" minSdkVersion 23 targetSdkVersion 33 - versionCode 1010 - versionName "1.0.1.0" + versionCode 1020 + versionName "1.0.2.0" } buildTypes { diff --git a/app/build.gradle b/app/build.gradle index 49f5ce1..45330a8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -18,8 +18,8 @@ applicationId "com.casic.br.operationsite" minSdkVersion 23 targetSdkVersion 33 - versionCode 1010 - versionName "1.0.1.0" + versionCode 1020 + versionName "1.0.2.0" } buildTypes { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 911bb69..b45866e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -20,6 +20,8 @@ + + @@ -72,6 +74,7 @@ + + + @@ -72,6 +74,7 @@ + + + @@ -72,6 +74,7 @@ + () { + + private lateinit var agentWeb: AgentWeb + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + ActivityStackManager.addActivity(this) + + val userHelmetCode = intent.getStringExtra(Constant.INTENT_PARAM) + + agentWeb = AgentWeb.with(this) + .setAgentWebParent( + binding.containerView, LinearLayout.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT + ) + ) + .useDefaultIndicator() + .setWebChromeClient(object : WebChromeClient() { + override fun onPermissionRequest(request: PermissionRequest?) { + request?.grant(request.resources) + } + }) + .setWebViewClient(object : WebViewClient() { + override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) { + + } + + override fun onPageFinished(view: WebView?, url: String?) { + + } + }) + .setSecurityType(AgentWeb.SecurityType.STRICT_CHECK) + .interceptUnkownUrl() + .createAgentWeb() + .ready() + .go( + "https://jls.huaweisoft.com/#/realvideo?" + + "id=${userHelmetCode}&" + + "appKey=${LocaleConstant.HELMET_VIDEO_APP_KEY}&" + + "secretKey=${LocaleConstant.HELMET_VIDEO_SECRET_KEY}" + ) + val webView = agentWeb.webCreator.webView + webView.settings.useWideViewPort = true + webView.settings.builtInZoomControls = true + webView.settings.setSupportZoom(true) + webView.settings.displayZoomControls = false + webView.setInitialScale(4) + } + + override fun initViewBinding(): ActivityHelmetVideoBinding { + return ActivityHelmetVideoBinding.inflate(layoutInflater) + } + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + binding.rootView.initImmersionBar(this, false, R.color.mainThemeColor) + binding.titleView.setOnClickListener(object : TitleBarView.OnClickListener { + override fun onLeftClick() { + finish() + } + + override fun onRightClick() { + + } + }) + } + + override fun onResume() { + super.onResume() + agentWeb.webLifeCycle.onResume() + } + + override fun onPause() { + agentWeb.webLifeCycle.onPause() + super.onPause() + } + + override fun onDestroy() { + agentWeb.webLifeCycle.onDestroy() + super.onDestroy() + } +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 49f5ce1..45330a8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -18,8 +18,8 @@ applicationId "com.casic.br.operationsite" minSdkVersion 23 targetSdkVersion 33 - versionCode 1010 - versionName "1.0.1.0" + versionCode 1020 + versionName "1.0.2.0" } buildTypes { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 911bb69..b45866e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -20,6 +20,8 @@ + + @@ -72,6 +74,7 @@ + () { + + private lateinit var agentWeb: AgentWeb + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + ActivityStackManager.addActivity(this) + + val userHelmetCode = intent.getStringExtra(Constant.INTENT_PARAM) + + agentWeb = AgentWeb.with(this) + .setAgentWebParent( + binding.containerView, LinearLayout.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT + ) + ) + .useDefaultIndicator() + .setWebChromeClient(object : WebChromeClient() { + override fun onPermissionRequest(request: PermissionRequest?) { + request?.grant(request.resources) + } + }) + .setWebViewClient(object : WebViewClient() { + override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) { + + } + + override fun onPageFinished(view: WebView?, url: String?) { + + } + }) + .setSecurityType(AgentWeb.SecurityType.STRICT_CHECK) + .interceptUnkownUrl() + .createAgentWeb() + .ready() + .go( + "https://jls.huaweisoft.com/#/realvideo?" + + "id=${userHelmetCode}&" + + "appKey=${LocaleConstant.HELMET_VIDEO_APP_KEY}&" + + "secretKey=${LocaleConstant.HELMET_VIDEO_SECRET_KEY}" + ) + val webView = agentWeb.webCreator.webView + webView.settings.useWideViewPort = true + webView.settings.builtInZoomControls = true + webView.settings.setSupportZoom(true) + webView.settings.displayZoomControls = false + webView.setInitialScale(4) + } + + override fun initViewBinding(): ActivityHelmetVideoBinding { + return ActivityHelmetVideoBinding.inflate(layoutInflater) + } + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + binding.rootView.initImmersionBar(this, false, R.color.mainThemeColor) + binding.titleView.setOnClickListener(object : TitleBarView.OnClickListener { + override fun onLeftClick() { + finish() + } + + override fun onRightClick() { + + } + }) + } + + override fun onResume() { + super.onResume() + agentWeb.webLifeCycle.onResume() + } + + override fun onPause() { + agentWeb.webLifeCycle.onPause() + super.onPause() + } + + override fun onDestroy() { + agentWeb.webLifeCycle.onDestroy() + super.onDestroy() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index 5eccd98..1429d68 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -37,7 +37,8 @@ import com.pengxh.kt.lite.widget.dialog.AlertControlDialog class WorkSiteTabActivity : KotlinBaseActivity(), - AMap.OnMarkerClickListener, AMap.InfoWindowAdapter, AMap.OnMapClickListener { + AMap.OnMarkerClickListener, AMap.InfoWindowAdapter, AMap.OnMapClickListener, + AMap.OnInfoWindowClickListener { private val kTag = "WorkSiteTabActivity" private val context = this @@ -46,6 +47,7 @@ private lateinit var deviceViewModel: DeviceViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var projectId: String + private lateinit var userHelmetCode: String private val polygonOptions by lazy { PolygonOptions() } private val latLngArray: MutableList = ArrayList() private val workers: MutableList = ArrayList() @@ -107,7 +109,8 @@ aMap.setInfoWindowAdapter(this) //地图点击事件,用于隐藏infoWindow aMap.setOnMapClickListener(this) - + //点击InfoWindow + aMap.setOnInfoWindowClickListener(this) /** * 数据初始化 * */ @@ -310,6 +313,7 @@ val workerId = marker.options.title workers.forEach { if (it.workerId == workerId) { + userHelmetCode = it.hatCode workerNameView.text = "名称:${it.workerName}" heartRateView.text = "心率:${it.heartRate}BPM" bloodOxygenView.text = "血氧:${it.bloodOxygen}%" @@ -322,6 +326,25 @@ } } + override fun onInfoWindowClick(marker: Marker?) { + marker?.apply { + AlertControlDialog.Builder() + .setContext(context) + .setTitle("视频通话") + .setMessage("确定开始视频通话?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + navigatePageTo(userHelmetCode) + } + + override fun onCancelClick() {} + }).build().show() + } + } + /** * 此方法不能修改整个 InfoWindow 的背景和边框,无论自定义的样式是什么样,SDK 都会在最外层添加一个默认的边框 * */ diff --git a/app/build.gradle b/app/build.gradle index 49f5ce1..45330a8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -18,8 +18,8 @@ applicationId "com.casic.br.operationsite" minSdkVersion 23 targetSdkVersion 33 - versionCode 1010 - versionName "1.0.1.0" + versionCode 1020 + versionName "1.0.2.0" } buildTypes { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 911bb69..b45866e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -20,6 +20,8 @@ + + @@ -72,6 +74,7 @@ + () { + + private lateinit var agentWeb: AgentWeb + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + ActivityStackManager.addActivity(this) + + val userHelmetCode = intent.getStringExtra(Constant.INTENT_PARAM) + + agentWeb = AgentWeb.with(this) + .setAgentWebParent( + binding.containerView, LinearLayout.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT + ) + ) + .useDefaultIndicator() + .setWebChromeClient(object : WebChromeClient() { + override fun onPermissionRequest(request: PermissionRequest?) { + request?.grant(request.resources) + } + }) + .setWebViewClient(object : WebViewClient() { + override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) { + + } + + override fun onPageFinished(view: WebView?, url: String?) { + + } + }) + .setSecurityType(AgentWeb.SecurityType.STRICT_CHECK) + .interceptUnkownUrl() + .createAgentWeb() + .ready() + .go( + "https://jls.huaweisoft.com/#/realvideo?" + + "id=${userHelmetCode}&" + + "appKey=${LocaleConstant.HELMET_VIDEO_APP_KEY}&" + + "secretKey=${LocaleConstant.HELMET_VIDEO_SECRET_KEY}" + ) + val webView = agentWeb.webCreator.webView + webView.settings.useWideViewPort = true + webView.settings.builtInZoomControls = true + webView.settings.setSupportZoom(true) + webView.settings.displayZoomControls = false + webView.setInitialScale(4) + } + + override fun initViewBinding(): ActivityHelmetVideoBinding { + return ActivityHelmetVideoBinding.inflate(layoutInflater) + } + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + binding.rootView.initImmersionBar(this, false, R.color.mainThemeColor) + binding.titleView.setOnClickListener(object : TitleBarView.OnClickListener { + override fun onLeftClick() { + finish() + } + + override fun onRightClick() { + + } + }) + } + + override fun onResume() { + super.onResume() + agentWeb.webLifeCycle.onResume() + } + + override fun onPause() { + agentWeb.webLifeCycle.onPause() + super.onPause() + } + + override fun onDestroy() { + agentWeb.webLifeCycle.onDestroy() + super.onDestroy() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index 5eccd98..1429d68 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -37,7 +37,8 @@ import com.pengxh.kt.lite.widget.dialog.AlertControlDialog class WorkSiteTabActivity : KotlinBaseActivity(), - AMap.OnMarkerClickListener, AMap.InfoWindowAdapter, AMap.OnMapClickListener { + AMap.OnMarkerClickListener, AMap.InfoWindowAdapter, AMap.OnMapClickListener, + AMap.OnInfoWindowClickListener { private val kTag = "WorkSiteTabActivity" private val context = this @@ -46,6 +47,7 @@ private lateinit var deviceViewModel: DeviceViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var projectId: String + private lateinit var userHelmetCode: String private val polygonOptions by lazy { PolygonOptions() } private val latLngArray: MutableList = ArrayList() private val workers: MutableList = ArrayList() @@ -107,7 +109,8 @@ aMap.setInfoWindowAdapter(this) //地图点击事件,用于隐藏infoWindow aMap.setOnMapClickListener(this) - + //点击InfoWindow + aMap.setOnInfoWindowClickListener(this) /** * 数据初始化 * */ @@ -310,6 +313,7 @@ val workerId = marker.options.title workers.forEach { if (it.workerId == workerId) { + userHelmetCode = it.hatCode workerNameView.text = "名称:${it.workerName}" heartRateView.text = "心率:${it.heartRate}BPM" bloodOxygenView.text = "血氧:${it.bloodOxygen}%" @@ -322,6 +326,25 @@ } } + override fun onInfoWindowClick(marker: Marker?) { + marker?.apply { + AlertControlDialog.Builder() + .setContext(context) + .setTitle("视频通话") + .setMessage("确定开始视频通话?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + navigatePageTo(userHelmetCode) + } + + override fun onCancelClick() {} + }).build().show() + } + } + /** * 此方法不能修改整个 InfoWindow 的背景和边框,无论自定义的样式是什么样,SDK 都会在最外层添加一个默认的边框 * */ diff --git a/app/src/main/res/layout/activity_helmet_video.xml b/app/src/main/res/layout/activity_helmet_video.xml new file mode 100644 index 0000000..bdef923 --- /dev/null +++ b/app/src/main/res/layout/activity_helmet_video.xml @@ -0,0 +1,33 @@ + + + + + + + + + \ No newline at end of file