1.适配g30和g40
2.国内经纬度自定义用户位置图标,国外经纬度使用谷歌地图自带的用户位置图标
@@ -1 +1 @@
|
|||||||
#Sat Feb 14 11:22:05 CST 2026
|
#Thu Mar 12 15:15:30 CST 2026
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ android {
|
|||||||
targetSdkVersion 35
|
targetSdkVersion 35
|
||||||
versionCode 2110
|
versionCode 2110
|
||||||
// versionName "2.1.10"
|
// versionName "2.1.10"
|
||||||
versionName "2.1.10-Beta5"
|
versionName "2.1.10-Beta6"
|
||||||
|
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ class HomePetTrackMenuAdapter(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun convert(holder: BaseViewHolder, item: MenuTxtBean) {
|
override fun convert(holder: BaseViewHolder, item: MenuTxtBean) {
|
||||||
val position = getItemPosition(item)
|
// val position = getItemPosition(item)
|
||||||
val qMUICommonItemView =
|
val qMUICommonItemView =
|
||||||
holder.getView<QMUICommonListItemView>(R.id.tracker_manage_setting_item).apply {
|
holder.getView<QMUICommonListItemView>(R.id.tracker_manage_setting_item).apply {
|
||||||
ViewUtil.instance.showQMUICommonListItemView(
|
ViewUtil.instance.showQMUICommonListItemView(
|
||||||
@@ -55,12 +55,21 @@ class HomePetTrackMenuAdapter(
|
|||||||
setTextColor(ContextCompat.getColor(context, tColor))
|
setTextColor(ContextCompat.getColor(context, tColor))
|
||||||
}
|
}
|
||||||
qMUICommonItemView.setOnClickListener {
|
qMUICommonItemView.setOnClickListener {
|
||||||
when (position) {
|
when (item.menuName) {
|
||||||
0 -> mHomeTrackFragment.goPetDataActivity(LedLightActivity::class.java)
|
context.getString(R.string.tracker_manage_led) -> mHomeTrackFragment.goPetDataActivity(
|
||||||
1 -> mHomeTrackFragment.goMapDeviceDataActivity(TrackingDurationSetActivity::class.java)
|
LedLightActivity::class.java
|
||||||
2 -> mHomeTrackFragment.goMapDeviceDataActivity(LiveDurationSetActivity::class.java)
|
)
|
||||||
3 -> mHomeTrackFragment.firmwareCheckUpdate()
|
|
||||||
4 -> {
|
context.getString(R.string.tracker_manage_set_duration) -> mHomeTrackFragment.goMapDeviceDataActivity(
|
||||||
|
TrackingDurationSetActivity::class.java
|
||||||
|
)
|
||||||
|
|
||||||
|
context.getString(R.string.txt_live_duration) -> mHomeTrackFragment.goMapDeviceDataActivity(
|
||||||
|
LiveDurationSetActivity::class.java
|
||||||
|
)
|
||||||
|
|
||||||
|
context.getString(R.string.txt_firmware_version) -> mHomeTrackFragment.firmwareCheckUpdate()
|
||||||
|
context.getString(R.string.txt_power_off) -> {
|
||||||
if (item.type == ConstantInt.SpecialType) return@setOnClickListener
|
if (item.type == ConstantInt.SpecialType) return@setOnClickListener
|
||||||
mHomeTrackFragment.goPetDataActivity(PowerOffActivity::class.java)
|
mHomeTrackFragment.goPetDataActivity(PowerOffActivity::class.java)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import com.abbidot.tracker.constant.ConstantInt
|
|||||||
import com.abbidot.tracker.ui.activity.device.AddNewTracker1Activity
|
import com.abbidot.tracker.ui.activity.device.AddNewTracker1Activity
|
||||||
import com.abbidot.tracker.ui.activity.device.MyTrackerV2Activity
|
import com.abbidot.tracker.ui.activity.device.MyTrackerV2Activity
|
||||||
import com.abbidot.tracker.ui.activity.pet.PetProfileActivity
|
import com.abbidot.tracker.ui.activity.pet.PetProfileActivity
|
||||||
|
import com.abbidot.tracker.util.Util
|
||||||
import com.abbidot.tracker.util.ViewUtil
|
import com.abbidot.tracker.util.ViewUtil
|
||||||
import com.qmuiteam.qmui.widget.QMUIRadiusImageView
|
import com.qmuiteam.qmui.widget.QMUIRadiusImageView
|
||||||
|
|
||||||
@@ -100,6 +101,7 @@ class MyTrackerV2Adapter(
|
|||||||
trackerImageView.visibility = View.VISIBLE
|
trackerImageView.visibility = View.VISIBLE
|
||||||
trackerName.visibility = View.VISIBLE
|
trackerName.visibility = View.VISIBLE
|
||||||
|
|
||||||
|
trackerImageView.setImageResource(Util.getDeviceTypeImage(item.deviceType))
|
||||||
trackerName.text = item.deviceOutId
|
trackerName.text = item.deviceOutId
|
||||||
val battery = "${item.batteryCapacity} "
|
val battery = "${item.batteryCapacity} "
|
||||||
batteryTextView.text = battery
|
batteryTextView.text = battery
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import com.abbidot.baselibrary.list.BaseRecyclerAdapter
|
|||||||
import com.abbidot.baselibrary.list.RecyclerViewHolder
|
import com.abbidot.baselibrary.list.RecyclerViewHolder
|
||||||
import com.abbidot.tracker.R
|
import com.abbidot.tracker.R
|
||||||
import com.abbidot.tracker.bean.DeviceBean
|
import com.abbidot.tracker.bean.DeviceBean
|
||||||
|
import com.abbidot.tracker.util.Util
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*Created by .yzq on 2025/12/19/周五.
|
*Created by .yzq on 2025/12/19/周五.
|
||||||
@@ -39,6 +40,8 @@ class ScanDeviceAdapter(
|
|||||||
holder.getView(R.id.ld_add_new_tracker3_connect_state).visibility =
|
holder.getView(R.id.ld_add_new_tracker3_connect_state).visibility =
|
||||||
if (item.conState == ConState.CONNECTING) View.VISIBLE
|
if (item.conState == ConState.CONNECTING) View.VISIBLE
|
||||||
else View.GONE
|
else View.GONE
|
||||||
|
holder.getImageView(R.id.iv_add_new_tracker3_device_image)
|
||||||
|
.setImageResource(Util.getDeviceTypeImage(item.type))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -34,12 +34,31 @@ data class DeviceBean(//@PrimaryKey(autoGenerate = true) var id: Long,//autoGene
|
|||||||
@ColumnInfo var lteSignal: Int,
|
@ColumnInfo var lteSignal: Int,
|
||||||
@ColumnInfo var turnOff: Int,
|
@ColumnInfo var turnOff: Int,
|
||||||
@ColumnInfo var lightMode: Int,
|
@ColumnInfo var lightMode: Int,
|
||||||
@Ignore var pet: PetBean?) : BaseDiffBean(), Parcelable {
|
@Ignore var deviceType: Int,
|
||||||
|
@Ignore var pet: PetBean?
|
||||||
|
) : BaseDiffBean(), Parcelable {
|
||||||
// 如果某个实体中有您不想保留的字段,则可以使用 @Ignore 为这些字段添加注释
|
// 如果某个实体中有您不想保留的字段,则可以使用 @Ignore 为这些字段添加注释
|
||||||
|
|
||||||
//设置空的构造方法
|
//设置空的构造方法
|
||||||
constructor() : this(DeviceType.TYPE_ONE, "", "", "", 0, 0, 0, ConState.DISCONNECTED, "", "", 0,
|
constructor() : this(
|
||||||
0, 0, 0, 0, null)
|
DeviceType.TYPE_ONE,
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
ConState.DISCONNECTED,
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
null
|
||||||
|
)
|
||||||
|
|
||||||
override fun isSameObject(other: Any): Boolean {
|
override fun isSameObject(other: Any): Boolean {
|
||||||
val oldItem = other as DeviceBean
|
val oldItem = other as DeviceBean
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ data class MapDeviceBean(
|
|||||||
var wifiZones: MutableList<WiFiZoneBean>?,
|
var wifiZones: MutableList<WiFiZoneBean>?,
|
||||||
var startTime: String,
|
var startTime: String,
|
||||||
var endTime: String,
|
var endTime: String,
|
||||||
|
var deviceType: Int,
|
||||||
var canShowBattery: Boolean,
|
var canShowBattery: Boolean,
|
||||||
var isCloseBattery: Boolean,
|
var isCloseBattery: Boolean,
|
||||||
var isCloseMsg: Boolean
|
var isCloseMsg: Boolean
|
||||||
@@ -69,6 +70,7 @@ data class MapDeviceBean(
|
|||||||
null,
|
null,
|
||||||
"",
|
"",
|
||||||
"",
|
"",
|
||||||
|
1,
|
||||||
false,
|
false,
|
||||||
false,
|
false,
|
||||||
false
|
false
|
||||||
|
|||||||
@@ -31,13 +31,14 @@ data class PetBean(
|
|||||||
var deviceOutId: String,
|
var deviceOutId: String,
|
||||||
var macID: String,
|
var macID: String,
|
||||||
var mealType: Int,
|
var mealType: Int,
|
||||||
|
var deviceType: Int,
|
||||||
var availableOrder: Int,//判断套餐是否可用或过期,1是可用 0不可用
|
var availableOrder: Int,//判断套餐是否可用或过期,1是可用 0不可用
|
||||||
var deviceId: String
|
var deviceId: String
|
||||||
) : Parcelable, BaseDiffBean() {
|
) : Parcelable, BaseDiffBean() {
|
||||||
constructor() : this(
|
constructor() : this(
|
||||||
"", "", "", "", 0, 1, MMKVUtil.getString(MMKVKey.UserId), "", 0, Utils.formatTime(
|
"", "", "", "", 0, 1, MMKVUtil.getString(MMKVKey.UserId), "", 0, Utils.formatTime(
|
||||||
System.currentTimeMillis(), Utils.DATE_FORMAT_PATTERN_CN
|
System.currentTimeMillis(), Utils.DATE_FORMAT_PATTERN_CN
|
||||||
), "", 0f, 0f, "", "", "", 1, 1, ""
|
), "", 0f, 0f, "", "", "", 1, 1, 1, ""
|
||||||
)
|
)
|
||||||
|
|
||||||
override fun isSameObject(other: Any): Boolean {
|
override fun isSameObject(other: Any): Boolean {
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package com.abbidot.tracker.ui.activity.device
|
|||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.activity.viewModels
|
import androidx.activity.viewModels
|
||||||
import coil.load
|
|
||||||
import com.abbidot.baselibrary.constant.EventName
|
import com.abbidot.baselibrary.constant.EventName
|
||||||
import com.abbidot.baselibrary.eventbus.XEventBus
|
import com.abbidot.baselibrary.eventbus.XEventBus
|
||||||
import com.abbidot.tracker.R
|
import com.abbidot.tracker.R
|
||||||
@@ -36,7 +35,7 @@ class AddNewTracker1Activity :
|
|||||||
}
|
}
|
||||||
|
|
||||||
mViewBinding.apply {
|
mViewBinding.apply {
|
||||||
ivChargePowerOnGif.load(R.drawable.charge_power_on)
|
// ivChargePowerOnGif.load(R.drawable.charge_power_on)
|
||||||
|
|
||||||
if (!isFirstBind) {
|
if (!isFirstBind) {
|
||||||
tvChargePowerOnBackLoginBtn.visibility = View.GONE
|
tvChargePowerOnBackLoginBtn.visibility = View.GONE
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import com.abbidot.tracker.base.BaseActivity
|
|||||||
import com.abbidot.tracker.base.BaseDialog
|
import com.abbidot.tracker.base.BaseDialog
|
||||||
import com.abbidot.tracker.bean.BleTrackDeviceBean
|
import com.abbidot.tracker.bean.BleTrackDeviceBean
|
||||||
import com.abbidot.tracker.bean.DeviceBean
|
import com.abbidot.tracker.bean.DeviceBean
|
||||||
|
import com.abbidot.tracker.constant.ConstantInt
|
||||||
import com.abbidot.tracker.constant.ConstantString
|
import com.abbidot.tracker.constant.ConstantString
|
||||||
import com.abbidot.tracker.constant.GetResultCallback
|
import com.abbidot.tracker.constant.GetResultCallback
|
||||||
import com.abbidot.tracker.databinding.ActivityAddNewTracker3Binding
|
import com.abbidot.tracker.databinding.ActivityAddNewTracker3Binding
|
||||||
@@ -40,6 +41,7 @@ class AddNewTracker3Activity :
|
|||||||
private var mDeviceId = ""
|
private var mDeviceId = ""
|
||||||
private var mDeviceOutId = ""
|
private var mDeviceOutId = ""
|
||||||
private var mConBleMac = ""
|
private var mConBleMac = ""
|
||||||
|
private var mType = ConstantInt.Type1
|
||||||
|
|
||||||
private lateinit var mScanDeviceAdapter: ScanDeviceAdapter
|
private lateinit var mScanDeviceAdapter: ScanDeviceAdapter
|
||||||
|
|
||||||
@@ -68,6 +70,7 @@ class AddNewTracker3Activity :
|
|||||||
notifyItemRangeChanged(0, it.size)
|
notifyItemRangeChanged(0, it.size)
|
||||||
mDeviceOutId = it[pos].deviceOutId
|
mDeviceOutId = it[pos].deviceOutId
|
||||||
mConBleMac = it[pos].macId
|
mConBleMac = it[pos].macId
|
||||||
|
mType = it[pos].type
|
||||||
mTrackerSetViewModel.bindDevice(
|
mTrackerSetViewModel.bindDevice(
|
||||||
this@AddNewTracker3Activity, mDeviceOutId
|
this@AddNewTracker3Activity, mDeviceOutId
|
||||||
)
|
)
|
||||||
@@ -97,6 +100,7 @@ class AddNewTracker3Activity :
|
|||||||
val intent = Intent(mContext, AddPairedSuccessActivity::class.java)
|
val intent = Intent(mContext, AddPairedSuccessActivity::class.java)
|
||||||
intent.putExtra(ConstantString.DeviceOutId, mDeviceOutId)
|
intent.putExtra(ConstantString.DeviceOutId, mDeviceOutId)
|
||||||
intent.putExtra(ConstantString.isFirstBind, isFirstBind)
|
intent.putExtra(ConstantString.isFirstBind, isFirstBind)
|
||||||
|
intent.putExtra(ConstantString.Type, mType)
|
||||||
intent.putExtra(ConstantString.DeviceId, mDeviceId)
|
intent.putExtra(ConstantString.DeviceId, mDeviceId)
|
||||||
intent.putExtra(ConstantString.Mac, ble.mac)
|
intent.putExtra(ConstantString.Mac, ble.mac)
|
||||||
startActivity(intent)
|
startActivity(intent)
|
||||||
@@ -186,14 +190,19 @@ class AddNewTracker3Activity :
|
|||||||
LogUtil.d("onScanning....$bleDevice")
|
LogUtil.d("onScanning....$bleDevice")
|
||||||
bleDevice?.apply {
|
bleDevice?.apply {
|
||||||
if (null != name && name.contains(SRBleUtil.instance.trackDeviceBleStartName)) {
|
if (null != name && name.contains(SRBleUtil.instance.trackDeviceBleStartName)) {
|
||||||
val start = 45
|
val subArray = getManufacturerInfo(scanRecord)
|
||||||
val end = start + 6
|
|
||||||
val subArray = scanRecord.sliceArray(start until end)
|
|
||||||
LogUtil.e("截取后的外显id广播=${HexUtil.formatHexString(subArray, true)}")
|
LogUtil.e("截取后的外显id广播=${HexUtil.formatHexString(subArray, true)}")
|
||||||
val deviceOutId = subArray.decodeToString()
|
var typeName = ""
|
||||||
|
subArray?.let {
|
||||||
|
typeName = it.decodeToString()
|
||||||
|
}
|
||||||
DeviceBean().let {
|
DeviceBean().let {
|
||||||
it.deviceOutId = deviceOutId
|
it.type = getDeviceType(typeName)
|
||||||
|
it.deviceOutId =
|
||||||
|
name.substring(SRBleUtil.instance.trackDeviceBleStartName.length)
|
||||||
|
.trim()
|
||||||
it.macId = mac
|
it.macId = mac
|
||||||
|
it.deviceName = name
|
||||||
mScanDeviceAdapter.getData().let { list ->
|
mScanDeviceAdapter.getData().let { list ->
|
||||||
ViewUtil.instance.viewShow(mViewBinding.rvAddNewTracker3DeviceList)
|
ViewUtil.instance.viewShow(mViewBinding.rvAddNewTracker3DeviceList)
|
||||||
list.add(it)
|
list.add(it)
|
||||||
@@ -211,6 +220,44 @@ class AddNewTracker3Activity :
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取查找设备类型
|
||||||
|
*/
|
||||||
|
private fun getManufacturerInfo(scanRecord: ByteArray): ByteArray? {
|
||||||
|
var index = 0
|
||||||
|
while (index < scanRecord.size) {
|
||||||
|
val length = scanRecord[index].toInt() and 0xFF
|
||||||
|
if (length == 0) break
|
||||||
|
val typeIndex = index + 1
|
||||||
|
val dataStart = index + 2
|
||||||
|
val dataLength = length - 1
|
||||||
|
val dataEndExclusive = dataStart + dataLength
|
||||||
|
if (typeIndex >= scanRecord.size || dataEndExclusive > scanRecord.size) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
val type = scanRecord[typeIndex].toInt() and 0xFF
|
||||||
|
if (type == 0xFF) {
|
||||||
|
val data = scanRecord.copyOfRange(dataStart, dataEndExclusive)
|
||||||
|
if (data.size < 2) return null
|
||||||
|
// val companyId = (data[0].toInt() and 0xFF) or ((data[1].toInt() and 0xFF) shl 8)
|
||||||
|
val payload = data.copyOfRange(2, data.size)
|
||||||
|
return payload
|
||||||
|
}
|
||||||
|
index += (length + 1)
|
||||||
|
}
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取设备类型
|
||||||
|
*/
|
||||||
|
private fun getDeviceType(typeName: String): Int {
|
||||||
|
return when (typeName) {
|
||||||
|
"G40" -> ConstantInt.Type2
|
||||||
|
else -> ConstantInt.Type1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun scanFinished() {
|
private fun scanFinished() {
|
||||||
mAnimatorSet?.cancel()
|
mAnimatorSet?.cancel()
|
||||||
mViewBinding.ivAddNewTracker3RefreshBtn.isEnabled = true
|
mViewBinding.ivAddNewTracker3RefreshBtn.isEnabled = true
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ class AddPairedSuccessActivity :
|
|||||||
private var mDeviceOutId = ""
|
private var mDeviceOutId = ""
|
||||||
private var mDeviceId = ""
|
private var mDeviceId = ""
|
||||||
private var mMac = ""
|
private var mMac = ""
|
||||||
|
private var mType = ConstantInt.Type1
|
||||||
private var mPetBean: PetBean? = null
|
private var mPetBean: PetBean? = null
|
||||||
|
|
||||||
//判断设备可用套餐状态
|
//判断设备可用套餐状态
|
||||||
@@ -66,6 +67,7 @@ class AddPairedSuccessActivity :
|
|||||||
isFirstBind = getBoolean(ConstantString.isFirstBind, false)
|
isFirstBind = getBoolean(ConstantString.isFirstBind, false)
|
||||||
mDeviceId = getString(ConstantString.DeviceId, "")
|
mDeviceId = getString(ConstantString.DeviceId, "")
|
||||||
mMac = getString(ConstantString.Mac, "")
|
mMac = getString(ConstantString.Mac, "")
|
||||||
|
mType = getInt(ConstantString.Type, ConstantInt.Type1)
|
||||||
mDeviceOutId = getString(ConstantString.DeviceOutId, "")
|
mDeviceOutId = getString(ConstantString.DeviceOutId, "")
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -73,6 +75,7 @@ class AddPairedSuccessActivity :
|
|||||||
|
|
||||||
mViewBinding.apply {
|
mViewBinding.apply {
|
||||||
tvPairSuccessDeviceOutId.text = mDeviceOutId
|
tvPairSuccessDeviceOutId.text = mDeviceOutId
|
||||||
|
ivPairSuccessDeviceImage.setImageResource(Util.getDeviceTypeImage(mType))
|
||||||
setOnClickListenerViews(btnPairSuccessActivate)
|
setOnClickListenerViews(btnPairSuccessActivate)
|
||||||
}
|
}
|
||||||
setButtonEnabled(mViewBinding.btnPairSuccessActivate, ConstantInt.Type0)
|
setButtonEnabled(mViewBinding.btnPairSuccessActivate, ConstantInt.Type0)
|
||||||
|
|||||||
@@ -708,6 +708,29 @@ class LiveActivityV3 : BaseActivity<ActivityLiveV3Binding>(ActivityLiveV3Binding
|
|||||||
}
|
}
|
||||||
|
|
||||||
mViewBinding.let {
|
mViewBinding.let {
|
||||||
|
if (deviceType == ConstantInt.Type2) {
|
||||||
|
it.ilLiveV2BluetoothFindDevice.ilLiveV2RadarLightSwitch.tvDeviceLightSwitchTitle.text =
|
||||||
|
getString(R.string.txt_light)
|
||||||
|
it.ilLiveV2BluetoothFindDevice.ilLiveV2RadarLightSwitch.tvDeviceLightSwitchTitle.setCompoundDrawablesWithIntrinsicBounds(
|
||||||
|
R.drawable.icon_light_svg, 0, 0, 0
|
||||||
|
)
|
||||||
|
it.ilLiveV2OperateLayout.ilLiveV2DataLightSwitch.tvDeviceLightSwitchTitle.text =
|
||||||
|
getString(R.string.txt_light)
|
||||||
|
it.ilLiveV2OperateLayout.ilLiveV2DataLightSwitch.tvDeviceLightSwitchTitle.setCompoundDrawablesWithIntrinsicBounds(
|
||||||
|
R.drawable.icon_light_svg, 0, 0, 0
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
it.ilLiveV2BluetoothFindDevice.ilLiveV2RadarLightSwitch.tvDeviceLightSwitchTitle.text =
|
||||||
|
getString(R.string.txt_tone)
|
||||||
|
it.ilLiveV2BluetoothFindDevice.ilLiveV2RadarLightSwitch.tvDeviceLightSwitchTitle.setCompoundDrawablesWithIntrinsicBounds(
|
||||||
|
R.drawable.icon_sound_image, 0, 0, 0
|
||||||
|
)
|
||||||
|
it.ilLiveV2OperateLayout.ilLiveV2DataLightSwitch.tvDeviceLightSwitchTitle.text =
|
||||||
|
getString(R.string.txt_tone)
|
||||||
|
it.ilLiveV2OperateLayout.ilLiveV2DataLightSwitch.tvDeviceLightSwitchTitle.setCompoundDrawablesWithIntrinsicBounds(
|
||||||
|
R.drawable.icon_sound_image, 0, 0, 0
|
||||||
|
)
|
||||||
|
}
|
||||||
isLedOpen = ledSwitch == ConstantInt.Open
|
isLedOpen = ledSwitch == ConstantInt.Open
|
||||||
it.ilLiveV2OperateLayout.ilLiveV2DataLightSwitch.cbDeviceLightSwitch.isChecked =
|
it.ilLiveV2OperateLayout.ilLiveV2DataLightSwitch.cbDeviceLightSwitch.isChecked =
|
||||||
isLedOpen
|
isLedOpen
|
||||||
|
|||||||
@@ -91,6 +91,7 @@ class HomeTrackFragment :
|
|||||||
//是否是dfu的返回的
|
//是否是dfu的返回的
|
||||||
private var isDFUCallback = false
|
private var isDFUCallback = false
|
||||||
private var mFirmwareBean: FirmwareBean? = null
|
private var mFirmwareBean: FirmwareBean? = null
|
||||||
|
private var isSwitchPet = true
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
@@ -102,7 +103,7 @@ class HomeTrackFragment :
|
|||||||
override fun initData() {
|
override fun initData() {
|
||||||
mViewBinding.apply {
|
mViewBinding.apply {
|
||||||
root.setBackgroundResource(R.color.transparent)
|
root.setBackgroundResource(R.color.transparent)
|
||||||
addListData()
|
addStateListData()
|
||||||
mHomePetTrackStateAdapter =
|
mHomePetTrackStateAdapter =
|
||||||
HomePetTrackStateAdapter(mContext!!, mTrackStateList).apply {
|
HomePetTrackStateAdapter(mContext!!, mTrackStateList).apply {
|
||||||
setOnItemClickListener(object : BaseRecyclerAdapter.OnItemClickListener {
|
setOnItemClickListener(object : BaseRecyclerAdapter.OnItemClickListener {
|
||||||
@@ -219,7 +220,7 @@ class HomeTrackFragment :
|
|||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
getPetTrackerInfoData()
|
getPetTrackerInfoData(isSwitchPet)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getHomeV2Activity(): HomeV2Activity? {
|
private fun getHomeV2Activity(): HomeV2Activity? {
|
||||||
@@ -287,6 +288,7 @@ class HomeTrackFragment :
|
|||||||
// LogUtil.e("蓝牙连接,不使用接口数据更新状态")
|
// LogUtil.e("蓝牙连接,不使用接口数据更新状态")
|
||||||
// } else {
|
// } else {
|
||||||
// }
|
// }
|
||||||
|
addMenuListData()
|
||||||
setStateData(data)
|
setStateData(data)
|
||||||
setZoneData(data)
|
setZoneData(data)
|
||||||
}
|
}
|
||||||
@@ -319,10 +321,18 @@ class HomeTrackFragment :
|
|||||||
mFirmwareBean = this
|
mFirmwareBean = this
|
||||||
mFirmwareBean?.mac = mBleTrackDeviceBean?.mac!!
|
mFirmwareBean?.mac = mBleTrackDeviceBean?.mac!!
|
||||||
|
|
||||||
val localVersion = mTrackMenuList[3].menuValue
|
findItem(
|
||||||
|
mTrackMenuList, getString(R.string.txt_firmware_version)
|
||||||
|
)?.let { m ->
|
||||||
|
val localVersion = m.menuValue
|
||||||
if (mDeviceDFUViewModel.checkVersionUpdate(localVersion, version)) {
|
if (mDeviceDFUViewModel.checkVersionUpdate(localVersion, version)) {
|
||||||
mTrackMenuList[3].isSwitch = true
|
m.isSwitch = true
|
||||||
mTrackMenuAdapter.notifyItemChanged(3)
|
mTrackMenuAdapter.notifyItemChanged(
|
||||||
|
findIndexOf(
|
||||||
|
mTrackMenuList, getString(R.string.txt_firmware_version)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -382,45 +392,18 @@ class HomeTrackFragment :
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getPetTrackerInfoData() {
|
fun getPetTrackerInfoData(switchPet: Boolean = false) {
|
||||||
|
isSwitchPet = switchPet
|
||||||
getHomeV2Activity()?.let {
|
getHomeV2Activity()?.let {
|
||||||
it.getPet()?.apply {
|
it.getPet()?.apply {
|
||||||
|
|
||||||
mTrackMenuList[1].menuValue = ""
|
if (isSwitchPet) {
|
||||||
mTrackMenuList[2].menuValue = ""
|
isSwitchPet = false
|
||||||
mTrackMenuList[4].menuValue = ""
|
mTrackMenuAdapter.notifyItemRangeRemoved(0, mTrackMenuList.size)
|
||||||
|
mTrackMenuList.clear()
|
||||||
|
}
|
||||||
|
|
||||||
mTrackerInfoViewModel.getPetTrackerInfo(it, deviceId)
|
mTrackerInfoViewModel.getPetTrackerInfo(it, deviceId)
|
||||||
|
|
||||||
getBleTrackDeviceBean(false)?.let { ble ->
|
|
||||||
if (BleManager.getInstance().isConnected(macID)) {
|
|
||||||
//获取固件版本号
|
|
||||||
if (null == mFirmwareBean) {
|
|
||||||
SRBleUtil.instance.writeData(
|
|
||||||
ble.bleDevice, SRBleCmdUtil.instance.getFirmwareVersion()
|
|
||||||
)
|
|
||||||
} else {
|
|
||||||
//只有新的设备,回到这个界面才去检查dfu
|
|
||||||
if (mFirmwareBean?.mac != ble.mac) {
|
|
||||||
mTrackMenuList[3].menuValue = ""
|
|
||||||
mTrackMenuList[3].isSwitch = false
|
|
||||||
SRBleUtil.instance.writeData(
|
|
||||||
ble.bleDevice, SRBleCmdUtil.instance.getFirmwareVersion()
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
mFirmwareBean = null
|
|
||||||
mTrackMenuList[3].menuValue = ""
|
|
||||||
mTrackMenuList[3].isSwitch = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (null == mBleTrackDeviceBean) {
|
|
||||||
mFirmwareBean = null
|
|
||||||
mTrackMenuList[3].menuValue = ""
|
|
||||||
mTrackMenuList[3].isSwitch = false
|
|
||||||
}
|
|
||||||
mTrackMenuAdapter.notifyItemRangeChanged(1, 4)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -441,11 +424,11 @@ class HomeTrackFragment :
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun addListData() {
|
private fun addStateListData() {
|
||||||
mTrackStateList = mutableListOf()
|
mTrackStateList = mutableListOf()
|
||||||
mFencesList = mutableListOf()
|
mFencesList = mutableListOf()
|
||||||
mZoneList = mutableListOf()
|
mZoneList = mutableListOf()
|
||||||
|
mTrackMenuList = mutableListOf()
|
||||||
ViewUtil.instance.addMenuBean(
|
ViewUtil.instance.addMenuBean(
|
||||||
mTrackStateList,
|
mTrackStateList,
|
||||||
getString(R.string.tracker_manage_set_network),
|
getString(R.string.tracker_manage_set_network),
|
||||||
@@ -485,9 +468,16 @@ class HomeTrackFragment :
|
|||||||
imageResId = R.drawable.icon_light_svg,
|
imageResId = R.drawable.icon_light_svg,
|
||||||
type = ConstantInt.SpecialType
|
type = ConstantInt.SpecialType
|
||||||
)
|
)
|
||||||
|
}
|
||||||
|
|
||||||
mTrackMenuList = mutableListOf()
|
private fun addMenuListData() {
|
||||||
ViewUtil.instance.addMenuBean(mTrackMenuList, getString(R.string.tracker_manage_led))
|
mMapDeviceBean?.apply {
|
||||||
|
if (mTrackMenuList.size == 0) {
|
||||||
|
if (deviceType == ConstantInt.Type1) {
|
||||||
|
ViewUtil.instance.addMenuBean(
|
||||||
|
mTrackMenuList, getString(R.string.tracker_manage_led)
|
||||||
|
)
|
||||||
|
}
|
||||||
ViewUtil.instance.addMenuBean(
|
ViewUtil.instance.addMenuBean(
|
||||||
mTrackMenuList, getString(R.string.tracker_manage_set_duration)
|
mTrackMenuList, getString(R.string.tracker_manage_set_duration)
|
||||||
)
|
)
|
||||||
@@ -497,9 +487,54 @@ class HomeTrackFragment :
|
|||||||
getString(R.string.txt_firmware_version),
|
getString(R.string.txt_firmware_version),
|
||||||
menuType = MultipleEntity.IMG_TEXT_IMG
|
menuType = MultipleEntity.IMG_TEXT_IMG
|
||||||
)
|
)
|
||||||
ViewUtil.instance.addMenuBean(
|
if (deviceType == ConstantInt.Type1) {
|
||||||
mTrackMenuList, getString(R.string.txt_power_off)
|
ViewUtil.instance.addMenuBean(mTrackMenuList, getString(R.string.txt_power_off))
|
||||||
// menuType = MultipleEntity.IMG_TEXT//, menuType = MultipleEntity.TEXT_NAME
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
getBleTrackDeviceBean(false)?.let { ble ->
|
||||||
|
if (BleManager.getInstance().isConnected(ble.mac)) {
|
||||||
|
//获取固件版本号
|
||||||
|
if (null == mFirmwareBean) {
|
||||||
|
SRBleUtil.instance.writeData(
|
||||||
|
ble.bleDevice, SRBleCmdUtil.instance.getFirmwareVersion()
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
//只有新的设备,回到这个界面才去检查dfu
|
||||||
|
if (mFirmwareBean?.mac != ble.mac) {
|
||||||
|
findItem(
|
||||||
|
mTrackMenuList, getString(R.string.txt_firmware_version)
|
||||||
|
)?.let { m ->
|
||||||
|
m.menuValue = ""
|
||||||
|
m.isSwitch = false
|
||||||
|
}
|
||||||
|
SRBleUtil.instance.writeData(
|
||||||
|
ble.bleDevice, SRBleCmdUtil.instance.getFirmwareVersion()
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
mFirmwareBean = null
|
||||||
|
findItem(mTrackMenuList, getString(R.string.txt_firmware_version))?.let { m ->
|
||||||
|
m.menuValue = ""
|
||||||
|
m.isSwitch = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (null == mBleTrackDeviceBean) {
|
||||||
|
mFirmwareBean = null
|
||||||
|
findItem(mTrackMenuList, getString(R.string.txt_firmware_version))?.let { m ->
|
||||||
|
m.menuValue = ""
|
||||||
|
m.isSwitch = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mTrackMenuAdapter.notifyItemChanged(
|
||||||
|
findIndexOf(
|
||||||
|
mTrackMenuList, getString(R.string.txt_firmware_version)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -534,6 +569,7 @@ class HomeTrackFragment :
|
|||||||
val endTime = "${getString(R.string.txt_end_time)}:$eTime"
|
val endTime = "${getString(R.string.txt_end_time)}:$eTime"
|
||||||
val id = "ID:$deviceOutId"
|
val id = "ID:$deviceOutId"
|
||||||
mViewBinding.let {
|
mViewBinding.let {
|
||||||
|
it.ivHomePetTrackPetHead.setImageResource(Util.getDeviceTypeImage(deviceType))
|
||||||
it.tvHomePetTrackPetStartTime.text = startTime
|
it.tvHomePetTrackPetStartTime.text = startTime
|
||||||
it.tvHomePetTrackPetEndTime.text = endTime
|
it.tvHomePetTrackPetEndTime.text = endTime
|
||||||
it.tvHomePetTrackId.text = id
|
it.tvHomePetTrackId.text = id
|
||||||
@@ -604,19 +640,21 @@ class HomeTrackFragment :
|
|||||||
setLedControlState(mapDeviceBean)
|
setLedControlState(mapDeviceBean)
|
||||||
|
|
||||||
mTrackMenuList.let {
|
mTrackMenuList.let {
|
||||||
it[1].menuValue =
|
findItem(it, getString(R.string.tracker_manage_set_duration))?.menuValue =
|
||||||
(gnssInterval / 60).toString() + getString(R.string.data_active_unit_min)
|
(gnssInterval / 60).toString() + getString(R.string.data_active_unit_min)
|
||||||
it[2].menuValue =
|
findItem(it, getString(R.string.txt_live_duration))?.menuValue =
|
||||||
(liveTime / 60).toString() + getString(R.string.data_active_unit_min)
|
(liveTime / 60).toString() + getString(R.string.data_active_unit_min)
|
||||||
it[4].type =
|
findItem(it, getString(R.string.txt_power_off))?.let { menu ->
|
||||||
|
menu.type =
|
||||||
if (powerSwitch == ConstantInt.Type3 || powerSwitch == ConstantInt.Type0) ConstantInt.SpecialType
|
if (powerSwitch == ConstantInt.Type3 || powerSwitch == ConstantInt.Type0) ConstantInt.SpecialType
|
||||||
else ConstantInt.Type0
|
else ConstantInt.Type0
|
||||||
it[4].menuValue = when (powerSwitch) {
|
menu.menuValue = when (powerSwitch) {
|
||||||
ConstantInt.Type0 -> getString(R.string.tracker_manage_set_led_off)
|
ConstantInt.Type0 -> getString(R.string.tracker_manage_set_led_off)
|
||||||
ConstantInt.Type1 -> getString(R.string.tracker_manage_set_led_on)
|
ConstantInt.Type1 -> getString(R.string.tracker_manage_set_led_on)
|
||||||
else -> ""
|
else -> ""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (powerSwitch == ConstantInt.Type0) {
|
if (powerSwitch == ConstantInt.Type0) {
|
||||||
mZoneAdapter.setDisabledMode(true)
|
mZoneAdapter.setDisabledMode(true)
|
||||||
@@ -625,15 +663,48 @@ class HomeTrackFragment :
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mTrackMenuAdapter.notifyItemRangeChanged(1, mTrackMenuList.size)
|
mTrackMenuAdapter.notifyItemRangeChanged(
|
||||||
|
findIndexOf(
|
||||||
|
mTrackMenuList, getString(R.string.tracker_manage_set_duration)
|
||||||
|
), mTrackMenuList.size
|
||||||
|
)
|
||||||
mHomePetTrackStateAdapter.notifyItemRangeChanged(0, mTrackStateList.size)
|
mHomePetTrackStateAdapter.notifyItemRangeChanged(0, mTrackStateList.size)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun findItem(list: MutableList<MenuTxtBean>, name: String): MenuTxtBean? {
|
||||||
|
var menuTxt: MenuTxtBean? = null
|
||||||
|
for (l in list) {
|
||||||
|
if (name == l.menuName) {
|
||||||
|
menuTxt = l
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return menuTxt
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun findIndexOf(list: MutableList<MenuTxtBean>, name: String): Int {
|
||||||
|
var index = 0
|
||||||
|
for (i in 0 until list.size) {
|
||||||
|
if (name == list[i].menuName) {
|
||||||
|
index = i
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return index
|
||||||
|
}
|
||||||
|
|
||||||
private fun setLedControlState(mapDeviceBean: MapDeviceBean) {
|
private fun setLedControlState(mapDeviceBean: MapDeviceBean) {
|
||||||
mapDeviceBean.apply {
|
mapDeviceBean.apply {
|
||||||
//是否超时上报
|
//是否超时上报
|
||||||
val isTimeoutReport = Util.isTimeoutReport(updateTime)
|
val isTimeoutReport = Util.isTimeoutReport(updateTime)
|
||||||
mTrackStateList[5].let {
|
mTrackStateList[5].let {
|
||||||
|
if (deviceType == ConstantInt.Type1) {
|
||||||
|
it.imageId = R.drawable.icon_light_svg
|
||||||
|
it.menuName = getString(R.string.txt_light)
|
||||||
|
} else {
|
||||||
|
it.imageId = R.drawable.icon_sound_image
|
||||||
|
it.menuName = getString(R.string.txt_tone)
|
||||||
|
}
|
||||||
it.colorRedId = R.color.orange_color3
|
it.colorRedId = R.color.orange_color3
|
||||||
it.type = if (SRBleUtil.instance.isMacConnect(deviceMacId)) {
|
it.type = if (SRBleUtil.instance.isMacConnect(deviceMacId)) {
|
||||||
ConstantInt.Type0
|
ConstantInt.Type0
|
||||||
@@ -698,7 +769,8 @@ class HomeTrackFragment :
|
|||||||
// mDFUStateAdapter = DFUStateAdapter(mContext!!, null)
|
// mDFUStateAdapter = DFUStateAdapter(mContext!!, null)
|
||||||
// mTrackerDFUStateDialog = TrackerDFUStateDialog(mContext!!, mDFUStateAdapter)
|
// mTrackerDFUStateDialog = TrackerDFUStateDialog(mContext!!, mDFUStateAdapter)
|
||||||
// }
|
// }
|
||||||
val localVersion = mTrackMenuList[3].menuValue
|
findItem(mTrackMenuList, getString(R.string.txt_firmware_version))?.let {
|
||||||
|
val localVersion = it.menuValue
|
||||||
if (mDeviceDFUViewModel.checkVersionUpdate(localVersion, version)) {
|
if (mDeviceDFUViewModel.checkVersionUpdate(localVersion, version)) {
|
||||||
// mTrackerDFUStateDialog?.apply {
|
// mTrackerDFUStateDialog?.apply {
|
||||||
// show()
|
// show()
|
||||||
@@ -729,6 +801,7 @@ class HomeTrackFragment :
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新设备连接状态
|
* 更新设备连接状态
|
||||||
@@ -765,6 +838,15 @@ class HomeTrackFragment :
|
|||||||
colorRedId = R.color.orange_color3
|
colorRedId = R.color.orange_color3
|
||||||
mHomePetTrackStateAdapter.notifyItemChanged(4)
|
mHomePetTrackStateAdapter.notifyItemChanged(4)
|
||||||
}
|
}
|
||||||
|
findItem(mTrackMenuList, getString(R.string.txt_firmware_version))?.let { m ->
|
||||||
|
m.menuValue = ""
|
||||||
|
m.isSwitch = false
|
||||||
|
mTrackMenuAdapter.notifyItemChanged(
|
||||||
|
findIndexOf(
|
||||||
|
mTrackMenuList, getString(R.string.txt_firmware_version)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
//dfu升级成功 重新连接返回
|
//dfu升级成功 重新连接返回
|
||||||
if (isDFUCallback) {
|
if (isDFUCallback) {
|
||||||
@@ -785,9 +867,15 @@ class HomeTrackFragment :
|
|||||||
if (data2 == 0) {
|
if (data2 == 0) {
|
||||||
val strVersion = String(data.sliceArray(3..11))
|
val strVersion = String(data.sliceArray(3..11))
|
||||||
LogUtil.e("设备固件版本号:$strVersion")
|
LogUtil.e("设备固件版本号:$strVersion")
|
||||||
mTrackMenuList[3].menuValue = strVersion
|
findItem(mTrackMenuList, getString(R.string.txt_firmware_version))?.let {
|
||||||
mTrackMenuList[3].isSwitch = false
|
it.menuValue = strVersion
|
||||||
mTrackMenuAdapter.notifyItemChanged(3)
|
it.isSwitch = false
|
||||||
|
mTrackMenuAdapter.notifyItemChanged(
|
||||||
|
findIndexOf(
|
||||||
|
mTrackMenuList, getString(R.string.txt_firmware_version)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
mDeviceDFUViewModel.getFirmware()
|
mDeviceDFUViewModel.getFirmware()
|
||||||
mBleTrackDeviceBean?.apply {
|
mBleTrackDeviceBean?.apply {
|
||||||
SRBleUtil.instance.writeData(
|
SRBleUtil.instance.writeData(
|
||||||
@@ -835,13 +923,24 @@ class HomeTrackFragment :
|
|||||||
mMapDeviceBean?.let { ble ->
|
mMapDeviceBean?.let { ble ->
|
||||||
mTrackerSetViewModel.turnOff(ble.deviceServerId)
|
mTrackerSetViewModel.turnOff(ble.deviceServerId)
|
||||||
}
|
}
|
||||||
mTrackMenuList[1].menuValue = ""
|
findItem(mTrackMenuList, getString(R.string.txt_firmware_version))?.let {
|
||||||
mTrackMenuList[2].menuValue = ""
|
it.menuValue = ""
|
||||||
mTrackMenuList[3].menuValue = ""
|
|
||||||
//取消红点显示
|
//取消红点显示
|
||||||
mTrackMenuList[3].isSwitch = false
|
it.isSwitch = false
|
||||||
mTrackMenuList[4].menuValue = ConstantInt.Close.toString()
|
mTrackMenuAdapter.notifyItemChanged(
|
||||||
mTrackMenuAdapter.notifyItemRangeChanged(1, 4)
|
findIndexOf(
|
||||||
|
mTrackMenuList, getString(R.string.txt_firmware_version)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
findItem(mTrackMenuList, getString(R.string.txt_power_off))?.let {
|
||||||
|
it.menuValue = ConstantInt.Close.toString()
|
||||||
|
mTrackMenuAdapter.notifyItemChanged(
|
||||||
|
findIndexOf(
|
||||||
|
mTrackMenuList, getString(R.string.txt_power_off)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
package com.abbidot.tracker.ui.fragment.map.googlemap
|
package com.abbidot.tracker.ui.fragment.map.googlemap
|
||||||
|
|
||||||
|
import android.Manifest
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.content.pm.PackageManager
|
||||||
import android.graphics.Bitmap
|
import android.graphics.Bitmap
|
||||||
import android.graphics.Point
|
import android.graphics.Point
|
||||||
import android.location.Location
|
import android.location.Location
|
||||||
@@ -9,6 +11,7 @@ import android.os.Bundle
|
|||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import androidx.core.app.ActivityCompat
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import com.abbidot.baselibrary.constant.MMKVKey
|
import com.abbidot.baselibrary.constant.MMKVKey
|
||||||
@@ -373,14 +376,31 @@ abstract class BaseGoogleMapFragment :
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun setUserMarker() {
|
fun setUserMarker() {
|
||||||
|
if (MMKVUtil.getBoolean(MMKVKey.isGpsToGCJ02)) {
|
||||||
mUserLatLng?.let {
|
mUserLatLng?.let {
|
||||||
if (null == mUserMarker) {
|
if (null == mUserMarker) {
|
||||||
mUserMarker = addImageMarker(it, R.drawable.pic_avatar_df)
|
mUserMarker = addImageMarker(it, R.drawable.icon_user_location_image)
|
||||||
} else {
|
} else {
|
||||||
if (it.latitude == mUserMarker!!.position.latitude && it.longitude == mUserMarker!!.position.longitude) {
|
if (it.latitude == mUserMarker!!.position.latitude && it.longitude == mUserMarker!!.position.longitude) {
|
||||||
} else {
|
} else {
|
||||||
mUserMarker?.remove()
|
mUserMarker?.remove()
|
||||||
mUserMarker = addImageMarker(it, R.drawable.pic_avatar_df)
|
mUserMarker = addImageMarker(it, R.drawable.icon_user_location_image)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
mGoogleMap?.apply {
|
||||||
|
if (!isMyLocationEnabled) {
|
||||||
|
//检测权限,开启用户的当前位置https://developers.google.cn/maps/documentation/android-sdk/location?hl=zh-cn
|
||||||
|
if (ActivityCompat.checkSelfPermission(
|
||||||
|
mContext!!, Manifest.permission.ACCESS_FINE_LOCATION
|
||||||
|
) == PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(
|
||||||
|
mContext!!, Manifest.permission.ACCESS_COARSE_LOCATION
|
||||||
|
) == PackageManager.PERMISSION_GRANTED
|
||||||
|
) {
|
||||||
|
//启用“我的位置”图层。
|
||||||
|
isMyLocationEnabled = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -200,7 +200,7 @@ class PetV2Fragment : BaseFragment<FragmentPetV2Binding>(FragmentPetV2Binding::i
|
|||||||
)
|
)
|
||||||
|
|
||||||
(mFragments[0] as HomePetFragment).getPetAllInfoData()
|
(mFragments[0] as HomePetFragment).getPetAllInfoData()
|
||||||
(mFragments[1] as HomeTrackFragment).getPetTrackerInfoData()
|
(mFragments[1] as HomeTrackFragment).getPetTrackerInfoData(true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -837,6 +837,12 @@ class Util {
|
|||||||
fun getMapTypeSp() = MMKVUtil.getInt(MMKVKey.MapType, ConstantInt.Type0)
|
fun getMapTypeSp() = MMKVUtil.getInt(MMKVKey.MapType, ConstantInt.Type0)
|
||||||
fun getShowFenceSp() = MMKVUtil.getBoolean(MMKVKey.ShowFence, true)
|
fun getShowFenceSp() = MMKVUtil.getBoolean(MMKVKey.ShowFence, true)
|
||||||
|
|
||||||
|
fun getDeviceTypeImage(type: Int): Int {
|
||||||
|
return when (type) {
|
||||||
|
ConstantInt.Type2 -> R.drawable.icon_tracker_g40
|
||||||
|
else -> R.drawable.icon_tracker_device_small
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ import java.util.UUID
|
|||||||
class SRBleUtil private constructor() {
|
class SRBleUtil private constructor() {
|
||||||
|
|
||||||
//track设备蓝牙的开头名字
|
//track设备蓝牙的开头名字
|
||||||
val trackDeviceBleStartName = "Pet_"
|
val trackDeviceBleStartName = "AB_"
|
||||||
|
|
||||||
//是否正在连接蓝牙设备
|
//是否正在连接蓝牙设备
|
||||||
var isBleConnecting = false
|
var isBleConnecting = false
|
||||||
|
|||||||
BIN
app/src/main/res/drawable-xhdpi/icon_pair_tracker_image.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
app/src/main/res/drawable-xhdpi/icon_sound_image.png
Normal file
|
After Width: | Height: | Size: 391 B |
BIN
app/src/main/res/drawable-xhdpi/icon_tracker_g40.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
app/src/main/res/drawable-xhdpi/icon_user_location_image.png
Normal file
|
After Width: | Height: | Size: 770 B |
BIN
app/src/main/res/drawable-xxhdpi/icon_pair_tracker_image.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
app/src/main/res/drawable-xxhdpi/icon_sound_image.png
Normal file
|
After Width: | Height: | Size: 539 B |
BIN
app/src/main/res/drawable-xxhdpi/icon_tracker_g40.png
Normal file
|
After Width: | Height: | Size: 63 KiB |
BIN
app/src/main/res/drawable-xxhdpi/icon_user_location_image.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
app/src/main/res/drawable-xxxhdpi/icon_pair_tracker_image.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
app/src/main/res/drawable-xxxhdpi/icon_sound_image.png
Normal file
|
After Width: | Height: | Size: 734 B |
BIN
app/src/main/res/drawable-xxxhdpi/icon_tracker_g40.png
Normal file
|
After Width: | Height: | Size: 98 KiB |
BIN
app/src/main/res/drawable-xxxhdpi/icon_user_location_image.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 33 KiB |
@@ -26,18 +26,17 @@
|
|||||||
android:layout_marginTop="@dimen/dp_24"
|
android:layout_marginTop="@dimen/dp_24"
|
||||||
android:background="@drawable/shape24_white_bg"
|
android:background="@drawable/shape24_white_bg"
|
||||||
android:paddingHorizontal="@dimen/dp_22"
|
android:paddingHorizontal="@dimen/dp_22"
|
||||||
android:paddingBottom="@dimen/dp_56">
|
android:paddingVertical="@dimen/dp_40">
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageView
|
<!-- <androidx.appcompat.widget.AppCompatImageView-->
|
||||||
android:id="@+id/iv_charge_power_on_gif"
|
<!-- android:id="@+id/iv_charge_power_on_gif"-->
|
||||||
android:layout_width="@dimen/dp_255"
|
<!-- android:layout_width="@dimen/dp_255"-->
|
||||||
android:layout_height="@dimen/dp_170"
|
<!-- android:layout_height="@dimen/dp_170"-->
|
||||||
android:layout_centerHorizontal="true" />
|
<!-- android:layout_centerHorizontal="true" />-->
|
||||||
|
|
||||||
<com.abbidot.tracker.widget.TypefaceTextView
|
<com.abbidot.tracker.widget.TypefaceTextView
|
||||||
android:id="@+id/tv_charge_power_on_step_one"
|
android:id="@+id/tv_charge_power_on_step_one"
|
||||||
style="@style/my_TextView_style_v2"
|
style="@style/my_TextView_style_v2"
|
||||||
android:layout_below="@id/iv_charge_power_on_gif"
|
|
||||||
android:text="@string/txt_step_one"
|
android:text="@string/txt_step_one"
|
||||||
android:textColor="@color/select_color3"
|
android:textColor="@color/select_color3"
|
||||||
android:textSize="@dimen/textSize12"
|
android:textSize="@dimen/textSize12"
|
||||||
@@ -58,7 +57,7 @@
|
|||||||
android:id="@+id/tv_charge_power_on_step_two"
|
android:id="@+id/tv_charge_power_on_step_two"
|
||||||
style="@style/my_TextView_style_v2"
|
style="@style/my_TextView_style_v2"
|
||||||
android:layout_below="@id/tv_charge_power_on_step_one"
|
android:layout_below="@id/tv_charge_power_on_step_one"
|
||||||
android:layout_marginTop="@dimen/dp_44"
|
android:layout_marginTop="@dimen/dp_38"
|
||||||
android:text="@string/txt_step_two"
|
android:text="@string/txt_step_two"
|
||||||
android:textColor="@color/select_color3"
|
android:textColor="@color/select_color3"
|
||||||
android:textSize="@dimen/textSize12"
|
android:textSize="@dimen/textSize12"
|
||||||
|
|||||||
@@ -36,26 +36,13 @@
|
|||||||
android:gravity="center_vertical"
|
android:gravity="center_vertical"
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<View
|
|
||||||
android:id="@+id/v_add_new_tracker3_solid_view"
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
android:layout_width="@dimen/dp_20"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="@dimen/dp_1"
|
android:layout_height="wrap_content"
|
||||||
android:layout_centerHorizontal="true"
|
android:layout_centerHorizontal="true"
|
||||||
android:layout_marginTop="@dimen/dp_20" />
|
android:layout_marginTop="@dimen/dp_24"
|
||||||
|
android:src="@drawable/icon_pair_tracker_image" />
|
||||||
<androidx.appcompat.widget.AppCompatImageView
|
|
||||||
android:layout_width="@dimen/dp_160"
|
|
||||||
android:layout_height="@dimen/dp_160"
|
|
||||||
android:layout_alignTop="@id/v_add_new_tracker3_solid_view"
|
|
||||||
android:layout_alignEnd="@id/v_add_new_tracker3_solid_view"
|
|
||||||
android:src="@drawable/icon_pair_tracker_image1" />
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageView
|
|
||||||
android:layout_width="@dimen/dp_160"
|
|
||||||
android:layout_height="@dimen/dp_160"
|
|
||||||
android:layout_alignStart="@id/v_add_new_tracker3_solid_view"
|
|
||||||
android:layout_alignTop="@id/v_add_new_tracker3_solid_view"
|
|
||||||
android:src="@drawable/icon_pair_tracker_image2" />
|
|
||||||
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageView
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
@@ -63,7 +50,7 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_alignParentEnd="true"
|
android:layout_alignParentEnd="true"
|
||||||
android:layout_marginTop="@dimen/dp_200"
|
android:layout_marginTop="@dimen/dp_140"
|
||||||
android:layout_marginEnd="@dimen/dp_18"
|
android:layout_marginEnd="@dimen/dp_18"
|
||||||
android:src="@drawable/icon_refresh" />
|
android:src="@drawable/icon_refresh" />
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,7 @@
|
|||||||
android:layout_height="@dimen/dp_200"
|
android:layout_height="@dimen/dp_200"
|
||||||
android:layout_gravity="center_horizontal"
|
android:layout_gravity="center_horizontal"
|
||||||
android:layout_marginTop="@dimen/dp_30"
|
android:layout_marginTop="@dimen/dp_30"
|
||||||
android:src="@drawable/icon_pair_tracker_image2" />
|
android:src="@drawable/icon_pair_tracker_image" />
|
||||||
|
|
||||||
<com.abbidot.tracker.widget.VerifyEditText
|
<com.abbidot.tracker.widget.VerifyEditText
|
||||||
android:id="@+id/vet_add_new_tracker4_edit_text"
|
android:id="@+id/vet_add_new_tracker4_edit_text"
|
||||||
|
|||||||
@@ -21,15 +21,16 @@
|
|||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageView
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
|
android:id="@+id/iv_pair_success_device_image"
|
||||||
android:layout_width="@dimen/dp_130"
|
android:layout_width="@dimen/dp_130"
|
||||||
android:layout_height="@dimen/dp_90"
|
android:layout_height="@dimen/dp_100"
|
||||||
android:layout_marginTop="@dimen/dp_50"
|
android:layout_marginTop="@dimen/dp_50"
|
||||||
android:src="@drawable/icon_tracker_device_small" />
|
android:src="@drawable/icon_tracker_device_small" />
|
||||||
|
|
||||||
<com.abbidot.tracker.widget.TypefaceTextView
|
<com.abbidot.tracker.widget.TypefaceTextView
|
||||||
style="@style/my_TextView_style_v2"
|
style="@style/my_TextView_style_v2"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_marginTop="@dimen/dp_28"
|
android:layout_marginTop="@dimen/dp_18"
|
||||||
android:layout_marginBottom="@dimen/dp_8"
|
android:layout_marginBottom="@dimen/dp_8"
|
||||||
android:text="@string/txt_id_number"
|
android:text="@string/txt_id_number"
|
||||||
android:textColor="@color/select_color3"
|
android:textColor="@color/select_color3"
|
||||||
@@ -67,11 +68,11 @@
|
|||||||
android:id="@+id/il_pair_success_bluetooth_tips"
|
android:id="@+id/il_pair_success_bluetooth_tips"
|
||||||
layout="@layout/layout_ble_connect_state"
|
layout="@layout/layout_ble_connect_state"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:visibility="invisible"
|
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_above="@id/btn_payment_success_continue"
|
android:layout_above="@id/btn_payment_success_continue"
|
||||||
android:layout_centerHorizontal="true"
|
android:layout_centerHorizontal="true"
|
||||||
android:layout_marginTop="@dimen/dp_38" />
|
android:layout_marginTop="@dimen/dp_38"
|
||||||
|
android:visibility="invisible" />
|
||||||
|
|
||||||
<com.abbidot.tracker.widget.TypefaceButton
|
<com.abbidot.tracker.widget.TypefaceButton
|
||||||
android:id="@+id/btn_pair_success_activate"
|
android:id="@+id/btn_pair_success_activate"
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
android:id="@+id/switch_only_google_map"
|
android:id="@+id/switch_only_google_map"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="@dimen/dp_38"
|
android:layout_height="@dimen/dp_38"
|
||||||
android:layout_marginBottom="@dimen/dp_2"
|
android:layout_marginBottom="@dimen/dp_6"
|
||||||
android:background="@drawable/selector_shape6_gray_bg_pressed"
|
android:background="@drawable/selector_shape6_gray_bg_pressed"
|
||||||
app:qmui_accessory_type="switcher" />
|
app:qmui_accessory_type="switcher" />
|
||||||
|
|
||||||
|
|||||||
@@ -19,9 +19,8 @@
|
|||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageView
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
android:id="@+id/iv_home_pet_track_pet_head"
|
android:id="@+id/iv_home_pet_track_pet_head"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="@dimen/dp_80"
|
||||||
android:layout_height="@dimen/dp_80"
|
android:layout_height="@dimen/dp_80" />
|
||||||
android:src="@drawable/icon_tracker_device_small" />
|
|
||||||
|
|
||||||
<com.abbidot.tracker.widget.TypefaceTextView
|
<com.abbidot.tracker.widget.TypefaceTextView
|
||||||
android:id="@+id/tv_home_pet_track_id"
|
android:id="@+id/tv_home_pet_track_id"
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
<com.abbidot.tracker.widget.TypefaceTextView
|
<com.abbidot.tracker.widget.TypefaceTextView
|
||||||
style="@style/my_TextView_style_v2"
|
style="@style/my_TextView_style_v2"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
|
android:id="@+id/tv_device_light_switch_title"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:drawableStart="@drawable/icon_light_svg"
|
android:drawableStart="@drawable/icon_light_svg"
|
||||||
android:text="@string/txt_light"
|
android:text="@string/txt_light"
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
android:paddingHorizontal="@dimen/dp_30">
|
android:paddingHorizontal="@dimen/dp_30">
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageView
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
|
android:id="@+id/iv_add_new_tracker3_device_image"
|
||||||
android:layout_width="@dimen/dp_24"
|
android:layout_width="@dimen/dp_24"
|
||||||
android:layout_height="@dimen/dp_24"
|
android:layout_height="@dimen/dp_24"
|
||||||
android:layout_marginEnd="@dimen/dp_10"
|
android:layout_marginEnd="@dimen/dp_10"
|
||||||
@@ -17,8 +18,7 @@
|
|||||||
android:id="@+id/tv_add_new_tracker3_device_out_id_item"
|
android:id="@+id/tv_add_new_tracker3_device_out_id_item"
|
||||||
style="@style/my_TextView_style_v2"
|
style="@style/my_TextView_style_v2"
|
||||||
android:text="a0c0c1"
|
android:text="a0c0c1"
|
||||||
android:textAllCaps="true"
|
android:textSize="@dimen/textSize18"
|
||||||
android:textSize="@dimen/textSize20"
|
|
||||||
app:typeface="@string/roboto_regular_font" />
|
app:typeface="@string/roboto_regular_font" />
|
||||||
|
|
||||||
<View
|
<View
|
||||||
|
|||||||
@@ -1068,5 +1068,6 @@
|
|||||||
<string name="txt_locating">Locating…</string>
|
<string name="txt_locating">Locating…</string>
|
||||||
<string name="txt_auto_subscription_years">(Renew at $%s/%s years thereafter)</string>
|
<string name="txt_auto_subscription_years">(Renew at $%s/%s years thereafter)</string>
|
||||||
<string name="txt_auto_subscription_months">(Renew at $%s/%s months thereafter)</string>
|
<string name="txt_auto_subscription_months">(Renew at $%s/%s months thereafter)</string>
|
||||||
|
<string name="txt_tone">Tone</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||