app/src/main/java/com/fuban/driver/base/MyApplication.kt | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/fuban/driver/base/gaode/gpsnav/util/TTSController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/fuban/driver/ui/main/MainActivity.kt | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/fuban/driver/ui/pub/StartActivity.kt | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/fuban/driver/utils/view/UserRuleDialog.kt | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/res/color/selector_white_orange.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/res/drawable/bg_white_8dp.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/res/drawable/selector_bg_btn_left.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/res/drawable/selector_bg_btn_right.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/res/layout/activity_start.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/res/layout/dialog_user_rule.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
app/src/main/java/com/fuban/driver/base/MyApplication.kt
@@ -407,6 +407,7 @@ companion object { private const val TAG = "MyApplication" var canPlayVoice = false //进入主页才可以播放语言通知 protected var mTtsManager: TTSController? = null public var isLogin: Boolean = true @@ -508,7 +509,8 @@ showNum-- Handler(Looper.getMainLooper()).postDelayed({ if (showNum == 0) { getTTsManager().setVideoText("福伴司机已置于后台,可能会导致听单异常,里程计费差异,请勿切换。") if (canPlayVoice) getTTsManager().setVideoText("福伴司机已置于后台,可能会导致听单异常,里程计费差异,请勿切换。") } }, 600) app/src/main/java/com/fuban/driver/base/gaode/gpsnav/util/TTSController.java
@@ -3,6 +3,7 @@ import android.content.Context; import android.os.Handler; import android.os.Message; import android.util.Log; import com.amap.api.navi.AMapNaviListener; import com.amap.api.navi.model.AMapCalcRouteResult; @@ -102,6 +103,7 @@ } public void init() { Log.e("mmp","初始化"); if (systemTTS != null) { systemTTS.init(); } app/src/main/java/com/fuban/driver/ui/main/MainActivity.kt
@@ -56,6 +56,7 @@ } override fun initView() { MyApplication.canPlayVoice = true // var packageName = "com.android.providers.downloads"; // var intent = Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS); // intent.setData(Uri.parse("package:" + packageName)); @@ -330,4 +331,8 @@ } } override fun onDestroy() { super.onDestroy() MyApplication.canPlayVoice = false } } app/src/main/java/com/fuban/driver/ui/pub/StartActivity.kt
@@ -7,8 +7,8 @@ import android.webkit.WebSettings import android.webkit.WebView import androidx.core.app.ActivityCompat import cn.sinata.xldutils.utils.clickDelay import cn.sinata.xldutils.utils.textColor import androidx.core.os.bundleOf import cn.sinata.xldutils.utils.SPUtils import com.fuban.driver.R import com.fuban.driver.base.* import com.fuban.driver.bean.AgreeBean @@ -16,11 +16,9 @@ import com.fuban.driver.netUtls.callNet import com.fuban.driver.netUtls.getMapByAny import com.fuban.driver.netUtls.getToken import com.fuban.driver.ui.DialogUtil import com.fuban.driver.ui.main.MainActivity import com.fuban.driver.utils.Cache.CacheKey import kotlinx.android.synthetic.main.item_ys.view.* import org.greenrobot.eventbus.EventBus import com.fuban.driver.utils.view.UserRuleDialog import org.jetbrains.anko.startActivity class StartActivity : MyBaseActivity() { @@ -36,7 +34,7 @@ @SuppressLint("SourceLockedOrientationActivity") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) showYsDialog() checkPrivacy() // setRxpermiss() } @@ -81,53 +79,45 @@ override fun setOnclick() { } fun showYsDialog() { private var privacy = "" //隐私协议 private var user = "" //用户协议 fun checkPrivacy() { var isAgreen = CacheKey.getKeyStr("isAgreen") if (isAgreen.isEmpty()) { var dialog = DialogUtil.getDialog(this, R.layout.item_ys) var view = DialogUtil.getView(dialog) callys { setWebview(view.wv_content,it) privacy = it showPrivacyDialog() } view.tv_none.setOnClickListener { dialog.dismiss() } view.tv_agreet.clickDelay { CacheKey.putKeyStr("isAgreen", "1") dialog.dismiss() callLast() } view.tv_yx.clickDelay { view.tv_yx.textColor(this, R.color.white) view.tv_yh.textColor(this, R.color.main_yellow_qia) view.tv_yx.setBackgroundResource(R.drawable.bg_login_top_left) view.tv_yh.setBackgroundResource(R.drawable.bg_logion_top_right) callys { setWebview(view.wv_content,it) } } view.tv_yh.clickDelay { view.tv_yx.textColor(this, R.color.main_yellow_qia) view.tv_yh.textColor(this, R.color.white) view.tv_yx.setBackgroundResource(R.drawable.bg_logion_top_left) view.tv_yh.setBackgroundResource(R.drawable.bg_login_top_left_select) callyh { setWebview(view.wv_content,it) } } dialog.setOnDismissListener { if (CacheKey.getKeyStr("isAgreen").isEmpty()) finish() callyh { user = it showPrivacyDialog() } }else callLast() } private fun showPrivacyDialog(){ if (privacy.isNotEmpty() && user.isNotEmpty()) { val userRuleDialog = UserRuleDialog() userRuleDialog.arguments = bundleOf("privacy" to privacy, "user" to user) userRuleDialog.setDismissCallback(object : UserRuleDialog.OnDismiss { override fun onDismiss() { if (CacheKey.getKeyStr("isAgreen").isNullOrEmpty()) finish() else callLast() } }) val ft = supportFragmentManager.beginTransaction() ft.add(userRuleDialog, "rule") ft.commitAllowingStateLoss() } } fun callys(ok: (s: String) -> Unit) { var map = getMapByAny() map["type"] = 1 callNet(Api.queryByType, map) { callNet(false,Api.queryByType, map) { var data = gson.fromJson<AgreeBean>(it, AgreeBean::class.java) ok(data.data.content) } @@ -136,7 +126,7 @@ fun callyh(ok: (s: String) -> Unit) { var map = getMapByAny() map["type"] = 2 callNet(Api.queryByType, map) { callNet(false,Api.queryByType, map) { var data = gson.fromJson<AgreeBean>(it, AgreeBean::class.java) ok(data.data.content) } app/src/main/java/com/fuban/driver/utils/view/UserRuleDialog.kt
New file @@ -0,0 +1,104 @@ package com.fuban.driver.utils.view import android.content.Context import android.content.DialogInterface import android.os.Bundle import android.view.Gravity import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.webkit.WebChromeClient import android.webkit.WebSettings import androidx.fragment.app.DialogFragment import com.fuban.driver.R import com.fuban.driver.utils.Cache.CacheKey import kotlinx.android.synthetic.main.dialog_user_rule.* import org.jetbrains.anko.displayMetrics class UserRuleDialog: DialogFragment() { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? = inflater.inflate(R.layout.dialog_user_rule,container,false) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setStyle(STYLE_NO_FRAME, R.style.FadeDialog) } private val privacy by lazy { arguments!!.getString("privacy") } private val user by lazy { arguments!!.getString("user") } override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) dialog?.window?.setLayout((screenWidth()*0.88).toInt(), ViewGroup.LayoutParams.WRAP_CONTENT) dialog?.window?.setGravity(Gravity.CENTER) dialog?.setCanceledOnTouchOutside(false) } fun screenWidth():Int{ val dm = requireActivity().displayMetrics requireActivity().windowManager.defaultDisplay.getMetrics(dm) return dm.widthPixels } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) val settings = sc_content.settings settings.javaScriptEnabled = true settings.cacheMode = WebSettings.LOAD_CACHE_ELSE_NETWORK settings.javaScriptCanOpenWindowsAutomatically = true settings.builtInZoomControls = true settings.useWideViewPort = false //将图片调整到适合webview的大小 settings.setSupportZoom(false) //支持缩放 settings.supportMultipleWindows() //多窗口 settings.loadWithOverviewMode = true // 页面支持缩放: settings.useWideViewPort = true //设置此属性,可任意比例缩放 settings.defaultTextEncodingName = "utf-8" settings.domStorageEnabled = true settings.cacheMode = WebSettings.LOAD_CACHE_ELSE_NETWORK //关闭webview中缓存 settings.allowFileAccess = true //设置可以访问文件 settings.setNeedInitialFocus(true) //当webview调用requestFocus时为webview设置节点 settings.javaScriptCanOpenWindowsAutomatically = true //支持通过JS打开新窗口 settings.loadsImagesAutomatically = true //支持自动加载图片 sc_content.isScrollContainer = false sc_content.isScrollbarFadingEnabled = false sc_content.scrollBarStyle = View.SCROLLBARS_OUTSIDE_OVERLAY sc_content.webChromeClient = object : WebChromeClient() {} val sHead = "<html><head><meta name=\"viewport\" content=\"width=device-width, " + "initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=yes\" />" + "<style>img{max-width:100% !important;height:auto !important;}</style>" + "<style>body{max-width:100% !important;}</style>" + "</head><body>" sc_content.loadDataWithBaseURL(null, sHead + privacy, "text/html", "utf-8", null) tv_cancel.setOnClickListener { dismiss() } rg_title.setOnCheckedChangeListener { _, i -> if (i == R.id.rb_privacy) sc_content.loadDataWithBaseURL(null, sHead + privacy, "text/html", "utf-8", null) else sc_content.loadDataWithBaseURL(null, sHead + user, "text/html", "utf-8", null) } tv_ok.setOnClickListener { CacheKey.putKeyStr("isAgreen", "1") dismiss() } } override fun onDismiss(dialog: DialogInterface) { super.onDismiss(dialog) dismissCallbak?.onDismiss() } interface OnDismiss{ fun onDismiss() } private var dismissCallbak:OnDismiss? = null fun setDismissCallback(callback:OnDismiss){ this.dismissCallbak = callback } } app/src/main/res/color/selector_white_orange.xml
New file @@ -0,0 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:color="@color/white" android:state_checked="true"/> <item android:color="@color/main_yellow_qia" android:state_checked="false"/> </selector> app/src/main/res/drawable/bg_white_8dp.xml
New file @@ -0,0 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="@color/white"/> <corners android:radius="8dp"/> </shape> app/src/main/res/drawable/selector_bg_btn_left.xml
New file @@ -0,0 +1,15 @@ <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="true"> <shape> <solid android:color="@color/main_yellow_qia"/> <corners android:topLeftRadius="8dp"/> </shape> </item> <item android:state_checked="false"> <shape> <corners android:topLeftRadius="8dp"/> <stroke android:color="@color/main_yellow_qia" android:width="1dp"/> </shape> </item> </selector> app/src/main/res/drawable/selector_bg_btn_right.xml
New file @@ -0,0 +1,15 @@ <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="true"> <shape> <solid android:color="@color/main_yellow_qia"/> <corners android:topRightRadius="8dp"/> </shape> </item> <item android:state_checked="false"> <shape> <corners android:topRightRadius="8dp"/> <stroke android:color="@color/main_yellow_qia" android:width="1dp"/> </shape> </item> </selector> app/src/main/res/layout/activity_start.xml
@@ -6,6 +6,7 @@ android:layout_height="match_parent"> <ImageView android:id="@+id/iv" android:layout_width="wrap_content" android:layout_height="wrap_content" app:layout_constraintTop_toTopOf="parent" app/src/main/res/layout/dialog_user_rule.xml
New file @@ -0,0 +1,96 @@ <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="18dp" android:background="@drawable/bg_white_8dp"> <RadioGroup android:id="@+id/rg_title" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" app:layout_constraintTop_toTopOf="parent"> <RadioButton android:id="@+id/rb_privacy" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:background="@drawable/selector_bg_btn_left" android:button="@null" android:checked="true" android:gravity="center" android:paddingTop="12dp" android:paddingBottom="12dp" android:text="隐私协议" android:textColor="@color/selector_white_orange" android:textSize="15sp" /> <RadioButton android:id="@+id/rb_user" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:background="@drawable/selector_bg_btn_right" android:button="@null" android:gravity="center" android:paddingTop="12dp" android:paddingBottom="12dp" android:text="用户协议" android:textColor="@color/selector_white_orange" android:textSize="15sp" /> </RadioGroup> <WebView android:id="@+id/sc_content" android:layout_width="match_parent" android:layout_height="450dp" android:paddingStart="14dp" android:paddingEnd="14dp" app:layout_constraintTop_toBottomOf="@id/rg_title" /> <androidx.constraintlayout.widget.Guideline android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:id="@+id/center" app:layout_constraintGuide_percent="0.5" /> <TextView android:id="@+id/tv_cancel" android:layout_width="0dp" android:layout_height="wrap_content" android:gravity="center" android:text="不同意并退出" android:textColor="@color/textColorHint" android:textSize="14sp" android:background="@drawable/bg_login_left_back" app:layout_constraintEnd_toStartOf="@id/center" app:layout_constraintStart_toStartOf="parent" android:paddingTop="9dp" android:paddingBottom="9dp" android:layout_marginStart="20dp" android:layout_marginEnd="4dp" android:layout_marginTop="20dp" app:layout_constraintTop_toBottomOf="@id/sc_content" /> <TextView android:id="@+id/tv_ok" android:layout_width="0dp" android:layout_height="wrap_content" android:gravity="center" android:text="同意" android:textColor="@color/white" android:textSize="14sp" android:layout_marginStart="4dp" android:layout_marginEnd="20dp" android:textStyle="bold" android:paddingTop="9dp" android:paddingBottom="9dp" android:background="@drawable/bg_right_login_agreen" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@id/center" app:layout_constraintTop_toTopOf="@id/tv_cancel" /> </androidx.constraintlayout.widget.ConstraintLayout>