1.适配g30和g40

2.国内经纬度自定义用户位置图标,国外经纬度使用谷歌地图自带的用户位置图标
This commit is contained in:
yezhiqiu
2026-03-16 15:47:12 +08:00
parent 5e5679672f
commit 13035c6037
40 changed files with 394 additions and 173 deletions

View File

@@ -1 +1 @@
#Sat Feb 14 11:22:05 CST 2026 #Thu Mar 12 15:15:30 CST 2026

View File

@@ -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"

View File

@@ -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)
} }

View File

@@ -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

View File

@@ -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))
} }
} }
} }

View File

@@ -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

View File

@@ -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

View File

@@ -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 {

View File

@@ -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

View File

@@ -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

View File

@@ -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)

View File

@@ -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

View File

@@ -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)
)
)
}
} }
} }
} }

View File

@@ -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
}
} }
} }
} }

View File

@@ -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)
} }
} }

View File

@@ -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
}
}
} }
/** /**

View File

@@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 391 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 770 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 539 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 734 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

View File

@@ -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"

View File

@@ -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" />

View File

@@ -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"

View File

@@ -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"

View File

@@ -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" />

View File

@@ -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"

View File

@@ -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"

View File

@@ -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

View File

@@ -1068,5 +1068,6 @@
<string name="txt_locating">Locating&#8230;</string> <string name="txt_locating">Locating&#8230;</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>