diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index e6a7719..bfe86fc 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -4,14 +4,13 @@ import android.database.sqlite.SQLiteDatabase import com.casic.birmm.inspect.greendao.DaoMaster import com.casic.birmm.inspect.greendao.DaoSession -import com.casic.birmm.inspect.utils.FileUtils import com.casic.birmm.inspect.utils.SaveKeyValues import kotlin.properties.Delegates class BaseApplication : Application() { companion object { - var instance: BaseApplication by Delegates.notNull() + private var instance: BaseApplication by Delegates.notNull() private lateinit var daoSession: DaoSession @@ -22,7 +21,6 @@ super.onCreate() instance = this SaveKeyValues.initSharedPreferences() - FileUtils.initFileConfig() initDataBase() } diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index e6a7719..bfe86fc 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -4,14 +4,13 @@ import android.database.sqlite.SQLiteDatabase import com.casic.birmm.inspect.greendao.DaoMaster import com.casic.birmm.inspect.greendao.DaoSession -import com.casic.birmm.inspect.utils.FileUtils import com.casic.birmm.inspect.utils.SaveKeyValues import kotlin.properties.Delegates class BaseApplication : Application() { companion object { - var instance: BaseApplication by Delegates.notNull() + private var instance: BaseApplication by Delegates.notNull() private lateinit var daoSession: DaoSession @@ -22,7 +21,6 @@ super.onCreate() instance = this SaveKeyValues.initSharedPreferences() - FileUtils.initFileConfig() initDataBase() } diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastReceiverManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastReceiverManager.kt new file mode 100644 index 0000000..3994817 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastReceiverManager.kt @@ -0,0 +1,90 @@ +package com.casic.birmm.inspect.utils + +import android.content.BroadcastReceiver +import android.content.Intent +import android.content.IntentFilter +import android.util.Log +import com.casic.birmm.inspect.base.BaseApplication + + +class BroadcastReceiverManager private constructor() { + + companion object { + private const val Tag = "BroadcastManager" + + //Kotlin委托模式双重锁单例 + val instance: BroadcastReceiverManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + BroadcastReceiverManager() + } + } + + private val receiverMap = HashMap() + private val context = BaseApplication.obtainInstance() + + /** + * 添加单个Action,广播的初始化 + */ + fun addAction(action: String, receiver: BroadcastReceiver) { + Log.d(Tag, "添加单个Action: $action") + try { + val filter = IntentFilter() + filter.addAction(action) + context.registerReceiver(receiver, filter) + receiverMap[action] = receiver + } catch (e: Exception) { + e.printStackTrace() + } + } + + /** + * 添加多个Action,广播的初始化 + */ + fun addAction(actions: Array, receiver: BroadcastReceiver) { + try { + val filter = IntentFilter() + for (action in actions) { + filter.addAction(action) + receiverMap[action] = receiver + } + context.registerReceiver(receiver, filter) + } catch (e: Exception) { + e.printStackTrace() + } + } + + /** + * 发送广播 + * + * @param action 唯一码 + * @param msg 参数 + */ + fun sendBroadcast(action: String, msg: String) { + try { + val intent = Intent() + intent.action = action + intent.putExtra("BroadcastData", msg) + context.sendBroadcast(intent) + Log.d(Tag, "sendBroadcast: $msg") + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + + /** + * 销毁广播 + * + * @param actions action集合 + */ + fun destroy(vararg actions: String?) { + try { + for (action in actions) { + val receiver = receiverMap[action] + if (receiver != null) { + context.unregisterReceiver(receiver) + } + } + } catch (e: IllegalArgumentException) { + e.printStackTrace() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index e6a7719..bfe86fc 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -4,14 +4,13 @@ import android.database.sqlite.SQLiteDatabase import com.casic.birmm.inspect.greendao.DaoMaster import com.casic.birmm.inspect.greendao.DaoSession -import com.casic.birmm.inspect.utils.FileUtils import com.casic.birmm.inspect.utils.SaveKeyValues import kotlin.properties.Delegates class BaseApplication : Application() { companion object { - var instance: BaseApplication by Delegates.notNull() + private var instance: BaseApplication by Delegates.notNull() private lateinit var daoSession: DaoSession @@ -22,7 +21,6 @@ super.onCreate() instance = this SaveKeyValues.initSharedPreferences() - FileUtils.initFileConfig() initDataBase() } diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastReceiverManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastReceiverManager.kt new file mode 100644 index 0000000..3994817 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastReceiverManager.kt @@ -0,0 +1,90 @@ +package com.casic.birmm.inspect.utils + +import android.content.BroadcastReceiver +import android.content.Intent +import android.content.IntentFilter +import android.util.Log +import com.casic.birmm.inspect.base.BaseApplication + + +class BroadcastReceiverManager private constructor() { + + companion object { + private const val Tag = "BroadcastManager" + + //Kotlin委托模式双重锁单例 + val instance: BroadcastReceiverManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + BroadcastReceiverManager() + } + } + + private val receiverMap = HashMap() + private val context = BaseApplication.obtainInstance() + + /** + * 添加单个Action,广播的初始化 + */ + fun addAction(action: String, receiver: BroadcastReceiver) { + Log.d(Tag, "添加单个Action: $action") + try { + val filter = IntentFilter() + filter.addAction(action) + context.registerReceiver(receiver, filter) + receiverMap[action] = receiver + } catch (e: Exception) { + e.printStackTrace() + } + } + + /** + * 添加多个Action,广播的初始化 + */ + fun addAction(actions: Array, receiver: BroadcastReceiver) { + try { + val filter = IntentFilter() + for (action in actions) { + filter.addAction(action) + receiverMap[action] = receiver + } + context.registerReceiver(receiver, filter) + } catch (e: Exception) { + e.printStackTrace() + } + } + + /** + * 发送广播 + * + * @param action 唯一码 + * @param msg 参数 + */ + fun sendBroadcast(action: String, msg: String) { + try { + val intent = Intent() + intent.action = action + intent.putExtra("BroadcastData", msg) + context.sendBroadcast(intent) + Log.d(Tag, "sendBroadcast: $msg") + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + + /** + * 销毁广播 + * + * @param actions action集合 + */ + fun destroy(vararg actions: String?) { + try { + for (action in actions) { + val receiver = receiverMap[action] + if (receiver != null) { + context.unregisterReceiver(receiver) + } + } + } catch (e: IllegalArgumentException) { + e.printStackTrace() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt index 44b83e3..77e25a1 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt @@ -13,6 +13,7 @@ const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 15 + const val BACK_TO_HOME = 19 const val BLUETOOTH_ON = 20 const val BLUETOOTH_OFF = 21 const val CONNECT_SUCCESS = 22 diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index e6a7719..bfe86fc 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -4,14 +4,13 @@ import android.database.sqlite.SQLiteDatabase import com.casic.birmm.inspect.greendao.DaoMaster import com.casic.birmm.inspect.greendao.DaoSession -import com.casic.birmm.inspect.utils.FileUtils import com.casic.birmm.inspect.utils.SaveKeyValues import kotlin.properties.Delegates class BaseApplication : Application() { companion object { - var instance: BaseApplication by Delegates.notNull() + private var instance: BaseApplication by Delegates.notNull() private lateinit var daoSession: DaoSession @@ -22,7 +21,6 @@ super.onCreate() instance = this SaveKeyValues.initSharedPreferences() - FileUtils.initFileConfig() initDataBase() } diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastReceiverManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastReceiverManager.kt new file mode 100644 index 0000000..3994817 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastReceiverManager.kt @@ -0,0 +1,90 @@ +package com.casic.birmm.inspect.utils + +import android.content.BroadcastReceiver +import android.content.Intent +import android.content.IntentFilter +import android.util.Log +import com.casic.birmm.inspect.base.BaseApplication + + +class BroadcastReceiverManager private constructor() { + + companion object { + private const val Tag = "BroadcastManager" + + //Kotlin委托模式双重锁单例 + val instance: BroadcastReceiverManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + BroadcastReceiverManager() + } + } + + private val receiverMap = HashMap() + private val context = BaseApplication.obtainInstance() + + /** + * 添加单个Action,广播的初始化 + */ + fun addAction(action: String, receiver: BroadcastReceiver) { + Log.d(Tag, "添加单个Action: $action") + try { + val filter = IntentFilter() + filter.addAction(action) + context.registerReceiver(receiver, filter) + receiverMap[action] = receiver + } catch (e: Exception) { + e.printStackTrace() + } + } + + /** + * 添加多个Action,广播的初始化 + */ + fun addAction(actions: Array, receiver: BroadcastReceiver) { + try { + val filter = IntentFilter() + for (action in actions) { + filter.addAction(action) + receiverMap[action] = receiver + } + context.registerReceiver(receiver, filter) + } catch (e: Exception) { + e.printStackTrace() + } + } + + /** + * 发送广播 + * + * @param action 唯一码 + * @param msg 参数 + */ + fun sendBroadcast(action: String, msg: String) { + try { + val intent = Intent() + intent.action = action + intent.putExtra("BroadcastData", msg) + context.sendBroadcast(intent) + Log.d(Tag, "sendBroadcast: $msg") + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + + /** + * 销毁广播 + * + * @param actions action集合 + */ + fun destroy(vararg actions: String?) { + try { + for (action in actions) { + val receiver = receiverMap[action] + if (receiver != null) { + context.unregisterReceiver(receiver) + } + } + } catch (e: IllegalArgumentException) { + e.printStackTrace() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt index 44b83e3..77e25a1 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt @@ -13,6 +13,7 @@ const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 15 + const val BACK_TO_HOME = 19 const val BLUETOOTH_ON = 20 const val BLUETOOTH_OFF = 21 const val CONNECT_SUCCESS = 22 diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/FileUtils.kt b/app/src/main/java/com/casic/birmm/inspect/utils/FileUtils.kt index ea9b6b3..335f3ec 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/FileUtils.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/FileUtils.kt @@ -1,6 +1,5 @@ package com.casic.birmm.inspect.utils -import android.content.Context import android.os.Environment import android.util.Log import com.casic.birmm.inspect.base.BaseApplication @@ -15,13 +14,9 @@ object FileUtils { private const val Tag = "FileUtils" - private lateinit var context: Context + private val context = BaseApplication.obtainInstance() private var index = 1 - fun initFileConfig() { - this.context = BaseApplication.instance - } - val imageCompressPath: String get() { val imageDir = File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES), "") diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index e6a7719..bfe86fc 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -4,14 +4,13 @@ import android.database.sqlite.SQLiteDatabase import com.casic.birmm.inspect.greendao.DaoMaster import com.casic.birmm.inspect.greendao.DaoSession -import com.casic.birmm.inspect.utils.FileUtils import com.casic.birmm.inspect.utils.SaveKeyValues import kotlin.properties.Delegates class BaseApplication : Application() { companion object { - var instance: BaseApplication by Delegates.notNull() + private var instance: BaseApplication by Delegates.notNull() private lateinit var daoSession: DaoSession @@ -22,7 +21,6 @@ super.onCreate() instance = this SaveKeyValues.initSharedPreferences() - FileUtils.initFileConfig() initDataBase() } diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastReceiverManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastReceiverManager.kt new file mode 100644 index 0000000..3994817 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastReceiverManager.kt @@ -0,0 +1,90 @@ +package com.casic.birmm.inspect.utils + +import android.content.BroadcastReceiver +import android.content.Intent +import android.content.IntentFilter +import android.util.Log +import com.casic.birmm.inspect.base.BaseApplication + + +class BroadcastReceiverManager private constructor() { + + companion object { + private const val Tag = "BroadcastManager" + + //Kotlin委托模式双重锁单例 + val instance: BroadcastReceiverManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + BroadcastReceiverManager() + } + } + + private val receiverMap = HashMap() + private val context = BaseApplication.obtainInstance() + + /** + * 添加单个Action,广播的初始化 + */ + fun addAction(action: String, receiver: BroadcastReceiver) { + Log.d(Tag, "添加单个Action: $action") + try { + val filter = IntentFilter() + filter.addAction(action) + context.registerReceiver(receiver, filter) + receiverMap[action] = receiver + } catch (e: Exception) { + e.printStackTrace() + } + } + + /** + * 添加多个Action,广播的初始化 + */ + fun addAction(actions: Array, receiver: BroadcastReceiver) { + try { + val filter = IntentFilter() + for (action in actions) { + filter.addAction(action) + receiverMap[action] = receiver + } + context.registerReceiver(receiver, filter) + } catch (e: Exception) { + e.printStackTrace() + } + } + + /** + * 发送广播 + * + * @param action 唯一码 + * @param msg 参数 + */ + fun sendBroadcast(action: String, msg: String) { + try { + val intent = Intent() + intent.action = action + intent.putExtra("BroadcastData", msg) + context.sendBroadcast(intent) + Log.d(Tag, "sendBroadcast: $msg") + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + + /** + * 销毁广播 + * + * @param actions action集合 + */ + fun destroy(vararg actions: String?) { + try { + for (action in actions) { + val receiver = receiverMap[action] + if (receiver != null) { + context.unregisterReceiver(receiver) + } + } + } catch (e: IllegalArgumentException) { + e.printStackTrace() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt index 44b83e3..77e25a1 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt @@ -13,6 +13,7 @@ const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 15 + const val BACK_TO_HOME = 19 const val BLUETOOTH_ON = 20 const val BLUETOOTH_OFF = 21 const val CONNECT_SUCCESS = 22 diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/FileUtils.kt b/app/src/main/java/com/casic/birmm/inspect/utils/FileUtils.kt index ea9b6b3..335f3ec 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/FileUtils.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/FileUtils.kt @@ -1,6 +1,5 @@ package com.casic.birmm.inspect.utils -import android.content.Context import android.os.Environment import android.util.Log import com.casic.birmm.inspect.base.BaseApplication @@ -15,13 +14,9 @@ object FileUtils { private const val Tag = "FileUtils" - private lateinit var context: Context + private val context = BaseApplication.obtainInstance() private var index = 1 - fun initFileConfig() { - this.context = BaseApplication.instance - } - val imageCompressPath: String get() { val imageDir = File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES), "") diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/SaveKeyValues.kt b/app/src/main/java/com/casic/birmm/inspect/utils/SaveKeyValues.kt index 7929a38..3699697 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/SaveKeyValues.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/SaveKeyValues.kt @@ -4,10 +4,11 @@ import com.casic.birmm.inspect.base.BaseApplication object SaveKeyValues { + private val context = BaseApplication.obtainInstance() private var fileName: String? = null fun initSharedPreferences() { - val packageName = BaseApplication.instance.packageName + val packageName = context.packageName //获取到的包名带有“.”方便命名,取最后一个作为sp文件名,例如:com.casic.birmm.inspect val split = packageName.split(".") fileName = split[split.size - 1] @@ -17,7 +18,7 @@ * 存储 */ fun putValue(key: String?, obj: Any) { - val sharedPreferences = BaseApplication.instance.getSharedPreferences( + val sharedPreferences = context.getSharedPreferences( fileName, Context.MODE_PRIVATE )!! @@ -48,7 +49,7 @@ * 获取保存的数据 */ operator fun getValue(key: String?, defaultObject: Any?): Any? { - val sharedPreferences = BaseApplication.instance.getSharedPreferences( + val sharedPreferences = context.getSharedPreferences( fileName, Context.MODE_PRIVATE )!! @@ -78,7 +79,7 @@ * 移除某个key值已经对应的值 */ fun removeKey(key: String?) { - val sharedPreferences = BaseApplication.instance.getSharedPreferences( + val sharedPreferences = context.getSharedPreferences( fileName, Context.MODE_PRIVATE )!! @@ -89,7 +90,7 @@ * 清除所有数据 */ fun clearAll() { - val sharedPreferences = BaseApplication.instance.getSharedPreferences( + val sharedPreferences = context.getSharedPreferences( fileName, Context.MODE_PRIVATE )!! @@ -100,7 +101,7 @@ * 查询某个key是否存在 */ fun containsKey(key: String?): Boolean { - val sharedPreferences = BaseApplication.instance.getSharedPreferences( + val sharedPreferences = context.getSharedPreferences( fileName, Context.MODE_PRIVATE )!! diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index e6a7719..bfe86fc 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -4,14 +4,13 @@ import android.database.sqlite.SQLiteDatabase import com.casic.birmm.inspect.greendao.DaoMaster import com.casic.birmm.inspect.greendao.DaoSession -import com.casic.birmm.inspect.utils.FileUtils import com.casic.birmm.inspect.utils.SaveKeyValues import kotlin.properties.Delegates class BaseApplication : Application() { companion object { - var instance: BaseApplication by Delegates.notNull() + private var instance: BaseApplication by Delegates.notNull() private lateinit var daoSession: DaoSession @@ -22,7 +21,6 @@ super.onCreate() instance = this SaveKeyValues.initSharedPreferences() - FileUtils.initFileConfig() initDataBase() } diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastReceiverManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastReceiverManager.kt new file mode 100644 index 0000000..3994817 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastReceiverManager.kt @@ -0,0 +1,90 @@ +package com.casic.birmm.inspect.utils + +import android.content.BroadcastReceiver +import android.content.Intent +import android.content.IntentFilter +import android.util.Log +import com.casic.birmm.inspect.base.BaseApplication + + +class BroadcastReceiverManager private constructor() { + + companion object { + private const val Tag = "BroadcastManager" + + //Kotlin委托模式双重锁单例 + val instance: BroadcastReceiverManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + BroadcastReceiverManager() + } + } + + private val receiverMap = HashMap() + private val context = BaseApplication.obtainInstance() + + /** + * 添加单个Action,广播的初始化 + */ + fun addAction(action: String, receiver: BroadcastReceiver) { + Log.d(Tag, "添加单个Action: $action") + try { + val filter = IntentFilter() + filter.addAction(action) + context.registerReceiver(receiver, filter) + receiverMap[action] = receiver + } catch (e: Exception) { + e.printStackTrace() + } + } + + /** + * 添加多个Action,广播的初始化 + */ + fun addAction(actions: Array, receiver: BroadcastReceiver) { + try { + val filter = IntentFilter() + for (action in actions) { + filter.addAction(action) + receiverMap[action] = receiver + } + context.registerReceiver(receiver, filter) + } catch (e: Exception) { + e.printStackTrace() + } + } + + /** + * 发送广播 + * + * @param action 唯一码 + * @param msg 参数 + */ + fun sendBroadcast(action: String, msg: String) { + try { + val intent = Intent() + intent.action = action + intent.putExtra("BroadcastData", msg) + context.sendBroadcast(intent) + Log.d(Tag, "sendBroadcast: $msg") + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + + /** + * 销毁广播 + * + * @param actions action集合 + */ + fun destroy(vararg actions: String?) { + try { + for (action in actions) { + val receiver = receiverMap[action] + if (receiver != null) { + context.unregisterReceiver(receiver) + } + } + } catch (e: IllegalArgumentException) { + e.printStackTrace() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt index 44b83e3..77e25a1 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt @@ -13,6 +13,7 @@ const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 15 + const val BACK_TO_HOME = 19 const val BLUETOOTH_ON = 20 const val BLUETOOTH_OFF = 21 const val CONNECT_SUCCESS = 22 diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/FileUtils.kt b/app/src/main/java/com/casic/birmm/inspect/utils/FileUtils.kt index ea9b6b3..335f3ec 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/FileUtils.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/FileUtils.kt @@ -1,6 +1,5 @@ package com.casic.birmm.inspect.utils -import android.content.Context import android.os.Environment import android.util.Log import com.casic.birmm.inspect.base.BaseApplication @@ -15,13 +14,9 @@ object FileUtils { private const val Tag = "FileUtils" - private lateinit var context: Context + private val context = BaseApplication.obtainInstance() private var index = 1 - fun initFileConfig() { - this.context = BaseApplication.instance - } - val imageCompressPath: String get() { val imageDir = File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES), "") diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/SaveKeyValues.kt b/app/src/main/java/com/casic/birmm/inspect/utils/SaveKeyValues.kt index 7929a38..3699697 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/SaveKeyValues.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/SaveKeyValues.kt @@ -4,10 +4,11 @@ import com.casic.birmm.inspect.base.BaseApplication object SaveKeyValues { + private val context = BaseApplication.obtainInstance() private var fileName: String? = null fun initSharedPreferences() { - val packageName = BaseApplication.instance.packageName + val packageName = context.packageName //获取到的包名带有“.”方便命名,取最后一个作为sp文件名,例如:com.casic.birmm.inspect val split = packageName.split(".") fileName = split[split.size - 1] @@ -17,7 +18,7 @@ * 存储 */ fun putValue(key: String?, obj: Any) { - val sharedPreferences = BaseApplication.instance.getSharedPreferences( + val sharedPreferences = context.getSharedPreferences( fileName, Context.MODE_PRIVATE )!! @@ -48,7 +49,7 @@ * 获取保存的数据 */ operator fun getValue(key: String?, defaultObject: Any?): Any? { - val sharedPreferences = BaseApplication.instance.getSharedPreferences( + val sharedPreferences = context.getSharedPreferences( fileName, Context.MODE_PRIVATE )!! @@ -78,7 +79,7 @@ * 移除某个key值已经对应的值 */ fun removeKey(key: String?) { - val sharedPreferences = BaseApplication.instance.getSharedPreferences( + val sharedPreferences = context.getSharedPreferences( fileName, Context.MODE_PRIVATE )!! @@ -89,7 +90,7 @@ * 清除所有数据 */ fun clearAll() { - val sharedPreferences = BaseApplication.instance.getSharedPreferences( + val sharedPreferences = context.getSharedPreferences( fileName, Context.MODE_PRIVATE )!! @@ -100,7 +101,7 @@ * 查询某个key是否存在 */ fun containsKey(key: String?): Boolean { - val sharedPreferences = BaseApplication.instance.getSharedPreferences( + val sharedPreferences = context.getSharedPreferences( fileName, Context.MODE_PRIVATE )!! diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt index 3ed63d0..f9598e8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt @@ -1,5 +1,7 @@ package com.casic.birmm.inspect.view +import android.content.BroadcastReceiver +import android.content.Context import android.content.Intent import android.view.KeyEvent import android.view.View @@ -41,6 +43,22 @@ // 如果不是单机模式登录,则获取用户信息 obtainUserInfo() } + BroadcastReceiverManager.instance.addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS, + object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val action = intent!!.action + if (action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) { + /** + * 监听APP回到桌面,暂时保存巡检到本地缓存 + * */ + if (isSingleMode) { + SingleModeMapActivity.sendEmptyMessage(Constant.BACK_TO_HOME) + } else { + MapActivity.sendEmptyMessage(Constant.BACK_TO_HOME) + } + } + } + }) } private fun obtainUserInfo() { diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index e6a7719..bfe86fc 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -4,14 +4,13 @@ import android.database.sqlite.SQLiteDatabase import com.casic.birmm.inspect.greendao.DaoMaster import com.casic.birmm.inspect.greendao.DaoSession -import com.casic.birmm.inspect.utils.FileUtils import com.casic.birmm.inspect.utils.SaveKeyValues import kotlin.properties.Delegates class BaseApplication : Application() { companion object { - var instance: BaseApplication by Delegates.notNull() + private var instance: BaseApplication by Delegates.notNull() private lateinit var daoSession: DaoSession @@ -22,7 +21,6 @@ super.onCreate() instance = this SaveKeyValues.initSharedPreferences() - FileUtils.initFileConfig() initDataBase() } diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastReceiverManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastReceiverManager.kt new file mode 100644 index 0000000..3994817 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastReceiverManager.kt @@ -0,0 +1,90 @@ +package com.casic.birmm.inspect.utils + +import android.content.BroadcastReceiver +import android.content.Intent +import android.content.IntentFilter +import android.util.Log +import com.casic.birmm.inspect.base.BaseApplication + + +class BroadcastReceiverManager private constructor() { + + companion object { + private const val Tag = "BroadcastManager" + + //Kotlin委托模式双重锁单例 + val instance: BroadcastReceiverManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + BroadcastReceiverManager() + } + } + + private val receiverMap = HashMap() + private val context = BaseApplication.obtainInstance() + + /** + * 添加单个Action,广播的初始化 + */ + fun addAction(action: String, receiver: BroadcastReceiver) { + Log.d(Tag, "添加单个Action: $action") + try { + val filter = IntentFilter() + filter.addAction(action) + context.registerReceiver(receiver, filter) + receiverMap[action] = receiver + } catch (e: Exception) { + e.printStackTrace() + } + } + + /** + * 添加多个Action,广播的初始化 + */ + fun addAction(actions: Array, receiver: BroadcastReceiver) { + try { + val filter = IntentFilter() + for (action in actions) { + filter.addAction(action) + receiverMap[action] = receiver + } + context.registerReceiver(receiver, filter) + } catch (e: Exception) { + e.printStackTrace() + } + } + + /** + * 发送广播 + * + * @param action 唯一码 + * @param msg 参数 + */ + fun sendBroadcast(action: String, msg: String) { + try { + val intent = Intent() + intent.action = action + intent.putExtra("BroadcastData", msg) + context.sendBroadcast(intent) + Log.d(Tag, "sendBroadcast: $msg") + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + + /** + * 销毁广播 + * + * @param actions action集合 + */ + fun destroy(vararg actions: String?) { + try { + for (action in actions) { + val receiver = receiverMap[action] + if (receiver != null) { + context.unregisterReceiver(receiver) + } + } + } catch (e: IllegalArgumentException) { + e.printStackTrace() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt index 44b83e3..77e25a1 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt @@ -13,6 +13,7 @@ const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 15 + const val BACK_TO_HOME = 19 const val BLUETOOTH_ON = 20 const val BLUETOOTH_OFF = 21 const val CONNECT_SUCCESS = 22 diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/FileUtils.kt b/app/src/main/java/com/casic/birmm/inspect/utils/FileUtils.kt index ea9b6b3..335f3ec 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/FileUtils.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/FileUtils.kt @@ -1,6 +1,5 @@ package com.casic.birmm.inspect.utils -import android.content.Context import android.os.Environment import android.util.Log import com.casic.birmm.inspect.base.BaseApplication @@ -15,13 +14,9 @@ object FileUtils { private const val Tag = "FileUtils" - private lateinit var context: Context + private val context = BaseApplication.obtainInstance() private var index = 1 - fun initFileConfig() { - this.context = BaseApplication.instance - } - val imageCompressPath: String get() { val imageDir = File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES), "") diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/SaveKeyValues.kt b/app/src/main/java/com/casic/birmm/inspect/utils/SaveKeyValues.kt index 7929a38..3699697 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/SaveKeyValues.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/SaveKeyValues.kt @@ -4,10 +4,11 @@ import com.casic.birmm.inspect.base.BaseApplication object SaveKeyValues { + private val context = BaseApplication.obtainInstance() private var fileName: String? = null fun initSharedPreferences() { - val packageName = BaseApplication.instance.packageName + val packageName = context.packageName //获取到的包名带有“.”方便命名,取最后一个作为sp文件名,例如:com.casic.birmm.inspect val split = packageName.split(".") fileName = split[split.size - 1] @@ -17,7 +18,7 @@ * 存储 */ fun putValue(key: String?, obj: Any) { - val sharedPreferences = BaseApplication.instance.getSharedPreferences( + val sharedPreferences = context.getSharedPreferences( fileName, Context.MODE_PRIVATE )!! @@ -48,7 +49,7 @@ * 获取保存的数据 */ operator fun getValue(key: String?, defaultObject: Any?): Any? { - val sharedPreferences = BaseApplication.instance.getSharedPreferences( + val sharedPreferences = context.getSharedPreferences( fileName, Context.MODE_PRIVATE )!! @@ -78,7 +79,7 @@ * 移除某个key值已经对应的值 */ fun removeKey(key: String?) { - val sharedPreferences = BaseApplication.instance.getSharedPreferences( + val sharedPreferences = context.getSharedPreferences( fileName, Context.MODE_PRIVATE )!! @@ -89,7 +90,7 @@ * 清除所有数据 */ fun clearAll() { - val sharedPreferences = BaseApplication.instance.getSharedPreferences( + val sharedPreferences = context.getSharedPreferences( fileName, Context.MODE_PRIVATE )!! @@ -100,7 +101,7 @@ * 查询某个key是否存在 */ fun containsKey(key: String?): Boolean { - val sharedPreferences = BaseApplication.instance.getSharedPreferences( + val sharedPreferences = context.getSharedPreferences( fileName, Context.MODE_PRIVATE )!! diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt index 3ed63d0..f9598e8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt @@ -1,5 +1,7 @@ package com.casic.birmm.inspect.view +import android.content.BroadcastReceiver +import android.content.Context import android.content.Intent import android.view.KeyEvent import android.view.View @@ -41,6 +43,22 @@ // 如果不是单机模式登录,则获取用户信息 obtainUserInfo() } + BroadcastReceiverManager.instance.addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS, + object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val action = intent!!.action + if (action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) { + /** + * 监听APP回到桌面,暂时保存巡检到本地缓存 + * */ + if (isSingleMode) { + SingleModeMapActivity.sendEmptyMessage(Constant.BACK_TO_HOME) + } else { + MapActivity.sendEmptyMessage(Constant.BACK_TO_HOME) + } + } + } + }) } private fun obtainUserInfo() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt index 05b1fd5..1a530fb 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt @@ -24,7 +24,6 @@ import com.amap.api.maps.model.MyLocationStyle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.BlueToothBean -import com.casic.birmm.inspect.bean.InspectionLocalBean import com.casic.birmm.inspect.extensions.* import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.model.NewRouteModel @@ -328,11 +327,11 @@ .build().show() } else { val currentInspection = SaveKeyValues.getValue(Constant.INSPECTION_OBJECT, "") as String - val localBean = gson.fromJson(currentInspection, InspectionLocalBean::class.java) + val modelCache = gson.fromJson(currentInspection, NewInspectionModel::class.java) model = NewInspectionModel( - localBean.inspectionId, localBean.name, localBean.startTime, "", localBean.date, - localBean.startLng, localBean.startLat, 0.0, 0.0, - localBean.routes, localBean.user + modelCache.id, modelCache.name, modelCache.startTime, "", modelCache.date, + modelCache.startLng, modelCache.startLat, 0.0, 0.0, + modelCache.routes, modelCache.user ) "欢迎回来,继续未完成巡检".show(this) startInspection() @@ -387,6 +386,14 @@ override fun handleMessage(msg: Message) { val mapActivity = activity.get() ?: return when (msg.what) { + Constant.BACK_TO_HOME -> { + SaveKeyValues.putValue( + Constant.INSPECTION_OBJECT, + mapActivity.gson.toJson(mapActivity.model) + ) + SaveKeyValues.putValue(Constant.INSPECTION_COMPLETED, false) + "此次巡检未完,已替您缓存".show(mapActivity) + } Constant.BLUETOOTH_ON -> { "蓝牙已开启".show(mapActivity) mapActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) @@ -656,6 +663,16 @@ }) } + /** + * 巡检过程中点击返回键,暂时保存巡检到本地缓存 + * */ + override fun onBackPressed() { + SaveKeyValues.putValue(Constant.INSPECTION_OBJECT, gson.toJson(model)) + SaveKeyValues.putValue(Constant.INSPECTION_COMPLETED, false) + "此次巡检未完,已替您缓存".show(this) + super.onBackPressed() + } + /***以下是地图生命周期管理************************************************************************/ override fun onResume() { @@ -676,8 +693,6 @@ override fun onDestroy() { cancel() super.onDestroy() -// stopInspection() - BLEManager.disConnectDevice() mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index e6a7719..bfe86fc 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -4,14 +4,13 @@ import android.database.sqlite.SQLiteDatabase import com.casic.birmm.inspect.greendao.DaoMaster import com.casic.birmm.inspect.greendao.DaoSession -import com.casic.birmm.inspect.utils.FileUtils import com.casic.birmm.inspect.utils.SaveKeyValues import kotlin.properties.Delegates class BaseApplication : Application() { companion object { - var instance: BaseApplication by Delegates.notNull() + private var instance: BaseApplication by Delegates.notNull() private lateinit var daoSession: DaoSession @@ -22,7 +21,6 @@ super.onCreate() instance = this SaveKeyValues.initSharedPreferences() - FileUtils.initFileConfig() initDataBase() } diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastReceiverManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastReceiverManager.kt new file mode 100644 index 0000000..3994817 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastReceiverManager.kt @@ -0,0 +1,90 @@ +package com.casic.birmm.inspect.utils + +import android.content.BroadcastReceiver +import android.content.Intent +import android.content.IntentFilter +import android.util.Log +import com.casic.birmm.inspect.base.BaseApplication + + +class BroadcastReceiverManager private constructor() { + + companion object { + private const val Tag = "BroadcastManager" + + //Kotlin委托模式双重锁单例 + val instance: BroadcastReceiverManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + BroadcastReceiverManager() + } + } + + private val receiverMap = HashMap() + private val context = BaseApplication.obtainInstance() + + /** + * 添加单个Action,广播的初始化 + */ + fun addAction(action: String, receiver: BroadcastReceiver) { + Log.d(Tag, "添加单个Action: $action") + try { + val filter = IntentFilter() + filter.addAction(action) + context.registerReceiver(receiver, filter) + receiverMap[action] = receiver + } catch (e: Exception) { + e.printStackTrace() + } + } + + /** + * 添加多个Action,广播的初始化 + */ + fun addAction(actions: Array, receiver: BroadcastReceiver) { + try { + val filter = IntentFilter() + for (action in actions) { + filter.addAction(action) + receiverMap[action] = receiver + } + context.registerReceiver(receiver, filter) + } catch (e: Exception) { + e.printStackTrace() + } + } + + /** + * 发送广播 + * + * @param action 唯一码 + * @param msg 参数 + */ + fun sendBroadcast(action: String, msg: String) { + try { + val intent = Intent() + intent.action = action + intent.putExtra("BroadcastData", msg) + context.sendBroadcast(intent) + Log.d(Tag, "sendBroadcast: $msg") + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + + /** + * 销毁广播 + * + * @param actions action集合 + */ + fun destroy(vararg actions: String?) { + try { + for (action in actions) { + val receiver = receiverMap[action] + if (receiver != null) { + context.unregisterReceiver(receiver) + } + } + } catch (e: IllegalArgumentException) { + e.printStackTrace() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt index 44b83e3..77e25a1 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt @@ -13,6 +13,7 @@ const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 15 + const val BACK_TO_HOME = 19 const val BLUETOOTH_ON = 20 const val BLUETOOTH_OFF = 21 const val CONNECT_SUCCESS = 22 diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/FileUtils.kt b/app/src/main/java/com/casic/birmm/inspect/utils/FileUtils.kt index ea9b6b3..335f3ec 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/FileUtils.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/FileUtils.kt @@ -1,6 +1,5 @@ package com.casic.birmm.inspect.utils -import android.content.Context import android.os.Environment import android.util.Log import com.casic.birmm.inspect.base.BaseApplication @@ -15,13 +14,9 @@ object FileUtils { private const val Tag = "FileUtils" - private lateinit var context: Context + private val context = BaseApplication.obtainInstance() private var index = 1 - fun initFileConfig() { - this.context = BaseApplication.instance - } - val imageCompressPath: String get() { val imageDir = File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES), "") diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/SaveKeyValues.kt b/app/src/main/java/com/casic/birmm/inspect/utils/SaveKeyValues.kt index 7929a38..3699697 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/SaveKeyValues.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/SaveKeyValues.kt @@ -4,10 +4,11 @@ import com.casic.birmm.inspect.base.BaseApplication object SaveKeyValues { + private val context = BaseApplication.obtainInstance() private var fileName: String? = null fun initSharedPreferences() { - val packageName = BaseApplication.instance.packageName + val packageName = context.packageName //获取到的包名带有“.”方便命名,取最后一个作为sp文件名,例如:com.casic.birmm.inspect val split = packageName.split(".") fileName = split[split.size - 1] @@ -17,7 +18,7 @@ * 存储 */ fun putValue(key: String?, obj: Any) { - val sharedPreferences = BaseApplication.instance.getSharedPreferences( + val sharedPreferences = context.getSharedPreferences( fileName, Context.MODE_PRIVATE )!! @@ -48,7 +49,7 @@ * 获取保存的数据 */ operator fun getValue(key: String?, defaultObject: Any?): Any? { - val sharedPreferences = BaseApplication.instance.getSharedPreferences( + val sharedPreferences = context.getSharedPreferences( fileName, Context.MODE_PRIVATE )!! @@ -78,7 +79,7 @@ * 移除某个key值已经对应的值 */ fun removeKey(key: String?) { - val sharedPreferences = BaseApplication.instance.getSharedPreferences( + val sharedPreferences = context.getSharedPreferences( fileName, Context.MODE_PRIVATE )!! @@ -89,7 +90,7 @@ * 清除所有数据 */ fun clearAll() { - val sharedPreferences = BaseApplication.instance.getSharedPreferences( + val sharedPreferences = context.getSharedPreferences( fileName, Context.MODE_PRIVATE )!! @@ -100,7 +101,7 @@ * 查询某个key是否存在 */ fun containsKey(key: String?): Boolean { - val sharedPreferences = BaseApplication.instance.getSharedPreferences( + val sharedPreferences = context.getSharedPreferences( fileName, Context.MODE_PRIVATE )!! diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt index 3ed63d0..f9598e8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt @@ -1,5 +1,7 @@ package com.casic.birmm.inspect.view +import android.content.BroadcastReceiver +import android.content.Context import android.content.Intent import android.view.KeyEvent import android.view.View @@ -41,6 +43,22 @@ // 如果不是单机模式登录,则获取用户信息 obtainUserInfo() } + BroadcastReceiverManager.instance.addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS, + object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val action = intent!!.action + if (action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) { + /** + * 监听APP回到桌面,暂时保存巡检到本地缓存 + * */ + if (isSingleMode) { + SingleModeMapActivity.sendEmptyMessage(Constant.BACK_TO_HOME) + } else { + MapActivity.sendEmptyMessage(Constant.BACK_TO_HOME) + } + } + } + }) } private fun obtainUserInfo() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt index 05b1fd5..1a530fb 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt @@ -24,7 +24,6 @@ import com.amap.api.maps.model.MyLocationStyle import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.BlueToothBean -import com.casic.birmm.inspect.bean.InspectionLocalBean import com.casic.birmm.inspect.extensions.* import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.model.NewRouteModel @@ -328,11 +327,11 @@ .build().show() } else { val currentInspection = SaveKeyValues.getValue(Constant.INSPECTION_OBJECT, "") as String - val localBean = gson.fromJson(currentInspection, InspectionLocalBean::class.java) + val modelCache = gson.fromJson(currentInspection, NewInspectionModel::class.java) model = NewInspectionModel( - localBean.inspectionId, localBean.name, localBean.startTime, "", localBean.date, - localBean.startLng, localBean.startLat, 0.0, 0.0, - localBean.routes, localBean.user + modelCache.id, modelCache.name, modelCache.startTime, "", modelCache.date, + modelCache.startLng, modelCache.startLat, 0.0, 0.0, + modelCache.routes, modelCache.user ) "欢迎回来,继续未完成巡检".show(this) startInspection() @@ -387,6 +386,14 @@ override fun handleMessage(msg: Message) { val mapActivity = activity.get() ?: return when (msg.what) { + Constant.BACK_TO_HOME -> { + SaveKeyValues.putValue( + Constant.INSPECTION_OBJECT, + mapActivity.gson.toJson(mapActivity.model) + ) + SaveKeyValues.putValue(Constant.INSPECTION_COMPLETED, false) + "此次巡检未完,已替您缓存".show(mapActivity) + } Constant.BLUETOOTH_ON -> { "蓝牙已开启".show(mapActivity) mapActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) @@ -656,6 +663,16 @@ }) } + /** + * 巡检过程中点击返回键,暂时保存巡检到本地缓存 + * */ + override fun onBackPressed() { + SaveKeyValues.putValue(Constant.INSPECTION_OBJECT, gson.toJson(model)) + SaveKeyValues.putValue(Constant.INSPECTION_COMPLETED, false) + "此次巡检未完,已替您缓存".show(this) + super.onBackPressed() + } + /***以下是地图生命周期管理************************************************************************/ override fun onResume() { @@ -676,8 +693,6 @@ override fun onDestroy() { cancel() super.onDestroy() -// stopInspection() - BLEManager.disConnectDevice() mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/SingleModeMapActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeMapActivity.kt index 34c7047..65a36dc 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/SingleModeMapActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeMapActivity.kt @@ -22,7 +22,6 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.base.BaseSingleModeActivity import com.casic.birmm.inspect.bean.BlueToothBean -import com.casic.birmm.inspect.bean.InspectionLocalBean import com.casic.birmm.inspect.extensions.* import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.model.NewRouteModel @@ -277,11 +276,11 @@ .build().show() } else { val currentInspection = SaveKeyValues.getValue(Constant.INSPECTION_OBJECT, "") as String - val localBean = gson.fromJson(currentInspection, InspectionLocalBean::class.java) + val modelCache = gson.fromJson(currentInspection, NewInspectionModel::class.java) model = NewInspectionModel( - localBean.inspectionId, localBean.name, localBean.startTime, "", localBean.date, - localBean.startLng, localBean.startLat, 0.0, 0.0, - localBean.routes, localBean.user + modelCache.id, modelCache.name, modelCache.startTime, "", modelCache.date, + modelCache.startLng, modelCache.startLat, 0.0, 0.0, + modelCache.routes, modelCache.user ) "欢迎回来,继续未完成巡检".show(this) startInspection() @@ -336,6 +335,14 @@ override fun handleMessage(msg: Message) { val mapActivity = activity.get() ?: return when (msg.what) { + Constant.BACK_TO_HOME -> { + SaveKeyValues.putValue( + Constant.INSPECTION_OBJECT, + mapActivity.gson.toJson(mapActivity.model) + ) + SaveKeyValues.putValue(Constant.INSPECTION_COMPLETED, false) + "此次巡检未完,已替您缓存".show(mapActivity) + } Constant.BLUETOOTH_ON -> { "蓝牙已开启".show(mapActivity) mapActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) @@ -599,6 +606,16 @@ } } + /** + * 巡检过程中点击返回键,暂时保存巡检到本地缓存 + * */ + override fun onBackPressed() { + SaveKeyValues.putValue(Constant.INSPECTION_OBJECT, gson.toJson(model)) + SaveKeyValues.putValue(Constant.INSPECTION_COMPLETED, false) + "此次巡检未完,已替您缓存".show(this) + super.onBackPressed() + } + /***以下是地图生命周期管理************************************************************************/ override fun onResume() { @@ -618,7 +635,6 @@ override fun onDestroy() { super.onDestroy() - BLEManager.disConnectDevice() mapView.onDestroy() } } \ No newline at end of file