app/build.gradle
@@ -24,13 +24,13 @@ applicationId "com.fuban.driver" minSdkVersion 21 targetSdkVersion 29 versionCode 1 versionName "1.0" versionCode 4 versionName "3.0.1" multiDexEnabled true testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" ndk { // 设置支持的SO库架构,第三方给的so库哪几种架构,就配置这几种架构 abiFilters 'armeabi' abiFilters 'armeabi-v7a','arm64-v8a' } applicationVariants.all { variant -> // 更新至Android Studio 3.3 gradle 4.10.1 app/libs/Msc.jarBinary files differ
app/src/main/AndroidManifest.xml
@@ -16,7 +16,6 @@ <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.VIBRATE" /> <!-- 通知权限 --> <uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" /> <!-- 拨打电话 --> <uses-permission android:name="android.permission.CALL_PHONE" /> <!-- Camera权限 --> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- //获取统计数据 --> @@ -36,10 +35,10 @@ <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位 --> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <!-- 用于申请调用A-GPS模块 --> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> <!-- 用于申请获取蓝牙信息进行室内定位 --> <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <!-- <uses-permission android:name="android.permission.BLUETOOTH" />--> <!-- <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />--> <uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera.autofocus" /> @@ -47,7 +46,6 @@ <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <uses-permission android:name="android.permission.READ_CONTACTS" /> app/src/main/java/com/fuban/driver/base/Const.java
@@ -30,22 +30,17 @@ public static String REQUEST_INSTALL_PACKAGES = "android.permission.REQUEST_INSTALL_PACKAGES"; public static String[] PERMISSIONS_LIST = {Manifest.permission.READ_EXTERNAL_STORAGE, public static String[] PERMISSIONS_LIST = { Manifest.permission.READ_PHONE_STATE , Manifest.permission.WRITE_EXTERNAL_STORAGE , Manifest.permission.CAMERA , Manifest.permission.ACCESS_FINE_LOCATION , Manifest.permission.ACCESS_COARSE_LOCATION , Manifest.permission.ACCESS_BACKGROUND_LOCATION , Manifest.permission.CALL_PHONE , Manifest.permission.READ_LOGS , Manifest.permission.SET_DEBUG_APP , Manifest.permission.SYSTEM_ALERT_WINDOW , Manifest.permission.GET_ACCOUNTS , Manifest.permission.WRITE_APN_SETTINGS }; public static class ShowIntent { @@ -77,5 +72,7 @@ public static String FIRST_LOGIN = "FIRST_LOGIN"; public static String REFUSE_LOCATION = "REFUSE_LOCATION"; } app/src/main/java/com/fuban/driver/base/MyApplication.kt
@@ -68,6 +68,17 @@ handleSSLHandshake() //如果是主进程 XUI.init(this) registerActivityLifecycleCallbacks(this) // CrashReport.initCrashReport(getApplicationContext(), "444bb776ed", false); LogUtils.OpenLog(true) initUpPoint() initSocket() } /** * 延迟初始化,在用户同意隐私协议后进行 */ fun initSdk(){ UMConfigure.init( this, "640ae80cba6a5259c41ab641", @@ -75,13 +86,8 @@ UMConfigure.DEVICE_TYPE_PHONE, "" ) registerActivityLifecycleCallbacks(this) PlatformConfig.setWeixin("wx19a713b4943f9568", "5d4ca951a855b1e2c86a844cd42fd133") PlatformConfig.setQQZone("1112151767", "5viZ7mQkNkYtUr7b") //qq互联 // CrashReport.initCrashReport(getApplicationContext(), "444bb776ed", false); LogUtils.OpenLog(true) initUpPoint() initSocket() JPushInterface.setDebugMode(true) JPushInterface.init(this) setAlisa() @@ -502,7 +508,7 @@ showNum-- Handler(Looper.getMainLooper()).postDelayed({ if (showNum == 0) { getTTsManager().setVideoText("福伴出行司机已置于后台,可能会导致听单异常,里程计费差异,请勿切换。") getTTsManager().setVideoText("福伴司机已置于后台,可能会导致听单异常,里程计费差异,请勿切换。") } }, 600) app/src/main/java/com/fuban/driver/ui/DialogUtil.kt
@@ -194,7 +194,7 @@ fun<T> getOptionListDialog(context: Context, list: List<T>, listTwo: List<T>, lisener:OnOptionsSelectListener){ val pickerView: OptionsPickerView<T> = OptionsPickerBuilder(context, lisener) .setTitleText("选择地区") .setTitleText("") .setCancelColor(ContextCompat.getColor(context, R.color.black)) .setDividerColor(ContextCompat.getColor(context, R.color.white)) .setSubmitColor(ContextCompat.getColor(context, R.color.main_yellow)) app/src/main/java/com/fuban/driver/ui/adapter/CitySelectAdapter.kt
@@ -30,6 +30,7 @@ .build() it.itemView.tv_city_name.text = item!!.name var adapter = SelectCityDetailAdapter() adapter.parentName = item?.name?:"" it.itemView.recycler_view_point.layoutManager =chipsLayoutManager as RecyclerView.LayoutManager it.itemView.recycler_view_point.adapter = adapter adapter.data.addAll(item.sites) app/src/main/java/com/fuban/driver/ui/adapter/SelectCityDetailAdapter.kt
@@ -11,6 +11,7 @@ import org.greenrobot.eventbus.EventBus class SelectCityDetailAdapter: BaseRvAdapter<SitePointBean.DataBean.SitesBean>() { var parentName = "" override fun getLayoutResId(viewType: Int): Int { return R.layout.item_select_city_detail } @@ -19,7 +20,7 @@ holder?.let { it.itemView.tv_name.text = item!!.name it.itemView.tv_name.clickDelay { EventBus.getDefault().post(BaseEvent(BaseEvent.SELECT_POINT_SITE,item.name,item.id.toString())) EventBus.getDefault().post(BaseEvent(BaseEvent.SELECT_POINT_SITE,item.name,item.id.toString(),parentName)) } } } app/src/main/java/com/fuban/driver/ui/main/MainActivity.kt
@@ -1,5 +1,6 @@ package com.fuban.driver.ui.main import android.Manifest import android.content.ActivityNotFoundException import android.content.Intent import android.os.Handler @@ -34,6 +35,7 @@ import com.fuban.driver.utils.download.DownloadUtil import com.google.gson.Gson import com.lljjcoder.style.citylist.Toast.ToastUtils import com.tbruyelle.rxpermissions2.RxPermissions import kotlinx.android.synthetic.main.activity_main.* import kotlinx.android.synthetic.main.app_title.* import org.greenrobot.eventbus.EventBus @@ -58,8 +60,18 @@ // var intent = Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS); // intent.setData(Uri.parse("package:" + packageName)); // startActivity(intent); ActivityCompat.requestPermissions(this, Const.PERMISSIONS_LIST, 101); setTitleText("福伴出行司机") if (CacheKey.getKeyStr(Const.REFUSE_LOCATION).isNotEmpty()&&!RxPermissions(this).isGranted(Manifest.permission.ACCESS_FINE_LOCATION)){ toast("没有定位权限,您将无法收到新订单推送") }else{ val subscribe = RxPermissions(this).request(Manifest.permission.ACCESS_FINE_LOCATION).subscribe { if (!it){ toast("没有定位权限,您将无法收到新订单推送") CacheKey.putKeyStr(Const.REFUSE_LOCATION,"1") } } } setTitleText("福伴司机") tv_Left.setDrawableLeft(R.mipmap.icon_nav_user) iv_right_title.setImageResource(R.mipmap.icon_nav_news) addFragment(mainFragment, R.id.rl_container) @@ -73,9 +85,6 @@ MyApplication.addOrderView(qeeOrderView) } var qeeOrderView = object : MyApplication.OrderStatueView { override fun orderInfo(data: OrderSimpleData?) { @@ -125,13 +134,13 @@ if (data.data.version != "" && data.data.version != Utils.getAppVersion(this)) { if (data.data.mandatory == 2) { DialogUtil.getDelAndSureDialog(this, "有新版本是否更新?", {}, { DownloadUtil(this).downloadAPK(data.data.url, "福伴出行司机端") DownloadUtil(this).downloadAPK(data.data.url, "福伴司机端") }) } else if (data.data.mandatory == 1) { DialogUtil.getDelAndSureDialog(this, "版本已过时,是否强制升级?", { EventBus.getDefault().post(BaseEvent(BaseEvent.OUT_APP)) }, { DownloadUtil(this).downloadAPK(data.data.url, "福伴出行司机端") DownloadUtil(this).downloadAPK(data.data.url, "福伴司机端") ToastUtils.showShortToast(this, "后台开始下载,请等待") }) }else{ @@ -320,4 +329,5 @@ CacheKey.putKeyStr("location",Gson().toJson(p0)) } } } app/src/main/java/com/fuban/driver/ui/main/add_order/AddCityOrderActivity.kt
@@ -19,10 +19,7 @@ import com.fuban.driver.ui.DialogUtil import com.fuban.driver.ui.adapter.PopPeopleNUmAdapter import com.fuban.driver.ui.adapter.SelectNumberAdapter import com.fuban.driver.utils.Cache.CacheKey import com.fuban.driver.utils.DateUtil import com.fuban.driver.utils.PhoneCheckUtil import com.fuban.driver.wxapi.WXPayEntryActivity import kotlinx.android.synthetic.main.activity_add_city_order.* import kotlinx.android.synthetic.main.pop_pay_city.view.* @@ -46,10 +43,12 @@ SelectNumberAdapter() } var startCityName: String = "" //开始站点名称 ->选择起点 var startCityName: String = "" //开始城市 var startSiteName: String = "" //开始站点名称 ->选择起点 var startCityId: String = "" //开始站点id ->选择起点 var endCityName: String = "" // 结束站点名称 ->选择终点 var endCityName: String = "" // 结束城市 var endSiteName: String = "" // 结束站点名称 ->选择终点 var endCityId: String = "" //结束站点id ->选择终点 var lineId = "" //线路id ->选择线路 @@ -155,7 +154,7 @@ map["startLon"] = startLon map["totalSeat"] = totalSeat map["travelMode"] = travelMode map["travelTime"] = DateUtil.getTime(DateUtil.TYPE0, System.currentTimeMillis()) map["travelTime"] = tv_select_class.text.toString()+":00" callNet(Api.orderCrossCity, map) { var bean = gson.fromJson<AddOrderBean>(it, AddOrderBean::class.java) money = bean.data.amount @@ -187,7 +186,7 @@ ll_select_city_end.clickDelay { selectCityLocation = 2 if (startCityName.isEmpty()) { if (startSiteName.isEmpty()) { toast("请先选择起点") return@clickDelay } @@ -204,7 +203,7 @@ toast("请先选择线路") return@clickDelay } startActivity<SelectClassActivity>("lineId" to lineId, "startCityName" to startCityName, "endCityName" to endCityName) startActivity<SelectClassActivity>("lineId" to lineId, "startCityName" to startSiteName, "endCityName" to endSiteName) } ll_select_car_line.clickDelay { @@ -222,8 +221,7 @@ } currentSiteType = 1 startActivity<SelectStartPointActivity>( "startCityId" to startCityId, "name" to startCityName "startCityId" to startCityId, "name" to startCityName ) } @@ -419,15 +417,17 @@ when (event!!.code) { BaseEvent.SELECT_POINT_SITE -> { if (selectCityLocation == 1) { startCityName = event.msg startSiteName = event.msg startCityId = event.msgTwo tv_start_point.text = startCityName startCityName = event.msgthree tv_start_point.text = startSiteName clearByType(1) } if (selectCityLocation == 2) { endCityName = event.msg endSiteName = event.msg endCityId = event.msgTwo tv_end_point.text = endCityName endCityName = event.msgthree tv_end_point.text = endSiteName clearByType(2) callLine() } @@ -531,7 +531,7 @@ tv_down_point.text = "" } if (i < 2) { endCityName = "" endSiteName = "" endCityId = "" tv_end_point.text = "" endAddress = "" app/src/main/java/com/fuban/driver/ui/main/add_order/SelectClassActivity.kt
@@ -76,7 +76,7 @@ callClass(timeSelectAdapter.data[position]) } callClass(Calendar.getInstance()) getCityCode() getCityCode() contentAdapter.setOnItemClickListener { view, position -> var item = contentAdapter.data[position] app/src/main/java/com/fuban/driver/ui/main/add_order/SelectStartPointActivity.kt
@@ -71,7 +71,7 @@ } else { setTitleText("选择终点") } tv_city_name.text = "" tv_city_name.text = name callDistrict() tv_sure.clickDelay { @@ -142,7 +142,6 @@ override fun onPoiSearched(p0: PoiResult?, p1: Int) { if (p0?.pois!!.size > 0) { tv_city_name.text = p0.pois[0].cityName currentPosition = LatLng( p0.pois[0].latLonPoint.latitude, p0.pois[0].latLonPoint.longitude @@ -254,9 +253,6 @@ marker = AMapKit.addMarker(map!!, lat.latitude, lat.longitude, view, "12") currentPosition = marker?.position moveLisener() getAddress(this,currentPosition!!.latitude,currentPosition!!.longitude){ tv_city_name.text = it } } } app/src/main/java/com/fuban/driver/ui/mine/setting/SettingActivity.kt
@@ -108,13 +108,13 @@ if (data.data.version != "" && data.data.version != Utils.getAppVersion(this)) { if (data.data.mandatory == 2) { DialogUtil.getDelAndSureDialog(this, "有新版本是否更新?", {}, { DownloadUtil(this).downloadAPK(data.data.url, "福伴出行司机端") DownloadUtil(this).downloadAPK(data.data.url, "福伴司机端") }) } else if (data.data.mandatory == 1) { DialogUtil.getDelAndSureDialog(this, "版本已过时,是否强制升级?", { EventBus.getDefault().post(BaseEvent(BaseEvent.OUT_APP)) }, { DownloadUtil(this).downloadAPK(data.data.url, "福伴出行司机端") DownloadUtil(this).downloadAPK(data.data.url, "福伴司机端") ToastUtils.showShortToast(this, "后台开始下载,请等待") }) }else{ app/src/main/java/com/fuban/driver/ui/pub/StartActivity.kt
@@ -2,12 +2,25 @@ import android.annotation.SuppressLint import android.os.Bundle import android.os.CountDownTimer import android.view.View 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 com.fuban.driver.R import com.fuban.driver.base.Const import com.fuban.driver.base.MyBaseActivity import com.fuban.driver.base.* import com.fuban.driver.bean.AgreeBean import com.fuban.driver.netUtls.Api 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 org.jetbrains.anko.startActivity class StartActivity : MyBaseActivity() { @@ -23,16 +36,25 @@ @SuppressLint("SourceLockedOrientationActivity") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setRxpermiss() showYsDialog() // setRxpermiss() } private fun callLast() { if (getToken().isNullOrEmpty()){ startActivity<LoginActivity>() }else{ startActivity<MainActivity>() } MyApplication.getInstance()?.initSdk() object :CountDownTimer(2000,1000){ override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { if (getToken().isNullOrEmpty()){ startActivity<LoginActivity>() }else{ startActivity<MainActivity>() } } }.start() } @SuppressLint("CheckResult") @@ -60,4 +82,94 @@ } fun showYsDialog() { 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) } 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() } }else callLast() } fun callys(ok: (s: String) -> Unit) { var map = getMapByAny() map["type"] = 1 callNet(Api.queryByType, map) { var data = gson.fromJson<AgreeBean>(it, AgreeBean::class.java) ok(data.data.content) } } fun callyh(ok: (s: String) -> Unit) { var map = getMapByAny() map["type"] = 2 callNet(Api.queryByType, map) { var data = gson.fromJson<AgreeBean>(it, AgreeBean::class.java) ok(data.data.content) } } private fun setWebview(webView: WebView, url: String) { val settings = webView.settings settings.cacheMode = WebSettings.LOAD_CACHE_ELSE_NETWORK settings.defaultTextEncodingName = "utf-8" //设置编码格式 settings.useWideViewPort = true //设置此属性,可任意比例缩放 settings.loadWithOverviewMode = true // 页面支持缩放: settings.builtInZoomControls = true settings.useWideViewPort = false //将图片调整到适合webview的大小 settings.setSupportZoom(false) //支持缩放 settings.supportMultipleWindows() //多窗口 settings.cacheMode = WebSettings.LOAD_CACHE_ELSE_NETWORK //关闭webview中缓存 settings.allowFileAccess = true //设置可以访问文件 settings.setNeedInitialFocus(true) //当webview调用requestFocus时为webview设置节点 settings.javaScriptCanOpenWindowsAutomatically = true //支持通过JS打开新窗口 settings.loadsImagesAutomatically = true //支持自动加载图片 settings.javaScriptEnabled = true settings.domStorageEnabled = true webView.isScrollContainer = false webView.isScrollbarFadingEnabled = false webView.scrollBarStyle = View.SCROLLBARS_OUTSIDE_OVERLAY webView.addJavascriptInterface(InnerJsInterface(), "HTMLOUT") if (url!!.startsWith("http")) { webView.loadUrl(url) } else { 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>" webView.loadDataWithBaseURL(null, sHead + url, "text/html", "utf-8", null) } } } app/src/main/jniLibs/arm64-v8a/libmsc.soBinary files differ
app/src/main/jniLibs/armeabi-v7a/libmsc.soBinary files differ
app/src/main/res/layout/item_mine_event.xml
@@ -1,18 +1,16 @@ <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:paddingTop="9dp" android:layout_marginBottom="10dp" android:layout_marginStart="14dp" android:layout_marginEnd="14dp" android:layout_height="wrap_content"> <RelativeLayout android:layout_marginTop="17dp" android:layout_marginTop="26dp" android:layout_width="match_parent" android:background="@drawable/bg_white_round_5" android:elevation="4dp" android:layout_marginBottom="10dp" android:layout_marginHorizontal="14dp" android:layout_height="78dp"> <TextView @@ -34,6 +32,8 @@ android:layout_height="34dp" android:text="活动一" android:elevation="4dp" android:layout_marginStart="14dp" android:layout_marginTop="9dp" android:gravity="center" android:background="@drawable/bg_event_btn_one" android:textColor="#ffffffff" app/src/main/res/mipmap-hdpi/ic_launcher.pngapp/src/main/res/mipmap-xhdpi/ic_launcher.pngapp/src/main/res/mipmap-xxhdpi/ic_launcher.pngapp/src/main/res/mipmap-xxxhdpi/ic_launcher.pngapp/src/main/res/values/strings.xml
@@ -1,3 +1,3 @@ <resources> <string name="app_name">福伴出行司机</string> <string name="app_name">福伴司机</string> </resources> xldUtils/src/main/java/cn/sinata/xldutils/utils/Utils.java
@@ -566,20 +566,9 @@ * @param phone 电话号码 */ public static void callPhone(final Context context, final String phone){ RxPermissions rxPermissions = new RxPermissions((Activity) context); rxPermissions.request(Manifest.permission.CALL_PHONE) .subscribe(new Consumer<Boolean>() { @Override public void accept(@NonNull Boolean aBoolean) throws Exception { if (!aBoolean) { Toast.create(context).show("没有拨号权限!"); } else { Intent intent = new Intent(Intent.ACTION_DIAL); intent.setData(Uri.parse("tel:"+phone)); context.startActivity(intent); } } }); Intent intent = new Intent(Intent.ACTION_DIAL); intent.setData(Uri.parse("tel:"+phone)); context.startActivity(intent); } /**