1.在解绑提示页面,增加提示语“Auto-Renew: Cancel”
2.适配Google Play 要求支持 16 KB 的内存页面大小,更新大部分第三方库到最新版本
This commit is contained in:
@@ -1 +0,0 @@
|
||||
o/bundleLibRuntimeToDirDebug
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +0,0 @@
|
||||
o/classes
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
#Thu Apr 16 16:49:17 CST 2026
|
||||
#Tue Apr 21 16:52:55 CST 2026
|
||||
|
||||
@@ -30,7 +30,7 @@ android {
|
||||
targetSdkVersion 35
|
||||
versionCode 2202
|
||||
// versionName "2.2.2"
|
||||
versionName "2.2.2-Beta4"
|
||||
versionName "2.2.2-Beta6"
|
||||
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
|
||||
@@ -63,6 +63,17 @@ android {
|
||||
]
|
||||
}
|
||||
|
||||
//解决mapBox和百度地图libc++_shared.so发生冲突http://www.52im.net/blog-28523-2848.html
|
||||
packagingOptions {
|
||||
pickFirst 'lib/x86/libc++_shared.so'
|
||||
pickFirst 'lib/x86_64/libc++_shared.so'
|
||||
pickFirst 'lib/armeabi-v7a/libc++_shared.so'
|
||||
pickFirst 'lib/arm64-v8a/libc++_shared.so'
|
||||
pickFirst 'lib/armeabi/libc++_shared.so'
|
||||
pickFirst 'lib/mips/libc++_shared.so'
|
||||
pickFirst 'lib/mips64/libc++_shared.so'
|
||||
}
|
||||
|
||||
// 读取local.properties文件
|
||||
Properties properties = new Properties()
|
||||
InputStream inputStream = project.rootProject.file('local.properties').newDataInputStream()
|
||||
@@ -188,23 +199,23 @@ dependencies {
|
||||
androidTestImplementation 'androidx.test.espresso:espresso-core:3.6.1'
|
||||
|
||||
// Android官方库
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.2.1'
|
||||
implementation 'androidx.arch.core:core-common:2.2.0'
|
||||
implementation 'androidx.arch.core:core-runtime:2.2.0'
|
||||
implementation 'androidx.activity:activity-ktx:1.9.3'
|
||||
implementation 'androidx.fragment:fragment-ktx:1.5.6'
|
||||
implementation 'androidx.annotation:annotation:1.9.1'
|
||||
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.8.7'
|
||||
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.8.7'
|
||||
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7'
|
||||
implementation 'androidx.activity:activity-ktx:1.10.1'
|
||||
implementation 'androidx.fragment:fragment-ktx:1.8.9'
|
||||
implementation 'androidx.annotation:annotation:1.10.0'
|
||||
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.10.0'
|
||||
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.10.0'
|
||||
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.10.0'
|
||||
|
||||
implementation 'androidx.room:room-runtime:2.5.2'
|
||||
implementation 'androidx.room:room-runtime:2.8.4'
|
||||
// implementation 'androidx.room:room-rxjava2:2.3.0'
|
||||
implementation 'androidx.room:room-ktx:2.5.2'
|
||||
kapt 'androidx.room:room-compiler:2.5.2'
|
||||
implementation 'androidx.room:room-ktx:2.8.4'
|
||||
kapt 'androidx.room:room-compiler:2.8.4'
|
||||
//hilt依赖注入https://mvnrepository.com/artifact/com.google.dagger/hilt-android-gradle-plugin
|
||||
implementation "com.google.dagger:hilt-android:2.57"
|
||||
kapt "com.google.dagger:hilt-android-compiler:2.57"
|
||||
implementation "com.google.dagger:hilt-android:2.57.2"
|
||||
kapt "com.google.dagger:hilt-android-compiler:2.57.2"
|
||||
|
||||
//Android UI 开发效率的 UI 库https://github.com/Tencent/QMUI_Android
|
||||
implementation 'com.qmuiteam:qmui:2.1.0'
|
||||
@@ -221,11 +232,11 @@ dependencies {
|
||||
implementation "io.coil-kt:coil-gif:1.4.0"//支持GIF
|
||||
|
||||
//lottie动画https://github.com/airbnb/lottie-android
|
||||
implementation 'com.airbnb.android:lottie:6.6.7'
|
||||
implementation 'com.airbnb.android:lottie:6.7.1'
|
||||
//https://github.com/CymChad/BaseRecyclerViewAdapterHelper
|
||||
implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:3.0.11'
|
||||
implementation "io.github.cymchad:BaseRecyclerViewAdapterHelper:3.0.14"
|
||||
//升级recyclerview,因BaseRecyclerViewAdapterHelper item点击事件是使用1.2.0
|
||||
implementation 'androidx.recyclerview:recyclerview:1.3.1'
|
||||
implementation 'androidx.recyclerview:recyclerview:1.4.0'
|
||||
|
||||
//谷歌地图
|
||||
implementation 'com.google.android.gms:play-services-maps:20.0.0'
|
||||
@@ -245,21 +256,24 @@ dependencies {
|
||||
//mapbox地图https://github.com/mapbox/mapbox-maps-android
|
||||
// implementation 'com.mapbox.maps:android:10.2.0'
|
||||
//https://github.com/mapbox/mapbox-search-android
|
||||
//用mapbox搜索SDK,地理编码 有搜索ui组件,已包括mapbox-search-android架包
|
||||
implementation "com.mapbox.search:mapbox-search-android-ui:2.5.1"
|
||||
/**用mapbox搜索SDK,地理编码 有搜索ui组件,已包括mapbox-search-android架包
|
||||
* 支持 16 KB 页面大小
|
||||
* https://docs.mapbox.com/android/search/guides/install/#step-2-add-search-sdk-dependencies
|
||||
*/
|
||||
implementation "com.mapbox.search:mapbox-search-android-ui-ndk27:2.22.0"
|
||||
// mapbox搜索SDK,地理编码 没有搜索ui组件
|
||||
// implementation "com.mapbox.search:mapbox-search-android:1.0.0-beta.25"
|
||||
//用于计算距离https://docs.mapbox.com/android/java/guides/turf/#available-methods
|
||||
implementation 'com.mapbox.mapboxsdk:mapbox-sdk-turf:6.15.0'
|
||||
//用于计算路线规划信息https://docs.mapbox.com/android/java/examples/dashed-directions-line/
|
||||
implementation 'com.mapbox.mapboxsdk:mapbox-sdk-services:6.3.0'
|
||||
//用于计算距离https://docs.mapbox.com/android/java/guides/#installation
|
||||
implementation 'com.mapbox.mapboxsdk:mapbox-sdk-turf:7.10.0'
|
||||
//用于计算路线规划信息、地理编码
|
||||
implementation 'com.mapbox.mapboxsdk:mapbox-sdk-services:7.10.0'
|
||||
|
||||
// 权限请求框架:https://github.com/getActivity/XXPermissions
|
||||
implementation 'com.github.getActivity:XXPermissions:25.2'
|
||||
implementation 'com.github.getActivity:XXPermissions:28.2'
|
||||
// 吐司框架:https://github.com/getActivity/ToastUtils
|
||||
implementation 'com.github.getActivity:Toaster:13.2'
|
||||
implementation 'com.github.getActivity:Toaster:15.0'
|
||||
// 日志调试框架:https://github.com/getActivity/Logcat ,在debug模式下集成
|
||||
debugImplementation 'com.github.getActivity:Logcat:12.3'
|
||||
debugImplementation 'com.github.getActivity:Logcat:13.0'
|
||||
|
||||
// PictureSelector图片选择器,需要compileSdkVersion=31 https://github.com/LuckSiege/PictureSelector
|
||||
// implementation 'io.github.lucksiege:pictureselector:v3.0.3'
|
||||
@@ -268,14 +282,14 @@ dependencies {
|
||||
//压缩图片 https://github.com/zetbaitsu/Compressor
|
||||
implementation 'id.zelory:compressor:3.0.1'
|
||||
//图片裁剪功能https://github.com/CanHub/Android-Image-Cropper
|
||||
implementation 'com.vanniktech:android-image-cropper:4.6.0'
|
||||
implementation 'com.vanniktech:android-image-cropper:4.7.0'
|
||||
|
||||
//******************************************极光推送start*****************************************************
|
||||
// https://docs.jiguang.cn/jpush/client/Android/android_guide
|
||||
// implementation 'cn.jiguang.sdk:jcore:3.1.2' // 此处以JCore 2.7.2 版本为例。
|
||||
// implementation 'cn.jiguang.sdk:jpush:4.6.0' // 此处以JPush 4.0.0 版本为例
|
||||
implementation 'cn.jiguang.sdk:jcore-google:5.1.0' // 此处以JCore 2.7.2 版本为例。
|
||||
implementation 'cn.jiguang.sdk:jpush-google:5.8.0' // 此处以JPush 4.0.0 版本为例
|
||||
implementation 'cn.jiguang.sdk:jcore-google:5.3.7' // 此处以JCore 2.7.2 版本为例。
|
||||
implementation 'cn.jiguang.sdk:jpush-google:6.0.7' // 此处以JPush 4.0.0 版本为例
|
||||
// 接入华为厂商
|
||||
// implementation 'com.huawei.hms:push:6.1.0.300'
|
||||
// implementation 'cn.jiguang.sdk.plugin:huawei:4.0.0'// 极光厂商插件版本与接入 JPush 版本保持一致,下同
|
||||
@@ -306,13 +320,13 @@ dependencies {
|
||||
implementation 'com.stripe:stripe-android:20.27.0'
|
||||
|
||||
//百度地图基础定位组件
|
||||
implementation 'com.baidu.lbsyun:BaiduMapSDK_Location:9.6.5.1'
|
||||
implementation 'com.baidu.lbsyun:BaiduMapSDK_Location:9.6.7'
|
||||
//地图组件
|
||||
implementation 'com.baidu.lbsyun:BaiduMapSDK_Map:7.5.2'
|
||||
implementation 'com.baidu.lbsyun:BaiduMapSDK_Map:7.6.7'
|
||||
//检索组件
|
||||
implementation 'com.baidu.lbsyun:BaiduMapSDK_Search:7.5.2'
|
||||
implementation 'com.baidu.lbsyun:BaiduMapSDK_Search:7.6.7'
|
||||
//工具组件
|
||||
implementation 'com.baidu.lbsyun:BaiduMapSDK_Util:7.5.2'
|
||||
implementation 'com.baidu.lbsyun:BaiduMapSDK_Util:7.6.7'
|
||||
|
||||
//微信登录、支付
|
||||
implementation 'com.tencent.mm.opensdk:wechat-sdk-android:+'
|
||||
@@ -326,7 +340,7 @@ dependencies {
|
||||
implementation 'no.nordicsemi.android:mcumgr-ble:2.7.4'
|
||||
|
||||
//适配Android 12以下SplashScreen启动动画,闪屏图片
|
||||
implementation 'androidx.core:core-splashscreen:1.0.1'
|
||||
implementation 'androidx.core:core-splashscreen:1.2.0'
|
||||
//优雅、万能自定义日历https://github.com/huanghaibin-dev/CalendarView
|
||||
// implementation 'com.haibin:calendarview:3.7.1'
|
||||
//https://github.com/angcyo/CalendarView
|
||||
|
||||
@@ -9,6 +9,7 @@ import com.abbidot.tracker.util.Util
|
||||
import com.baidu.mapapi.search.route.BikingRouteResult
|
||||
import com.baidu.mapapi.search.route.DrivingRouteResult
|
||||
import com.baidu.mapapi.search.route.IndoorRouteResult
|
||||
import com.baidu.mapapi.search.route.IntegralRouteResult
|
||||
import com.baidu.mapapi.search.route.MassTransitRouteResult
|
||||
import com.baidu.mapapi.search.route.OnGetRoutePlanResultListener
|
||||
import com.baidu.mapapi.search.route.PlanNode
|
||||
@@ -144,6 +145,10 @@ class RoutePlanningViewModel : ViewModel() {
|
||||
|
||||
override fun onGetBikingRouteResult(p0: BikingRouteResult?) {
|
||||
}
|
||||
|
||||
override fun onGetIntegralRouteResult(p0: IntegralRouteResult?) {
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -215,7 +215,8 @@ class HomeV2Activity : BaseActivity<ActivityHomeV2Binding>(ActivityHomeV2Binding
|
||||
CrashReport.setUserId(MMKVUtil.getString(MMKVKey.Email))
|
||||
//预先加载相册,防止上传头像几千张照片加载慢
|
||||
XXPermissions.with(this).permission(PermissionLists.getReadMediaImagesPermission())
|
||||
.request { _, allGranted ->
|
||||
.request { _, deniedList ->
|
||||
val allGranted = deniedList.isEmpty()
|
||||
if (allGranted) {
|
||||
EasyPhotos.preLoad(this)
|
||||
// {
|
||||
@@ -310,7 +311,7 @@ class HomeV2Activity : BaseActivity<ActivityHomeV2Binding>(ActivityHomeV2Binding
|
||||
//蓝牙连接就去连接socket
|
||||
// mBleReportManage.dealBleReportData(macID, null)
|
||||
} else {
|
||||
mLogBleReportViewModel.uploadLog(mContext, macID,deviceOutId)
|
||||
mLogBleReportViewModel.uploadLog(mContext, macID, deviceOutId)
|
||||
startCountDownConBle(15)
|
||||
}
|
||||
}
|
||||
@@ -454,7 +455,7 @@ class HomeV2Activity : BaseActivity<ActivityHomeV2Binding>(ActivityHomeV2Binding
|
||||
packageUnavailableState()
|
||||
//刚开始打开APP上传日志
|
||||
getPet(false)?.apply {
|
||||
mLogBleReportViewModel.uploadLog(mContext, macID,deviceOutId)
|
||||
mLogBleReportViewModel.uploadLog(mContext, macID, deviceOutId)
|
||||
}
|
||||
} else {
|
||||
onChangeClick(mSelectPetPosition)
|
||||
@@ -573,7 +574,7 @@ class HomeV2Activity : BaseActivity<ActivityHomeV2Binding>(ActivityHomeV2Binding
|
||||
private fun checkPermissions() {
|
||||
val checkBleOpen = MMKVUtil.getBoolean(MMKVKey.isFirstCheckBleOpen, true)
|
||||
if (checkBleOpen) MMKVUtil.putBoolean(MMKVKey.isFirstCheckBleOpen, false)
|
||||
Util.checkBluetoothPermissionsEnabled(mContext, {
|
||||
Util.checkBluetoothPermissionsEnabled(this, {
|
||||
// mAutomaticConnectionDeviceViewModel.autoConnectBleDevice(mContext)
|
||||
}, isCheckBleOpen = checkBleOpen)
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ import com.stripe.android.PaymentConfiguration
|
||||
import com.tencent.bugly.crashreport.CrashReport
|
||||
import com.tencent.mm.opensdk.constants.ConstantsAPI
|
||||
import com.tencent.mm.opensdk.openapi.IWXAPI
|
||||
import java.util.*
|
||||
import java.util.Calendar
|
||||
|
||||
|
||||
/**
|
||||
@@ -179,7 +179,7 @@ class SplashActivity : QMUIActivity() {
|
||||
// }, 600)
|
||||
// }
|
||||
mViewBinding.splashLogoIv.visibility = View.VISIBLE
|
||||
mCountDownTimerViewModel.startCountDown(2)
|
||||
mCountDownTimerViewModel.startCountDown(1)
|
||||
|
||||
init()
|
||||
}
|
||||
@@ -219,8 +219,8 @@ class SplashActivity : QMUIActivity() {
|
||||
initMapbox()
|
||||
}
|
||||
|
||||
val buglyKey = Util.getMetadata(applicationContext, KeyNames.BUG_LY_KEY_NAME)
|
||||
//腾讯bugly初始化
|
||||
val buglyKey = Util.getMetadata(applicationContext, KeyNames.BUG_LY_KEY_NAME)
|
||||
CrashReport.initCrashReport(applicationContext, buglyKey, AppUtils.isDebug())
|
||||
}
|
||||
|
||||
|
||||
@@ -92,7 +92,7 @@ class AddNewTracker1Activity :
|
||||
* 检查获取定位蓝牙权限
|
||||
*/
|
||||
private fun checkPermissions() {
|
||||
Util.checkBluetoothPermissionsEnabled(mContext, {
|
||||
Util.checkBluetoothPermissionsEnabled(this, {
|
||||
val intent = Intent(mContext, AddNewTracker3Activity::class.java)
|
||||
intent.putExtra(ConstantString.isFirstBind, isFirstBind)
|
||||
startActivity(intent)
|
||||
|
||||
@@ -49,7 +49,7 @@ class AddNewTracker2Activity :
|
||||
}
|
||||
}
|
||||
|
||||
Util.checkBluetoothPermissionsEnabled(mContext, {
|
||||
Util.checkBluetoothPermissionsEnabled(this, {
|
||||
startScanBle()
|
||||
})
|
||||
}
|
||||
|
||||
@@ -402,7 +402,7 @@ class PreviewFencesZoneActivity :
|
||||
}
|
||||
|
||||
private fun goEditFences() {
|
||||
Util.checkLocationPermissionsGpsEnabled(mContext, {
|
||||
Util.checkLocationPermissionsGpsEnabled(this, {
|
||||
mCurrentFences?.apply {
|
||||
val intent = if (fenceType == ConstantInt.SafeZone) Intent(
|
||||
mContext, EditSafeZoneActivity::class.java
|
||||
|
||||
@@ -338,7 +338,7 @@ class VirtualFencesActivity :
|
||||
}
|
||||
|
||||
private fun goPreviewFencesZone(fencesBean: FencesBean) {
|
||||
Util.checkLocationPermissionsGpsEnabled(mContext, {
|
||||
Util.checkLocationPermissionsGpsEnabled(this, {
|
||||
mPetBean?.apply {
|
||||
val intent = Intent(mContext, PreviewFencesZoneActivity::class.java)
|
||||
intent.putExtra(ConstantString.Fence, fencesBean)
|
||||
@@ -351,7 +351,7 @@ class VirtualFencesActivity :
|
||||
private fun goAddSafeZone() {
|
||||
val share = MMKVUtil.getInt(MMKVKey.Shared)
|
||||
if (share != ConstantInt.NoShare) return
|
||||
Util.checkLocationPermissionsGpsEnabled(mContext, {
|
||||
Util.checkLocationPermissionsGpsEnabled(this, {
|
||||
val intent = Intent(mContext, AddSafeZoneActivity::class.java)
|
||||
intent.putExtra(ConstantString.Pet, mPetBean)
|
||||
intent.putExtra(ConstantString.Fence, mGetFencesBean)
|
||||
@@ -362,7 +362,7 @@ class VirtualFencesActivity :
|
||||
private fun goAddNoGoZone() {
|
||||
val share = MMKVUtil.getInt(MMKVKey.Shared)
|
||||
if (share != ConstantInt.NoShare) return
|
||||
Util.checkLocationPermissionsGpsEnabled(mContext, {
|
||||
Util.checkLocationPermissionsGpsEnabled(this, {
|
||||
val intent = Intent(mContext, AddNoGoZoneActivity::class.java)
|
||||
intent.putExtra(ConstantString.Pet, mPetBean)
|
||||
intent.putExtra(ConstantString.Fence, mGetFencesBean)
|
||||
|
||||
@@ -343,7 +343,7 @@ class LedLightActivity : BaseActivity<ActivityLedLightBinding>(ActivityLedLightB
|
||||
if (BleManager.getInstance().isConnected(deviceMacId)) {
|
||||
//蓝牙控制
|
||||
SRBleUtil.instance.getConnectMacDevice(deviceMacId)?.let {
|
||||
SRBleUtil.instance.setBleLedSwitch(mContext, it.bleDevice, mode)
|
||||
SRBleUtil.instance.setBleLedSwitch(this@LedLightActivity, it.bleDevice, mode)
|
||||
}
|
||||
} else {
|
||||
//远程控制
|
||||
@@ -414,7 +414,7 @@ class LedLightActivity : BaseActivity<ActivityLedLightBinding>(ActivityLedLightB
|
||||
if (BleManager.getInstance().isConnected(deviceMacId)) {
|
||||
//蓝牙控制
|
||||
SRBleUtil.instance.getConnectMacDevice(deviceMacId)?.let {
|
||||
SRBleUtil.instance.setBleLedSwitch(mContext, it.bleDevice, ledSwitch)
|
||||
SRBleUtil.instance.setBleLedSwitch(this@LedLightActivity, it.bleDevice, ledSwitch)
|
||||
}
|
||||
} else {
|
||||
//远程控制
|
||||
|
||||
@@ -294,7 +294,7 @@ class LedLightActivityV0 : BaseActivity<ActivityLedLightBinding>(ActivityLedLigh
|
||||
|
||||
private fun setBleLedMode(mode: Int) {
|
||||
mBleTrackDeviceBean?.apply {
|
||||
SRBleUtil.instance.setBleLedSwitch(mContext, bleDevice, mode)
|
||||
SRBleUtil.instance.setBleLedSwitch(this@LedLightActivityV0, bleDevice, mode)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -273,7 +273,7 @@ class AddWifiPasswordActivity :
|
||||
}
|
||||
|
||||
private fun goEditWifiActivity() {
|
||||
Util.checkLocationPermissionsGpsEnabled(mContext, {
|
||||
Util.checkLocationPermissionsGpsEnabled(this, {
|
||||
val intent = Intent(mContext, EditWifiPowerZoneActivity::class.java)
|
||||
intent.putExtra(ConstantString.WiFi, mWiFiBean)
|
||||
mDecWiFiAddressData?.let {
|
||||
|
||||
@@ -178,7 +178,7 @@ class AddWifiPowerZone1Activity :
|
||||
}
|
||||
|
||||
private fun goNext() {
|
||||
Util.checkLocationPermissionsGpsEnabled(mContext, {
|
||||
Util.checkLocationPermissionsGpsEnabled(this, {
|
||||
Intent(mContext, AddWifiPowerZone2Activity::class.java).let {
|
||||
mPetBean?.let { pet ->
|
||||
it.putExtra(ConstantString.Pet, pet)
|
||||
|
||||
@@ -105,7 +105,7 @@ class AddWifiPowerZone2Activity :
|
||||
override fun onClick(v: View?) {
|
||||
mViewBinding.apply {
|
||||
when (v!!) {
|
||||
btnAddWifiZone2Next -> Util.checkBluetoothPermissionsEnabled(mContext, {
|
||||
btnAddWifiZone2Next -> Util.checkBluetoothPermissionsEnabled(this@AddWifiPowerZone2Activity, {
|
||||
goNext()
|
||||
})
|
||||
|
||||
|
||||
@@ -272,7 +272,7 @@ class AddWifiPowerZone3Activity :
|
||||
private fun checkPermission() {
|
||||
//从 Android 6.0(API 23)开始,定位权限现在被用于 Wi-Fi 扫描
|
||||
Util.checkPermissions(
|
||||
mContext, object : Util.RequestPermissionCallback {
|
||||
this, object : Util.RequestPermissionCallback {
|
||||
override fun onRequestPermissionSuccess() {
|
||||
addListData()
|
||||
}
|
||||
|
||||
@@ -115,7 +115,7 @@ class PowerSavingSetActivity :
|
||||
if (share != ConstantInt.NoShare) {
|
||||
return
|
||||
}
|
||||
Util.checkLocationPermissionsGpsEnabled(mContext, {
|
||||
Util.checkLocationPermissionsGpsEnabled(this, {
|
||||
if (mZoneAdapter.getData().isNotEmpty()) {
|
||||
val wiFiZoneBean = mZoneAdapter.getData()[pos]
|
||||
val intent = Intent(mContext, EditWifiPowerZoneActivity::class.java)
|
||||
|
||||
@@ -718,7 +718,7 @@ class LiveActivityV3 : BaseActivity<ActivityLiveV3Binding>(ActivityLiveV3Binding
|
||||
*/
|
||||
private fun setLedSwitch(mode: Int) {
|
||||
mTrackBleDevice?.apply {
|
||||
SRBleUtil.instance.setBleLedSwitch(mContext, bleDevice, mode)
|
||||
SRBleUtil.instance.setBleLedSwitch(this@LiveActivityV3, bleDevice, mode)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1109,7 +1109,7 @@ class LiveActivityV3 : BaseActivity<ActivityLiveV3Binding>(ActivityLiveV3Binding
|
||||
* 找蓝牙设备
|
||||
*/
|
||||
private fun findBleDevice(mac: String) {
|
||||
Util.checkBluetoothPermissionsEnabled(mContext, {
|
||||
Util.checkBluetoothPermissionsEnabled(this, {
|
||||
showAndHideFindLayout()
|
||||
mViewBinding.ilLiveV2BluetoothFindDevice.apply {
|
||||
mFindBleDeviceViewModel.startScanFind(
|
||||
|
||||
@@ -28,7 +28,7 @@ class FirstPermissionsActivity :
|
||||
override fun initData() {
|
||||
super.initData()
|
||||
|
||||
mPermissionsCommon = PermissionsActivityCommon(mContext).apply {
|
||||
mPermissionsCommon = PermissionsActivityCommon(this).apply {
|
||||
registerGpsReceiver()
|
||||
}
|
||||
mPermissionsAdapter =
|
||||
|
||||
@@ -25,7 +25,7 @@ class PermissionsSetActivity :
|
||||
setTopBarTitle(R.string.txt_permissions)
|
||||
setLeftBackImage(R.drawable.icon_white_back_svg)
|
||||
|
||||
mPermissionsCommon = PermissionsActivityCommon(mContext).apply {
|
||||
mPermissionsCommon = PermissionsActivityCommon(this).apply {
|
||||
registerGpsReceiver()
|
||||
}
|
||||
mPermissionsSetAdapter =
|
||||
|
||||
@@ -143,7 +143,7 @@ class ChoosePlanActivity :
|
||||
}
|
||||
|
||||
private fun goSureSubscriptionPlan() {
|
||||
Util.checkLocationPermissionsGpsEnabled(mContext, {
|
||||
Util.checkLocationPermissionsGpsEnabled(this, {
|
||||
Intent(
|
||||
mContext, SureSubscriptionPlanActivity::class.java
|
||||
).let {
|
||||
|
||||
@@ -49,7 +49,7 @@ class SubscriptionHistoryActivity :
|
||||
super.onResume()
|
||||
if (mRefreshPackage) {
|
||||
mRefreshPackage = false
|
||||
mSubscriptionViewModel.getHistoryIncludeRenew("sub_1TN3ccCUI9XSagUNmhpfpRk4")
|
||||
mSubscriptionViewModel.getHistoryIncludeRenew(subscriptionId)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -7,11 +7,13 @@ import android.location.LocationManager
|
||||
import android.provider.Settings
|
||||
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
|
||||
import com.abbidot.tracker.R
|
||||
import com.abbidot.tracker.base.BaseActivity
|
||||
import com.abbidot.tracker.bean.DataBean
|
||||
import com.abbidot.tracker.constant.ConstantInt
|
||||
import com.abbidot.tracker.receiver.GPSMonitorReceiver
|
||||
import com.abbidot.tracker.util.Util
|
||||
import com.abbidot.tracker.util.bluetooth.SRBleUtil
|
||||
import com.baidu.mshield.x0.EngineImpl.mContext
|
||||
import com.clj.fastble.BleManager
|
||||
import com.hjq.permissions.XXPermissions
|
||||
import com.hjq.permissions.permission.PermissionLists
|
||||
@@ -21,11 +23,11 @@ import com.hjq.permissions.permission.PermissionLists
|
||||
* @link
|
||||
* @description:
|
||||
*/
|
||||
class PermissionsActivityCommon(context: Context) {
|
||||
class PermissionsActivityCommon(activity: BaseActivity<*>) {
|
||||
|
||||
private val mLocationManager =
|
||||
context.getSystemService(Context.LOCATION_SERVICE) as LocationManager
|
||||
private val mContext = context
|
||||
activity.getSystemService(Context.LOCATION_SERVICE) as LocationManager
|
||||
private val mActivity = activity
|
||||
private var mGPSListenerReceiver: GPSMonitorReceiver? = null
|
||||
|
||||
/**
|
||||
@@ -172,7 +174,7 @@ class PermissionsActivityCommon(context: Context) {
|
||||
*/
|
||||
fun operateBluetooth() {
|
||||
Util.checkPermissions(
|
||||
mContext,
|
||||
mActivity,
|
||||
object : Util.RequestPermissionCallback {
|
||||
override fun onRequestPermissionSuccess() {
|
||||
if (BleManager.getInstance().isSupportBle) {
|
||||
@@ -191,11 +193,12 @@ class PermissionsActivityCommon(context: Context) {
|
||||
*/
|
||||
fun operateGPSLocation() {
|
||||
Util.checkPermissions(
|
||||
mContext,
|
||||
mActivity,
|
||||
object : Util.RequestPermissionCallback {
|
||||
override fun onRequestPermissionSuccess() {
|
||||
if (!mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
|
||||
val intent = Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
mContext.startActivity(intent)
|
||||
}
|
||||
}
|
||||
@@ -211,7 +214,7 @@ class PermissionsActivityCommon(context: Context) {
|
||||
*/
|
||||
fun operateNotifications(adapter: BaseRecyclerAdapter<DataBean>, expansionState: Int) {
|
||||
Util.checkPermissions(
|
||||
mContext,
|
||||
mActivity,
|
||||
object : Util.RequestPermissionCallback {
|
||||
override fun onRequestPermissionSuccess() {
|
||||
updatePermissionsState(adapter, expansionState)
|
||||
|
||||
@@ -1109,7 +1109,7 @@ class HomeTrackFragment :
|
||||
*/
|
||||
private fun connectionBtn(btnString: String) {
|
||||
if (btnString == getString(R.string.txt_unconnect_no)) {
|
||||
Util.checkBluetoothPermissionsEnabled(mContext!!, {
|
||||
Util.checkBluetoothPermissionsEnabled(getHomeV2Activity()!!, {
|
||||
getHomeV2Activity()?.getPet()?.apply {
|
||||
mConnectionDeviceViewModel.connectDeviceToMac(
|
||||
getHomeV2Activity()!!, macID, false
|
||||
@@ -1172,7 +1172,7 @@ class HomeTrackFragment :
|
||||
if (BleManager.getInstance().isConnected(it.deviceMacId)) {
|
||||
//蓝牙控制
|
||||
getBleTrackDeviceBean(false)?.let { ble ->
|
||||
SRBleUtil.instance.setBleLedSwitch(mContext!!, ble.bleDevice, ledSwitch)
|
||||
SRBleUtil.instance.setBleLedSwitch(getHomeV2Activity()!!, ble.bleDevice, ledSwitch)
|
||||
}
|
||||
} else {
|
||||
// setLedState(ledSwitch)
|
||||
|
||||
@@ -513,7 +513,7 @@ class MapV3Fragment : BaseFragment<FragmentMapV3Binding>(FragmentMapV3Binding::i
|
||||
override fun onOkClick(dialog: BaseDialog<*>) {
|
||||
dialog.dismiss()
|
||||
if (type == 0) checkPermissions(type)
|
||||
else Util.checkLocationPermissionsGpsEnabled(mContext!!, {})
|
||||
else Util.checkLocationPermissionsGpsEnabled(getHomeV2Activity()!!, {})
|
||||
}
|
||||
},
|
||||
okTextResId = R.string.txt_accept,
|
||||
@@ -811,7 +811,7 @@ class MapV3Fragment : BaseFragment<FragmentMapV3Binding>(FragmentMapV3Binding::i
|
||||
*/
|
||||
private fun checkPermissions(type: Int) {
|
||||
getHomeV2Activity()?.apply {
|
||||
Util.checkBluetoothPermissionsEnabled(mContext, {
|
||||
Util.checkBluetoothPermissionsEnabled(this, {
|
||||
if (type == 0) {
|
||||
if (!mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
|
||||
val intent = Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)
|
||||
|
||||
@@ -40,7 +40,6 @@ import com.abbidot.tracker.vm.SubscriptionManageViewModel
|
||||
import com.baidu.mapapi.utils.DistanceUtil
|
||||
import com.clj.fastble.BleManager
|
||||
import com.google.android.gms.maps.model.LatLng
|
||||
import com.hjq.permissions.OnPermissionCallback
|
||||
import com.hjq.permissions.XXPermissions
|
||||
import com.hjq.permissions.permission.PermissionLists
|
||||
import com.hjq.permissions.permission.base.IPermission
|
||||
@@ -351,39 +350,56 @@ class Util {
|
||||
* 检查权限并获取权限
|
||||
*/
|
||||
fun checkPermissions(
|
||||
context: Context,
|
||||
activity: BaseActivity<*>,
|
||||
requestPermissionCallback: RequestPermissionCallback,
|
||||
permissionTag: String,
|
||||
vararg permissions: IPermission
|
||||
) {
|
||||
XXPermissions.with(context).permissions(permissions)
|
||||
.request(object : OnPermissionCallback {
|
||||
override fun onGranted(
|
||||
permissions: MutableList<IPermission>, all: Boolean
|
||||
) {
|
||||
if (all) {
|
||||
XXPermissions.with(activity).permissions(permissions).request { _, deniedList ->
|
||||
val allGranted = deniedList.isEmpty()
|
||||
if (allGranted) {
|
||||
LogUtil.e("获取${permissionTag}权限成功")
|
||||
requestPermissionCallback.onRequestPermissionSuccess()
|
||||
} else {
|
||||
val doNotAskAgain =
|
||||
XXPermissions.isDoNotAskAgainPermissions(activity, deniedList)
|
||||
if (doNotAskAgain) {
|
||||
LogUtil.e("被永久拒绝授权,请手动授予定位权限")
|
||||
// 如果是被永久拒绝就跳转到应用权限系统设置页面
|
||||
XXPermissions.startPermissionActivity(activity, deniedList)
|
||||
} else {
|
||||
LogUtil.e("获取部分权限成功,但部分权限未正常授予")
|
||||
requestPermissionCallback.onRequestPermissionFail()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDenied(
|
||||
permissions: MutableList<IPermission>, doNotAskAgain: Boolean
|
||||
) {
|
||||
if (doNotAskAgain) {
|
||||
LogUtil.e("被永久拒绝授权,请手动授予定位权限")
|
||||
// 如果是被永久拒绝就跳转到应用权限系统设置页面
|
||||
XXPermissions.startPermissionActivity(context, permissions)
|
||||
} else {
|
||||
LogUtil.e("获取${permissionTag}权限失败")
|
||||
requestPermissionCallback.onRequestPermissionFail()
|
||||
// object : OnPermissionCallback {
|
||||
// override fun onGranted(
|
||||
// permissions: MutableList<IPermission>, all: Boolean
|
||||
// ) {
|
||||
// if (all) {
|
||||
//
|
||||
// } else {
|
||||
// LogUtil.e("获取部分权限成功,但部分权限未正常授予")
|
||||
// requestPermissionCallback.onRequestPermissionFail()
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// override fun onDenied(
|
||||
// permissions: MutableList<IPermission>, doNotAskAgain: Boolean
|
||||
// ) {
|
||||
// if (doNotAskAgain) {
|
||||
// LogUtil.e("被永久拒绝授权,请手动授予定位权限")
|
||||
// // 如果是被永久拒绝就跳转到应用权限系统设置页面
|
||||
// XXPermissions.startPermissionActivity(context, permissions)
|
||||
// } else {
|
||||
// LogUtil.e("获取${permissionTag}权限失败")
|
||||
// requestPermissionCallback.onRequestPermissionFail()
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
@@ -647,18 +663,18 @@ class Util {
|
||||
* 检查蓝牙权限和开关
|
||||
*/
|
||||
fun checkBluetoothPermissionsEnabled(
|
||||
context: Context,
|
||||
activity: BaseActivity<*>,
|
||||
successAuthorize: () -> Unit,
|
||||
isShowToast: Boolean = true,
|
||||
isCheckBleOpen: Boolean = true
|
||||
) {
|
||||
checkPermissions(
|
||||
context,
|
||||
activity,
|
||||
object : RequestPermissionCallback {
|
||||
override fun onRequestPermissionSuccess() {
|
||||
//判断蓝牙是否打开
|
||||
if (isCheckBleOpen && !SRBleUtil.instance.isBleEnable(context)) {
|
||||
SRBleUtil.instance.openBluetooth(context)
|
||||
if (isCheckBleOpen && !SRBleUtil.instance.isBleEnable(activity)) {
|
||||
SRBleUtil.instance.openBluetooth(activity)
|
||||
return
|
||||
}
|
||||
successAuthorize()
|
||||
@@ -680,18 +696,18 @@ class Util {
|
||||
* 检查定位权限和GPS开关
|
||||
*/
|
||||
fun checkLocationPermissionsGpsEnabled(
|
||||
context: Context, successAuthorize: () -> Unit, isShowToast: Boolean = true
|
||||
activity: BaseActivity<*>, successAuthorize: () -> Unit, isShowToast: Boolean = true
|
||||
) {
|
||||
val locationManager =
|
||||
context.getSystemService(Context.LOCATION_SERVICE) as LocationManager
|
||||
activity.getSystemService(Context.LOCATION_SERVICE) as LocationManager
|
||||
checkPermissions(
|
||||
context,
|
||||
activity,
|
||||
object : RequestPermissionCallback {
|
||||
override fun onRequestPermissionSuccess() {
|
||||
//判断GPS是否打开
|
||||
if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
|
||||
val intent = Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)
|
||||
context.startActivity(intent)
|
||||
activity.startActivity(intent)
|
||||
return
|
||||
}
|
||||
successAuthorize()
|
||||
|
||||
@@ -78,10 +78,8 @@ import com.daimajia.androidanimations.library.YoYo.YoYoString
|
||||
import com.google.android.flexbox.FlexboxLayoutManager
|
||||
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
||||
import com.google.android.material.bottomsheet.BottomSheetDialog
|
||||
import com.hjq.permissions.OnPermissionCallback
|
||||
import com.hjq.permissions.XXPermissions
|
||||
import com.hjq.permissions.permission.PermissionLists
|
||||
import com.hjq.permissions.permission.base.IPermission
|
||||
import com.hjq.toast.Toaster
|
||||
import com.huantansheng.easyphotos.EasyPhotos
|
||||
import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton
|
||||
@@ -575,35 +573,54 @@ class ViewUtil private constructor() {
|
||||
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q)
|
||||
|
||||
XXPermissions.with(activity).permission(PermissionLists.getReadMediaImagesPermission())
|
||||
.permission(PermissionLists.getCameraPermission())
|
||||
.request(object : OnPermissionCallback {
|
||||
override fun onGranted(permissions: MutableList<IPermission>, allGranted: Boolean) {
|
||||
.permission(PermissionLists.getCameraPermission()).request { _, deniedList ->
|
||||
val allGranted = deniedList.isEmpty()
|
||||
if (allGranted) {
|
||||
LogUtil.e("获取READ_MEDIA_IMAGES权限成功")
|
||||
EasyPhotos.createAlbum(activity, true, false, CoilEngine.instance)
|
||||
.setFileProviderAuthority(FileUtil.FILE_PROVIDER).setCount(count)
|
||||
.setPuzzleMenu(false).setCleanMenu(false).start(requestCode)
|
||||
//activity.overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left)
|
||||
} else {
|
||||
val doNotAskAgain =
|
||||
XXPermissions.isDoNotAskAgainPermissions(activity, deniedList)
|
||||
if (doNotAskAgain) {
|
||||
LogUtil.e("READ_MEDIA_IMAGES被永久拒绝授权,请手动授予定位权限")
|
||||
// 如果是被永久拒绝就跳转到应用权限系统设置页面
|
||||
XXPermissions.startPermissionActivity(activity, deniedList)
|
||||
} else {
|
||||
LogUtil.e("获取READ_MEDIA_IMAGES权限,但部分权限未正常授予")
|
||||
Toaster.show(R.string.txt_permissions_fail_tips)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDenied(
|
||||
permissions: MutableList<IPermission>, doNotAskAgain: Boolean
|
||||
) {
|
||||
if (doNotAskAgain) {
|
||||
LogUtil.e("READ_MEDIA_IMAGES被永久拒绝授权,请手动授予定位权限")
|
||||
// 如果是被永久拒绝就跳转到应用权限系统设置页面
|
||||
XXPermissions.startPermissionActivity(activity, permissions)
|
||||
} else {
|
||||
LogUtil.e("获取READ_MEDIA_IMAGES权限失败")
|
||||
Toaster.show(R.string.txt_permissions_fail_tips)
|
||||
// override fun onGranted(permissions: MutableList<IPermission>, allGranted: Boolean) {
|
||||
// if (allGranted) {
|
||||
// LogUtil.e("获取READ_MEDIA_IMAGES权限成功")
|
||||
// EasyPhotos.createAlbum(activity, true, false, CoilEngine.instance)
|
||||
// .setFileProviderAuthority(FileUtil.FILE_PROVIDER).setCount(count)
|
||||
// .setPuzzleMenu(false).setCleanMenu(false).start(requestCode)
|
||||
// //activity.overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left)
|
||||
// } else {
|
||||
// LogUtil.e("获取READ_MEDIA_IMAGES权限,但部分权限未正常授予")
|
||||
// Toaster.show(R.string.txt_permissions_fail_tips)
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// override fun onDenied(
|
||||
// permissions: MutableList<IPermission>, doNotAskAgain: Boolean
|
||||
// ) {
|
||||
// if (doNotAskAgain) {
|
||||
// LogUtil.e("READ_MEDIA_IMAGES被永久拒绝授权,请手动授予定位权限")
|
||||
// // 如果是被永久拒绝就跳转到应用权限系统设置页面
|
||||
// XXPermissions.startPermissionActivity(activity, permissions)
|
||||
// } else {
|
||||
// LogUtil.e("获取READ_MEDIA_IMAGES权限失败")
|
||||
// Toaster.show(R.string.txt_permissions_fail_tips)
|
||||
// }
|
||||
// }
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* coil加载网络图片
|
||||
|
||||
@@ -15,6 +15,7 @@ import com.abbidot.baselibrary.constant.EventName
|
||||
import com.abbidot.baselibrary.eventbus.XEventBus
|
||||
import com.abbidot.baselibrary.util.AppUtils
|
||||
import com.abbidot.baselibrary.util.LogUtil
|
||||
import com.abbidot.tracker.base.BaseActivity
|
||||
import com.abbidot.tracker.bean.BleTrackDeviceBean
|
||||
import com.abbidot.tracker.bean.ReceiveDeviceData
|
||||
import com.abbidot.tracker.util.SocketUtilManageV2
|
||||
@@ -132,6 +133,7 @@ class SRBleUtil private constructor() {
|
||||
fun openBluetooth(context: Context) {
|
||||
// BleManager.getInstance().enableBluetooth()
|
||||
val intent = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE)
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
context.startActivity(intent)
|
||||
}
|
||||
|
||||
@@ -298,9 +300,7 @@ class SRBleUtil private constructor() {
|
||||
override fun onNotifyFailure(exception: BleException?) {
|
||||
LogUtil.e("打开日志上报通道失败:${bleDevice.mac},$exception")
|
||||
openG40LogReportNotify(
|
||||
bleDevice,
|
||||
logG40ServiceUUID,
|
||||
logG40NotifyCharacteristicUUID
|
||||
bleDevice, logG40ServiceUUID, logG40NotifyCharacteristicUUID
|
||||
)
|
||||
}
|
||||
|
||||
@@ -474,10 +474,10 @@ class SRBleUtil private constructor() {
|
||||
/**
|
||||
*发送设备开启关闭led蓝牙指令
|
||||
*/
|
||||
fun setBleLedSwitch(context: Context, bleDevice: BleDevice?, mode: Int) {
|
||||
fun setBleLedSwitch(activity: BaseActivity<*>, bleDevice: BleDevice?, mode: Int) {
|
||||
//判断是否有蓝牙连接
|
||||
if (BleManager.getInstance().isConnected(bleDevice)) {
|
||||
Util.checkBluetoothPermissionsEnabled(context, {
|
||||
Util.checkBluetoothPermissionsEnabled(activity, {
|
||||
writeData(
|
||||
bleDevice, SRBleCmdUtil.instance.ledState(SRBleCmdUtil.CMD_WRITE, mode)
|
||||
)
|
||||
|
||||
@@ -327,6 +327,11 @@ public final class BrowserView extends WebView {
|
||||
DialogUtils.Companion.showEditTextDialog(mWebView.getContext(), message, defaultValue
|
||||
, new GetResultCallback() {
|
||||
@Override
|
||||
public void onErrorCode() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRequestError(@Nullable String exceptionCode) {
|
||||
}
|
||||
|
||||
@@ -350,7 +355,7 @@ public final class BrowserView extends WebView {
|
||||
@Override
|
||||
public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> callback,
|
||||
FileChooserParams params) {
|
||||
Util.Companion.checkPermissions(mWebView.getContext(),
|
||||
Util.Companion.checkPermissions((BaseActivity) (mWebView.getContext()),
|
||||
new Util.RequestPermissionCallback() {
|
||||
@Override
|
||||
public void onRequestPermissionSuccess() {
|
||||
|
||||
@@ -73,6 +73,14 @@
|
||||
android:text="@string/txt_led_setting"
|
||||
android:textSize="@dimen/textSize14"
|
||||
app:typeface="@string/roboto_regular_font" />
|
||||
<com.abbidot.tracker.widget.TypefaceTextView
|
||||
style="@style/my_TextView_style_v2"
|
||||
android:layout_marginTop="@dimen/dp_8"
|
||||
android:drawableStart="@drawable/icon_permission_error_check_svg"
|
||||
android:drawablePadding="@dimen/dp_8"
|
||||
android:text="@string/txt_auto_renew_cancel"
|
||||
android:textSize="@dimen/textSize14"
|
||||
app:typeface="@string/roboto_regular_font" />
|
||||
|
||||
<com.abbidot.tracker.widget.TypefaceTextView
|
||||
style="@style/my_TextView_style_v2"
|
||||
|
||||
@@ -1078,5 +1078,6 @@
|
||||
<string name="map_baidu_map">Baidu Map</string>
|
||||
<string name="txt_time_line">Timeline</string>
|
||||
<string name="txt_phone_close_device">Keep phone close to device</string>
|
||||
<string name="txt_auto_renew_cancel">Auto-Renew: Cancel</string>
|
||||
|
||||
</resources>
|
||||
@@ -43,9 +43,9 @@ dependencies {
|
||||
|
||||
// Android官方库
|
||||
api "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
||||
api 'androidx.core:core-ktx:1.13.1'
|
||||
api 'androidx.appcompat:appcompat:1.7.0'
|
||||
api 'com.google.android.material:material:1.10.0'
|
||||
api 'androidx.core:core-ktx:1.16.0'
|
||||
api 'androidx.appcompat:appcompat:1.7.1'
|
||||
api 'com.google.android.material:material:1.13.0'
|
||||
|
||||
//SharedPreferences的替代https://github.com/Tencent/MMKV
|
||||
implementation 'com.tencent:mmkv-static:2.4.0'
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||
buildscript {
|
||||
ext.kotlin_version = '2.2.0'
|
||||
ext.kotlin_version = '2.3.10'
|
||||
repositories {
|
||||
google()
|
||||
mavenCentral()
|
||||
@@ -13,14 +13,12 @@ buildscript {
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:8.11.1'
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||
classpath 'com.google.gms:google-services:4.4.2'
|
||||
classpath 'com.google.gms:google-services:4.4.4'
|
||||
// classpath 'com.google.dagger:hilt-android-gradle-plugin:2.46.1'
|
||||
classpath 'com.google.dagger:hilt-android-gradle-plugin:2.57'
|
||||
classpath 'com.google.dagger:hilt-android-gradle-plugin:2.57.2'
|
||||
// NOTE: Do not place your application dependencies here; they belong
|
||||
// in the individual module build.gradle files
|
||||
|
||||
// fcm
|
||||
// classpath 'com.google.gms:google-services:4.3.4'
|
||||
// hms
|
||||
// classpath 'com.huawei.agconnect:agcp:1.4.1.300'
|
||||
}
|
||||
|
||||
@@ -18,10 +18,10 @@ android {
|
||||
|
||||
dependencies {
|
||||
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
|
||||
implementation 'androidx.appcompat:appcompat:1.7.0'
|
||||
implementation 'com.google.android.material:material:1.10.0'
|
||||
implementation 'androidx.recyclerview:recyclerview:1.3.1'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.2.1'
|
||||
implementation 'androidx.appcompat:appcompat:1.7.1'
|
||||
implementation 'com.google.android.material:material:1.13.0'
|
||||
implementation 'androidx.recyclerview:recyclerview:1.4.0'
|
||||
implementation 'com.davemorrissey.labs:subsampling-scale-image-view-androidx:3.10.0'
|
||||
implementation 'com.github.chrisbanes:PhotoView:2.3.0'
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ android {
|
||||
|
||||
dependencies {
|
||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
||||
implementation 'com.google.code.gson:gson:2.13.1'
|
||||
implementation 'com.google.code.gson:gson:2.13.2'
|
||||
}
|
||||
|
||||
sourceCompatibility = "7"
|
||||
|
||||
Reference in New Issue
Block a user