升级科大讯飞SDK
修复隐私政策弹窗每次退出登录之后又显示的问题
修复主页定位导致的内存泄露问题
3个文件已删除
8个文件已添加
11个文件已修改
210 ■■■■■ 已修改文件
app/build.gradle 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/libs/Msc.jar 补丁 | 查看 | 原始文档 | blame | 历史
app/libs/Sunflower.jar 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/assets/iflytek/recognize.xml 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/assets/iflytek/voice_bg.9.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/assets/iflytek/voice_empty.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/assets/iflytek/voice_full.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/assets/iflytek/waiting.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/assets/iflytek/warning.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/jxonlinecar/driver/base/MyApplication.kt 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/jxonlinecar/driver/base/local/BaseLoginActivity.kt 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/jxonlinecar/driver/ui/main/MainActivity.kt 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/jxonlinecar/driver/ui/mine/MineActivity.kt 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/jxonlinecar/driver/utils/SPUtil.kt 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/jniLibs/arm64-v8a/libmsc.so 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/jniLibs/arm64-v8a/libneonuijni.so 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/jniLibs/armeabi-v7a/libmsc.so 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/jniLibs/armeabi-v7a/libneonuijni.so 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_mine.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/ifly_layout_mnotice_image.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/pop_share.xml 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/xml/file_paths.xml 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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.jar
Binary files differ
app/libs/Sunflower.jar
Binary files differ
app/src/main/assets/iflytek/recognize.xml
Binary 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.so
Binary files differ
app/src/main/jniLibs/arm64-v8a/libneonuijni.so
Binary files differ
app/src/main/jniLibs/armeabi-v7a/libmsc.so
Binary files differ
app/src/main/jniLibs/armeabi-v7a/libneonuijni.so
Binary 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>