app/build.gradle
@@ -24,8 +24,8 @@ applicationId "com.jxonlinecar.driver" minSdkVersion 26 targetSdkVersion 30 versionCode 28 versionName "3.3" versionCode 1 versionName "1.0" multiDexEnabled true testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } @@ -109,7 +109,7 @@ implementation files('libs/umeng-share-core-7.0.0.jar') implementation files('libs/umeng-share-wechat-simplify-7.0.0.jar') implementation project(path: ':rxnetty') implementation files('libs/Sunflower.jar') // implementation files('libs/Sunflower.jar') implementation files('libs/Msc.jar') implementation 'com.wang.avi:library:2.1.3' implementation 'com.github.mcxtzhang:SwipeDelMenuLayout:V1.3.0' app/libs/Msc.jarBinary files differ
app/libs/Sunflower.jarBinary files differ
app/src/main/assets/iflytek/recognize.xmlBinary files differ
app/src/main/assets/iflytek/voice_bg.9.png
app/src/main/assets/iflytek/voice_empty.png
app/src/main/assets/iflytek/voice_full.png
app/src/main/assets/iflytek/waiting.png
app/src/main/assets/iflytek/warning.png
app/src/main/java/com/jxonlinecar/driver/base/MyApplication.kt
@@ -3,19 +3,21 @@ import android.app.Activity import android.app.Application import android.content.Intent import android.os.* import android.os.Build import android.os.Bundle import android.os.Handler import android.os.Looper import android.util.Log import androidx.annotation.RequiresApi import cn.sinata.rxnetty.NettyClient import cn.sinata.xldutils.BaseApplication import cn.sinata.xldutils.utils.sysErr import com.amap.api.location.AMapLocation import com.amap.api.location.AMapLocationClient import com.amap.api.location.AMapLocationListener import com.amap.api.maps.MapsInitializer import com.google.gson.Gson import com.tencent.bugly.crashreport.CrashReport import com.umeng.commonsdk.UMConfigure import com.umeng.socialize.PlatformConfig import com.xuexiang.xui.XUI import com.jxonlinecar.driver.base.gaode.AMapKit import com.jxonlinecar.driver.base.gaode.gpsnav.util.TTSController import com.jxonlinecar.driver.bean.CarLocationBean import com.jxonlinecar.driver.bean.OrderResData @@ -31,12 +33,15 @@ import com.jxonlinecar.driver.utils.Cache.CacheKey import com.jxonlinecar.driver.utils.Cache.CacheUtil import com.jxonlinecar.driver.utils.LogUtils import com.jxonlinecar.driver.utils.SPUtil import com.umeng.commonsdk.UMConfigure import com.umeng.socialize.PlatformConfig import com.xuexiang.xui.XUI import org.greenrobot.eventbus.EventBus import org.jetbrains.anko.toast import org.json.JSONObject import java.security.SecureRandom import java.security.cert.X509Certificate import java.util.* import javax.net.ssl.HttpsURLConnection import javax.net.ssl.SSLContext import javax.net.ssl.TrustManager @@ -45,11 +50,13 @@ /** * Created by Administrator on 2018/1/17. */ class MyApplication : BaseApplication(), Application.ActivityLifecycleCallbacks { class MyApplication : BaseApplication(), Application.ActivityLifecycleCallbacks, AMapLocationListener { //设置debug模式 var isDebug = false var heartHandler: Handler? = null var currentTime = System.currentTimeMillis() var locationClient: AMapLocationClient? = null override fun setSharedPreferencesName(): String { return "MyApplication" @@ -59,6 +66,7 @@ override fun onCreate() { super.onCreate() appContext = this SPUtil.init(this) handleSSLHandshake() //如果是主进程 XUI.init(this) @@ -70,18 +78,19 @@ //更新高德地图隐私协议状态 fun updateAMapPrivacy() { if (CacheKey.getKeyStr("isAgreen") == "1") { if (SPUtil.appSetting.get("isAgreen") == "1") { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) } } fun initPersionDate(){ fun initPersionDate() { UMConfigure.init( this, "675014b27e5e6a4eebacc736", "gaode", UMConfigure.DEVICE_TYPE_PHONE, "" this, "675014b27e5e6a4eebacc736", "gaode", UMConfigure.DEVICE_TYPE_PHONE, "" ) PlatformConfig.setWeixin("wxd997f17beb1dd7a4", "a403388bafbfceb639e0a451e5403a12") PlatformConfig.setQQZone("1105920536", "bx7zWrVgTskXHZTr") //qq互联 @@ -126,8 +135,13 @@ EventBus.getDefault().post(BaseEvent(BaseEvent.CHANGE_CAR_SUCCESS)) } Const.SOCKET_METHOD.ORDER_GRAB -> { var dataBean = Gson().fromJson(data,OrderSimpleData::class.java) EventBus.getDefault().post(BaseEvent(BaseEvent.ORDER_GRAB_EVENT,dataBean.orderId.toString())) var dataBean = Gson().fromJson(data, OrderSimpleData::class.java) EventBus.getDefault().post( BaseEvent( BaseEvent.ORDER_GRAB_EVENT, dataBean.orderId.toString() ) ) } Const.SOCKET_METHOD.ORDER_STATUS -> { val orderSimpleData = @@ -139,17 +153,28 @@ orderStatueViews[view].orderInfo(orderSimpleData) } if (orderSimpleData.status == 1) { EventBus.getDefault().post(BaseEvent(BaseEvent.APP_LOG,"收到订单socket消息:$data")) EventBus.getDefault() .post(BaseEvent(BaseEvent.APP_LOG, "收到订单socket消息:$data")) val act = activities[activities.size - 1] if (act is GetOrderFragment||act is VoiceOrderFragment){ EventBus.getDefault().post(BaseEvent(BaseEvent.APP_LOG,"当前有订单弹窗,忽略此订单:${orderSimpleData.orderId}")) if (act is GetOrderFragment || act is VoiceOrderFragment) { EventBus.getDefault().post( BaseEvent( BaseEvent.APP_LOG, "当前有订单弹窗,忽略此订单:${orderSimpleData.orderId}" ) ) return@addOnMessageListener } when (orderSimpleData.orderType) { 1,2 -> { if (!orderSimpleData.audioLinkUrl.isNullOrEmpty()){ Log.e("走正常声音单","订单id为"+orderSimpleData.orderId) EventBus.getDefault().post(BaseEvent(BaseEvent.APP_LOG,"当前无订单弹窗,显示此订单:id-${orderSimpleData.orderId},语音路径:${orderSimpleData.audioLinkUrl}")) 1, 2 -> { if (!orderSimpleData.audioLinkUrl.isNullOrEmpty()) { Log.e("走正常声音单", "订单id为" + orderSimpleData.orderId) EventBus.getDefault().post( BaseEvent( BaseEvent.APP_LOG, "当前无订单弹窗,显示此订单:id-${orderSimpleData.orderId},语音路径:${orderSimpleData.audioLinkUrl}" ) ) voiceOrder = orderSimpleData (act as MyBaseActivity).showOrder( orderSimpleData.orderId.toString(), @@ -158,16 +183,23 @@ 1, orderSimpleData.audioLinkUrl ) } else{ } else { //小程序订单 var map = getMapByAny() map["orderId"] = orderSimpleData.orderId.toString() map["orderType"] = orderSimpleData.orderType.toString() map["orderType"] = orderSimpleData.orderType.toString() map["lat"] = getLocation().latitude map["lon"] = getLocation().longitude callNet(this, Api.queryPushOrder, map) { EventBus.getDefault().post(BaseEvent(BaseEvent.GET_SMALL_ORDER ,orderSimpleData.orderType,orderSimpleData.time,it)) EventBus.getDefault().post( BaseEvent( BaseEvent.GET_SMALL_ORDER, orderSimpleData.orderType, orderSimpleData.time, it ) ) // (act as MyBaseActivity).showOrderWithData( // orderSimpleData.orderId.toString(), // orderSimpleData.orderType.toString(), @@ -213,7 +245,7 @@ orderSimpleData.orderId.toString(), orderSimpleData.orderType.toString(), 30, 2,"" 2, "" ) } 3 -> { @@ -284,7 +316,7 @@ fun orderInfo(data: OrderSimpleData?) } public fun getFirstActivity():Activity{ public fun getFirstActivity(): Activity { return activities[0]!! } @@ -294,7 +326,7 @@ protected var mTtsManager: TTSController? = null public var isLogin: Boolean = true public var appContext: MyApplication? = null var voiceOrder:OrderSimpleData? = null var voiceOrder: OrderSimpleData? = null fun getInstance(): MyApplication? { if (appContext == null) { appContext = MyApplication() @@ -407,5 +439,23 @@ activities.add(activity) } //开始定位 fun startLocation() { if (locationClient == null) { locationClient = AMapKit.initLocation(this, this) } } //停止定位 fun stopLocation() { AMapKit.stopLocation(locationClient) locationClient = null } override fun onLocationChanged(p0: AMapLocation?) { if (p0?.errorCode == 0) { aMapLocation = p0 CacheKey.putKeyStr("location", Gson().toJson(p0)) } } } app/src/main/java/com/jxonlinecar/driver/base/local/BaseLoginActivity.kt
@@ -22,6 +22,7 @@ import com.jxonlinecar.driver.netUtls.getMapByAny import com.jxonlinecar.driver.ui.DialogUtil import com.jxonlinecar.driver.utils.Cache.CacheKey import com.jxonlinecar.driver.utils.SPUtil import com.trello.rxlifecycle3.android.ActivityEvent import io.reactivex.Observable import io.reactivex.android.schedulers.AndroidSchedulers @@ -87,8 +88,8 @@ public fun showYsDialog() { var isAgreen = CacheKey.getKeyStr("isAgreen") if (isAgreen.isEmpty()) { var isAgreen = SPUtil.appSetting.get("isAgreen","") if (isAgreen!!.isEmpty()) { var dialog = DialogUtil.getDialog(this, R.layout.item_ys) var view = DialogUtil.getView(dialog) callys { @@ -97,11 +98,11 @@ } view.tv_none.setOnClickListener { dialog.dismiss() CacheKey.putKeyStr("isAgreen", "") SPUtil.appSetting.apply("isAgreen", "") EventBus.getDefault().post(BaseEvent(BaseEvent.OUT_APP)) } view.tv_agreet.clickDelay { CacheKey.putKeyStr("isAgreen", "1") SPUtil.appSetting.apply("isAgreen", "1") MyApplication.getInstance()?.updateAMapPrivacy() dialog.dismiss() } app/src/main/java/com/jxonlinecar/driver/ui/main/MainActivity.kt
@@ -16,9 +16,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import cn.sinata.rxnetty.NettyClient import cn.sinata.xldutils.utils.* import com.amap.api.location.AMapLocation import com.amap.api.location.AMapLocationClient import com.amap.api.location.AMapLocationListener import com.google.gson.Gson import com.jxonlinecar.driver.R import com.jxonlinecar.driver.base.BaseEvent @@ -53,7 +50,7 @@ import java.util.concurrent.atomic.AtomicBoolean class MainActivity : MyBaseActivity(), AMapLocationListener { class MainActivity : MyBaseActivity() { val mainFragment by lazy { MainFragment() @@ -78,7 +75,6 @@ private val EasyFloatTag = "BACKGROUND" private var floater: EasyFloat.Builder? = null //浮窗 private var paused: Boolean = false var locationClient: AMapLocationClient? = null private var timeHandler = Handler(Looper.getMainLooper()) //用于检测小程序订单时间 @@ -124,7 +120,7 @@ iv_right_title.setImageResource(R.mipmap.icon_nav_news) addFragment(smallFragment, R.id.rl_container) // addFragment(mainFragment, R.id.rl_container) locationClient = AMapKit.initLocation(this, this) MyApplication.getInstance()?.startLocation() MyApplication.isLogin = true beOnDuty(false) initCall() @@ -319,7 +315,6 @@ if (timeHandler != null) { timeHandler.removeCallbacksAndMessages(0) } AMapKit.stopLocation(locationClient) MyApplication.removeOrderView(qeeOrderView) } @@ -568,13 +563,6 @@ var size = smallFragment.mainSmallAdapter.data.size tv_order_small.text = "小程序订单($size)" } } } override fun onLocationChanged(p0: AMapLocation?) { if (p0?.errorCode == 0) { MyApplication.aMapLocation = p0 CacheKey.putKeyStr("location", Gson().toJson(p0)) } } } app/src/main/java/com/jxonlinecar/driver/ui/mine/MineActivity.kt
@@ -129,6 +129,7 @@ rl_login_out.setOnClickListener { DialogUtil.getDelAndSureDialog(this,"是否退出登录?",{},{ CacheUtil.get().clear() MyApplication.getInstance()?.stopLocation() NettyClient.getInstance().stopService() MyApplication.isLogin = false startActivity<LoginActivity>() app/src/main/java/com/jxonlinecar/driver/utils/SPUtil.kt
New file @@ -0,0 +1,50 @@ package com.jxonlinecar.driver.utils import android.content.Context import android.content.SharedPreferences //SharedPreferences工具类 class SPUtil(context: Context, spName: String) { val sp: SharedPreferences companion object { lateinit var appSetting: SPUtil fun init(context: Context) { appSetting = SPUtil(context, "appSetting") } } init { sp = context.getSharedPreferences(spName, Context.MODE_PRIVATE) } //保存值 fun apply(key: String, value: String) { sp.edit().putString(key, value).apply() } //保存值 fun <T> apply(key: String, value: T, convert: (T) -> String?) { sp.edit().putString(key, convert.invoke(value)).apply() } //获取值 fun get(key: String, defaultValue: String? = null): String? { return sp.getString(key, defaultValue) } //获取值 fun <T> get(key: String, defaultValue: String? = null, convert: (String?) -> T): T? { return convert.invoke(sp.getString(key, defaultValue)) } //移除键值 fun remove(key: String) { sp.edit().remove(key).apply() } //清空键值 fun clear() { sp.edit().clear().apply() } } app/src/main/jniLibs/arm64-v8a/libmsc.soBinary files differ
app/src/main/jniLibs/arm64-v8a/libneonuijni.soBinary files differ
app/src/main/jniLibs/armeabi-v7a/libmsc.soBinary files differ
app/src/main/jniLibs/armeabi-v7a/libneonuijni.soBinary files differ
app/src/main/res/layout/activity_mine.xml
@@ -382,6 +382,7 @@ <RelativeLayout android:id="@+id/rl_put_friend" android:layout_width="match_parent" android:visibility="gone" android:layout_height="43dp"> @@ -416,7 +417,7 @@ android:layout_height="7dp" android:background="@color/white" /> <include layout="@layout/include_line_left_15" /> <!-- <include layout="@layout/include_line_left_15" />--> <RelativeLayout android:id="@+id/rl_call_server" app/src/main/res/layout/ifly_layout_mnotice_image.xml
New file @@ -0,0 +1,13 @@ <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_vertical"> <ImageView android:id="@+id/ifly_mnotice_image_container" android:layout_width="match_parent" android:scaleType="fitXY" android:layout_height="match_parent"/> </RelativeLayout> app/src/main/res/layout/pop_share.xml
@@ -79,6 +79,7 @@ android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:visibility="gone" android:orientation="vertical" android:paddingTop="26dp"> app/src/main/res/xml/file_paths.xml
@@ -13,4 +13,5 @@ path="."/> <external-files-path name="opensdk_external" path="Images/tmp"/> <root-path name="opensdk_root" path=""/> <external-files-path name="umeng_cache" path="umeng_cache/"/> </paths>