我一直试图访问我的Android双卡手机上的一些功能(该品牌是LKD)。我已经设法通过java反射获取TelephonyManager和ITelephony的功能,并让它们运行。但是我想要获得两张sim卡的信号强度,我无法通过反射看到这样做的方法。我可以通过具有函数onSignalStrengthsChanged()的PhoneStateListener来获得插槽1中的第一张SIM卡。
有没有人对此有一些提示?我从反思中获得的功能:
###stanard methods:###
adjustModemRadioPower - boolean: int, int
adjustModemRadioPowerByBand - boolean: int, int
btSimapApduRequest - int: int, java.lang.String, android.telephony.BtSimapOperResponse
btSimapConnectSIM - int: int, android.telephony.BtSimapOperResponse
btSimapDisconnectSIM - int:
btSimapPowerOffSIM - int:
btSimapPowerOnSIM - int: int, android.telephony.BtSimapOperResponse
btSimapResetSIM - int: int, android.telephony.BtSimapOperResponse
disableLocationUpdates - void:
disableLocationUpdatesGemini - void: int
enableLocationUpdates - void:
enableLocationUpdatesGemini - void: int
equals - boolean: java.lang.Object
from - class android.telephony.TelephonyManager: android.content.Context
getAllCellInfo - interface java.util.List:
getCallState - int:
getCallStateGemini - int: int
getCdmaEriIconIndex - int:
getCdmaEriIconMode - int:
getCdmaEriText - class java.lang.String:
getCellLocation - class android.telephony.CellLocation:
getCellLocationGemini - class android.telephony.CellLocation: int
getClass - class java.lang.Class:
getCompleteVoiceMailNumber - class java.lang.String:
getCurrentPhoneType - int:
getDataActivity - int:
getDataState - int:
getDataStateGemini - int: int
getDefault - class android.telephony.TelephonyManager:
getDeviceId - class java.lang.String:
getDeviceIdGemini - class java.lang.String: int
getDeviceSoftwareVersion - class java.lang.String:
getIccCardType - class java.lang.String:
getIccCardTypeGemini - class java.lang.String: int
getIsimDomain - class java.lang.String:
getIsimImpi - class java.lang.String:
getIsimImpu - class [Ljava.lang.String;:
getLine1AlphaTag - class java.lang.String:
getLine1AlphaTagGemini - class java.lang.String: int
getLine1Number - class java.lang.String:
getLine1NumberGemini - class java.lang.String: int
getLteOnCdmaMode - int:
getLteOnCdmaModeStatic - int:
getMaxPdpNum - int: int
getMissedCallCount - int:
getMobileRevisionAndIMEI - void: int, android.os.Message
getMsisdn - class java.lang.String:
getNeighboringCellInfo - interface java.util.List:
getNeighboringCellInfoGemini - interface java.util.List: int
getNetworkClass - int: int
getNetworkCountryIso - class java.lang.String:
getNetworkCountryIsoGemini - class java.lang.String: int
getNetworkOperator - class java.lang.String:
getNetworkOperatorGemini - class java.lang.String: int
getNetworkOperatorName - class java.lang.String:
getNetworkOperatorNameGemini - class java.lang.String: int
getNetworkType - int:
getNetworkTypeGemini - int: int
getNetworkTypeName - class java.lang.String:
getNetworkTypeName - class java.lang.String: int
getNetworkTypeNameGemini - class java.lang.String: int
getPhoneType - int:
getPhoneType - int: int
getPhoneTypeGemini - int: int
getRadioType - int: int
getSN - class java.lang.String:
getSimCountryIso - class java.lang.String:
getSimCountryIsoGemini - class java.lang.String: int
getSimOperator - class java.lang.String:
getSimOperatorGemini - class java.lang.String: int
getSimOperatorName - class java.lang.String:
getSimOperatorNameGemini - class java.lang.String: int
getSimSerialNumber - class java.lang.String:
getSimSerialNumberGemini - class java.lang.String: int
getSimState - int:
getSimStateGemini - int: int
getSmsDefaultSim - int:
getSpNameInEfSpn - class java.lang.String:
getSpNameInEfSpnGemini - class java.lang.String: int
getSubscriberId - class java.lang.String:
getSubscriberIdGemini - class java.lang.String: int
getVoiceMailAlphaTag - class java.lang.String:
getVoiceMailAlphaTagGemini - class java.lang.String: int
getVoiceMailNumber - class java.lang.String:
getVoiceMailNumberGemini - class java.lang.String: int
getVoiceMessageCount - int:
getVoiceMessageCountGemini - int: int
hasIccCard - boolean:
hasIccCardGemini - boolean: int
hashCode - int:
isIccCardProviderAsMvno - boolean:
isIccCardProviderAsMvnoGemini - boolean: int
isNetworkRoaming - boolean:
isNetworkRoamingGemini - boolean: int
isOperatorMvnoForEfPnn - class java.lang.String:
isOperatorMvnoForEfPnnGemini - class java.lang.String: int
isOperatorMvnoForImsi - class java.lang.String:
isOperatorMvnoForImsiGemini - class java.lang.String: int
isSmsCapable - boolean:
isVoiceCapable - boolean:
listen - void: android.telephony.PhoneStateListener, int
listenGemini - void: android.telephony.PhoneStateListener, int, int
notify - void:
notifyAll - void:
simAuth - class java.lang.String: java.lang.String
simAuthGemini - class java.lang.String: java.lang.String, int
toString - class java.lang.String:
uSimAuth - class java.lang.String: java.lang.String, java.lang.String
uSimAuthGemini - class java.lang.String: java.lang.String, java.lang.String, int
wait - void:
wait - void: long
wait - void: long, int
###declared methods###
adjustModemRadioPower - boolean: int, int
adjustModemRadioPowerByBand - boolean: int, int
btSimapApduRequest - int: int, java.lang.String, android.telephony.BtSimapOperResponse
btSimapConnectSIM - int: int, android.telephony.BtSimapOperResponse
btSimapDisconnectSIM - int:
btSimapPowerOffSIM - int:
btSimapPowerOnSIM - int: int, android.telephony.BtSimapOperResponse
btSimapResetSIM - int: int, android.telephony.BtSimapOperResponse
disableLocationUpdates - void:
disableLocationUpdatesGemini - void: int
enableLocationUpdates - void:
enableLocationUpdatesGemini - void: int
getAllCellInfo - interface java.util.List:
getCallState - int:
getCallStateGemini - int: int
getCdmaEriIconIndex - int:
getCdmaEriIconMode - int:
getCdmaEriText - class java.lang.String:
getCellLocation - class android.telephony.CellLocation:
getCellLocationGemini - class android.telephony.CellLocation: int
getCompleteVoiceMailNumber - class java.lang.String:
getCurrentPhoneType - int:
getDataActivity - int:
getDataState - int:
getDataStateGemini - int: int
getDeviceId - class java.lang.String:
getDeviceIdGemini - class java.lang.String: int
getDeviceSoftwareVersion - class java.lang.String:
getIccCardType - class java.lang.String:
getIccCardTypeGemini - class java.lang.String: int
getIsimDomain - class java.lang.String:
getIsimImpi - class java.lang.String:
getIsimImpu - class [Ljava.lang.String;:
getLine1AlphaTag - class java.lang.String:
getLine1AlphaTagGemini - class java.lang.String: int
getLine1Number - class java.lang.String:
getLine1NumberGemini - class java.lang.String: int
getLteOnCdmaMode - int:
getMissedCallCount - int:
getMobileRevisionAndIMEI - void: int, android.os.Message
getMsisdn - class java.lang.String:
getNeighboringCellInfo - interface java.util.List:
getNeighboringCellInfoGemini - interface java.util.List: int
getNetworkCountryIso - class java.lang.String:
getNetworkCountryIsoGemini - class java.lang.String: int
getNetworkOperator - class java.lang.String:
getNetworkOperatorGemini - class java.lang.String: int
getNetworkOperatorName - class java.lang.String:
getNetworkOperatorNameGemini - class java.lang.String: int
getNetworkType - int:
getNetworkTypeGemini - int: int
getNetworkTypeName - class java.lang.String:
getNetworkTypeNameGemini - class java.lang.String: int
getPhoneType - int:
getPhoneTypeGemini - int: int
getSN - class java.lang.String:
getSimCountryIso - class java.lang.String:
getSimCountryIsoGemini - class java.lang.String: int
getSimOperator - class java.lang.String:
getSimOperatorGemini - class java.lang.String: int
getSimOperatorName - class java.lang.String:
getSimOperatorNameGemini - class java.lang.String: int
getSimSerialNumber - class java.lang.String:
getSimSerialNumberGemini - class java.lang.String: int
getSimState - int:
getSimStateGemini - int: int
getSmsDefaultSim - int:
getSpNameInEfSpn - class java.lang.String:
getSpNameInEfSpnGemini - class java.lang.String: int
getSubscriberId - class java.lang.String:
getSubscriberIdGemini - class java.lang.String: int
getVoiceMailAlphaTag - class java.lang.String:
getVoiceMailAlphaTagGemini - class java.lang.String: int
getVoiceMailNumber - class java.lang.String:
getVoiceMailNumberGemini - class java.lang.String: int
getVoiceMessageCount - int:
getVoiceMessageCountGemini - int: int
hasIccCard - boolean:
hasIccCardGemini - boolean: int
isIccCardProviderAsMvno - boolean:
isIccCardProviderAsMvnoGemini - boolean: int
isNetworkRoaming - boolean:
isNetworkRoamingGemini - boolean: int
isOperatorMvnoForEfPnn - class java.lang.String:
isOperatorMvnoForEfPnnGemini - class java.lang.String: int
isOperatorMvnoForImsi - class java.lang.String:
isOperatorMvnoForImsiGemini - class java.lang.String: int
isSmsCapable - boolean:
isVoiceCapable - boolean:
listen - void: android.telephony.PhoneStateListener, int
listenGemini - void: android.telephony.PhoneStateListener, int, int
simAuth - class java.lang.String: java.lang.String
simAuthGemini - class java.lang.String: java.lang.String, int
uSimAuth - class java.lang.String: java.lang.String, java.lang.String
uSimAuthGemini - class java.lang.String: java.lang.String, java.lang.String, int
from - class android.telephony.TelephonyManager: android.content.Context
getDefault - class android.telephony.TelephonyManager:
getDefaultSim - int:
getITelephony - interface com.android.internal.telephony.ITelephony:
getLteOnCdmaModeStatic - int:
getMaxPdpNum - int: int
getNetworkClass - int: int
getNetworkTypeName - class java.lang.String: int
getPhoneType - int: int
getPhoneTypeFromNetworkType - int:
getPhoneTypeFromProperty - int:
getProcCmdLine - class java.lang.String:
getRadioType - int: int
getSubscriberInfo - interface com.android.internal.telephony.IPhoneSubInfo:
getSubscriberInfo - interface com.android.internal.telephony.IPhoneSubInfo: int
###ITelephony methods###
adjustModemRadioPower - boolean: int, int
adjustModemRadioPowerByBand - boolean: int, int, int
answerRingingCall - void:
answerRingingCallGemini - void: int
aquire3GSwitchLock - int:
asBinder - interface android.os.IBinder:
btSimapApduRequest - int: int, java.lang.String, android.telephony.BtSimapOperResponse
btSimapConnectSIM - int: int, android.telephony.BtSimapOperResponse
btSimapDisconnectSIM - int:
btSimapPowerOffSIM - int:
btSimapPowerOnSIM - int: int, android.telephony.BtSimapOperResponse
btSimapResetSIM - int: int, android.telephony.BtSimapOperResponse
call - void: java.lang.String
callGemini - void: java.lang.String, int
cancelMissedCallsNotification - void:
cancelMissedCallsNotificationGemini - void: int
cleanupApnTypeGemini - int: java.lang.String, int
closeIccLogicalChannel - boolean: int
closeIccLogicalChannelGemini - boolean: int, int
dial - void: java.lang.String
dialGemini - void: java.lang.String, int
disableApnType - int: java.lang.String
disableApnTypeGemini - int: java.lang.String, int
disableDataConnectivity - boolean:
disableDataConnectivityGemini - int: int
disableLocationUpdates - void:
disableLocationUpdatesGemini - void: int
enableApnType - int: java.lang.String
enableApnTypeGemini - int: java.lang.String, int
enableDataConnectivity - boolean:
enableDataConnectivityGemini - int: int
enableLocationUpdates - void:
enableLocationUpdatesGemini - void: int
endCall - boolean:
endCallGemini - boolean: int
equals - boolean: java.lang.Object
get3GCapabilitySIM - int:
get3GSwitchAllowed3GSlots - int:
getActivePhoneType - int:
getActivePhoneTypeGemini - int: int
getAdnStorageInfo - class [I: int
getAllCellInfo - interface java.util.List:
getCallState - int:
getCallStateGemini - int: int
getCdmaEriIconIndex - int:
getCdmaEriIconMode - int:
getCdmaEriText - class java.lang.String:
getCellLocation - class android.os.Bundle:
getCellLocationGemini - class android.os.Bundle: int
getClass - class java.lang.Class:
getDataActivity - int:
getDataActivityGemini - int: int
getDataState - int:
getDataStateGemini - int: int
getGateway - class java.lang.String: java.lang.String
getGatewayGemini - class java.lang.String: java.lang.String, int
getIccATR - class java.lang.String:
getIccATRGemini - class java.lang.String: int
getIccCardType - class java.lang.String:
getIccCardTypeGemini - class java.lang.String: int
getInterfaceDescriptor - class java.lang.String:
getInterfaceName - class java.lang.String: java.lang.String
getInterfaceNameGemini - class java.lang.String: java.lang.String, int
getIpAddress - class java.lang.String: java.lang.String
getIpAddressGemini - class java.lang.String: java.lang.String, int
getLastError - int:
getLastErrorGemini - int: int
getLine1AlphaTag - class java.lang.String: int
getLine1Number - class java.lang.String: int
getLteOnCdmaMode - int:
getMissedCallCount - int:
getMobileRevisionAndIMEI - void: int, android.os.Message
getNeighboringCellInfo - interface java.util.List:
getNeighboringCellInfoGemini - interface java.util.List: int
getNetworkCountryIsoGemini - class java.lang.String: int
getNetworkOperatorGemini - class java.lang.String: int
getNetworkOperatorNameGemini - class java.lang.String: int
getNetworkType - int:
getNetworkTypeGemini - int: int
getPendingMmiCodesGemini - int: int
getPreciseCallState - int:
getSN - class java.lang.String:
getScAddressGemini - class java.lang.String: int
getServiceState - class android.os.Bundle:
getServiceStateGemini - class android.os.Bundle: int
getSimCountryIso - class java.lang.String: int
getSimIndicatorState - int:
getSimIndicatorStateGemini - int: int
getSimOperator - class java.lang.String: int
getSimOperatorName - class java.lang.String: int
getSimSerialNumber - class java.lang.String: int
getSimState - int: int
getSmsDefaultSim - int:
getSpNameInEfSpn - class java.lang.String:
getSpNameInEfSpnGemini - class java.lang.String: int
getSubscriberId - class java.lang.String: int
getSubscriberInfo - interface com.android.internal.telephony.IPhoneSubInfo: int
getVoiceMailAlphaTag - class java.lang.String: int
getVoiceMailNumber - class java.lang.String: int
getVoiceMessageCount - int:
getVoiceMessageCountGemini - int: int
handlePinMmi - boolean: java.lang.String
handlePinMmiGemini - boolean: java.lang.String, int
hasIccCard - boolean:
hasIccCardGemini - boolean: int
hashCode - int:
is3GSwitchLocked - boolean:
is3GSwitchManualChange3GAllowed - boolean:
is3GSwitchManualEnabled - boolean:
isDataConnectivityPossible - boolean:
isDataConnectivityPossibleGemini - boolean: int
isFDNEnabled - boolean:
isFDNEnabledGemini - boolean: int
isIccCardProviderAsMvno - boolean:
isIccCardProviderAsMvnoGemini - boolean: int
isIdle - boolean:
isIdleGemini - boolean: int
isNetworkRoamingGemini - boolean: int
isOffhook - boolean:
isOffhookGemini - boolean: int
isOperatorMvnoForEfPnn - class java.lang.String:
isOperatorMvnoForEfPnnGemini - class java.lang.String: int
isOperatorMvnoForImsi - class java.lang.String:
isOperatorMvnoForImsiGemini - class java.lang.String: int
isPhbReady - boolean:
isPhbReadyGemini - boolean: int
isRadioOn - boolean:
isRadioOnGemini - boolean: int
isRinging - boolean:
isRingingGemini - boolean: int
isSimInsert - boolean: int
isSimPinEnabled - boolean:
isTestIccCard - boolean:
isTestIccCardGemini - boolean: int
isVTIdle - boolean:
isVoiceIdle - boolean:
needsOtaServiceProvisioning - boolean:
notify - void:
notifyAll - void:
openIccLogicalChannel - int: java.lang.String
openIccLogicalChannelGemini - int: java.lang.String, int
openIccLogicalChannelWithSw - class [B: java.lang.String
openIccLogicalChannelWithSwGemini - class [B: java.lang.String, int
registerForSimModeChange - void: android.os.IBinder, int
release3GSwitchLock - boolean: int
set3GCapabilitySIM - boolean: int
setDataRoamingEnabledGemini - void: boolean, int
setDefaultPhone - void: int
setGprsConnType - void: int, int
setGprsTransferType - void: int
setGprsTransferTypeGemini - void: int, int
setRadio - boolean: boolean
setRadioOff - boolean:
setRoamingIndicatorNeddedProperty - void: boolean, boolean
setScAddressGemini - void: java.lang.String, int
showCallScreen - boolean:
showCallScreenGemini - boolean: int
showCallScreenWithDialpad - boolean: boolean
showCallScreenWithDialpadGemini - boolean: boolean, int
silenceRinger - void:
silenceRingerGemini - void: int
simAuth - class java.lang.String: java.lang.String
simAuthGemini - class java.lang.String: java.lang.String, int
supplyPin - boolean: java.lang.String
supplyPinGemini - boolean: java.lang.String, int
supplyPuk - boolean: java.lang.String, java.lang.String
supplyPukGemini - boolean: java.lang.String, java.lang.String, int
toString - class java.lang.String:
toggleRadioOnOff - void:
transmitIccBasicChannel - class java.lang.String: int, int, int, int, int, java.lang.String
transmitIccBasicChannelGemini - class java.lang.String: int, int, int, int, int, java.lang.String, int
transmitIccLogicalChannel - class java.lang.String: int, int, int, int, int, int, java.lang.String
transmitIccLogicalChannelGemini - class java.lang.String: int, int, int, int, int, int, java.lang.String, int
transmitIccSimIO - class [B: int, int, int, int, int, java.lang.String
transmitIccSimIOGemini - class [B: int, int, int, int, int, java.lang.String, int
uSimAuth - class java.lang.String: java.lang.String, java.lang.String
uSimAuthGemini - class java.lang.String: java.lang.String, java.lang.String, int
unregisterForSimModeChange - void: android.os.IBinder
updateServiceLocation - void:
updateServiceLocationGemini - void: int
wait - void:
wait - void: long
wait - void: long, int
顺便说一下,两张SIM卡似乎同时处于活动状态(不需要在SIM卡之间切换),因为我可以使用两个电话号码拨打电话而无需在手机上切换SIM卡。
谢谢!
答案 0 :(得分:2)
对于此特定版本的TelephonyManager,而不是使用
TelephonyManager.listen (phoneStateListener, state)
仅侦听默认SIM卡,您可以尝试使用PhoneStateListener的2个实例,然后调用
第一张SIM卡的 TelephonyManager.listenGemini (phoneStateListener1, state, 0)
和
TelephonyManager.listenGemini (phoneStateListener2, state, 1)
第二张SIM卡,
其中listenGemini
的第三个参数是SIM卡号。
答案 1 :(得分:2)
感谢你的回答!我没有尝试过你的解决方案,但我找到了自己的解决方案。
可以为TelephonyManager使用不同的构造函数,您可以在其中传入您想要控制的SIM卡插槽:
MultiSimClass = Class.forName("android.telephony.MultiSimTelephonyManager");
for (Constructor<?> constructor : MultiSimClass.getConstructors()){
if (constructor.getParameterTypes().length == 2){
try {
multiSimTelephonyManager1 = constructor.newInstance(context,0);
multiSimTelephonyManager2 = constructor.newInstance(context,1);
}
}
}
答案 2 :(得分:1)
要获取两个SIM卡的SIM卡信号强度,我们必须使用电话管理器
transpose
这将立即提供单元格信息列表,直到我们需要获取已注册的单元格信息
telephonyManager = context.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager?
val cellInfos = telephonyManager?.allCellInfo as ArrayList
val subManager = context.getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE) as SubscriptionManager?
通过注册单元,您将获得设备中存在的SIM卡信息列表 现在,通过下面粘贴的代码,您将根据网络类型(无论是gsm,CDMA和LTE)获得信号强度。 这还需要访问电话状态和粗略位置的运行时权限,因此请相应地添加它们,并且已注册的小区信息索引是设备中存在的SIM卡1和SIM卡2的索引。 Sim 1是0索引,sim 2是1索引,您必须通过。
/* Function to get registered cell info
* @param cellinfo - all cell info for sim
* @return registered cell info correspond to cell info
*/
fun getRegisteredCellInfo(cellInfos: MutableList<CellInfo>): ArrayList<CellInfo> {
val registeredCellInfos = ArrayList<CellInfo>()
if (cellInfos != null && cellInfos.isNotEmpty()) {
for (i in cellInfos.indices) {
if (cellInfos[i].isRegistered) {
registeredCellInfos.add(cellInfos[i])
}
}
}
return registeredCellInfos
}
答案 3 :(得分:0)
解决方法 科特林 注意:仅当位置为ON时,Android Pie及以上信号才会获取,为什么我不知道
fun getRegisteredCellInfo(cellInfos: MutableList<CellInfo>): ArrayList<CellInfo> {
val registeredCellInfos = ArrayList<CellInfo>()
if (cellInfos.isNotEmpty()) {
for (i in cellInfos.indices) {
if (cellInfos[i].isRegistered) {
registeredCellInfos.add(cellInfos[i])
}
}
}
return registeredCellInfos
}
fun getNetworkStrength(): Pair<Int, Int> {
var strength1 = -1
var strength2 = -1
val manager = getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE) as SubscriptionManager
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
val telephonyManager = applicationContext.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager
if (telephonyManager.allCellInfo != null) {
val allCellinfo = telephonyManager.allCellInfo
val activeSubscriptionInfoList = manager.activeSubscriptionInfoList
val regCellInfo= getRegisteredCellInfo(allCellinfo)
activeSubscriptionInfoList.forEachIndexed { Subindex, subs ->
if (activeSubscriptionInfoList.size >= 2) {
if (regCellInfo.size >= 2) {
if (subs.simSlotIndex == 0) {
if (subs.carrierName != "No service") {
strength1 = when (val info1 = regCellInfo[0]) {
is CellInfoLte -> info1.cellSignalStrength.dbm
is CellInfoGsm -> info1.cellSignalStrength.dbm
is CellInfoCdma -> info1.cellSignalStrength.dbm
is CellInfoWcdma -> info1.cellSignalStrength.dbm
else -> 0
}
Timber.i("subs $subs")
Timber.i("sim1 ${subs.carrierName} ${subs.mnc} $strength1")
} else {
strength1 = -1
}
} else if (subs.simSlotIndex == 1) {
if (subs.carrierName != "No service") {
strength2 = when (val info2 = regCellInfo[1]) {
is CellInfoLte -> info2.cellSignalStrength.dbm
is CellInfoGsm -> info2.cellSignalStrength.dbm
is CellInfoCdma -> info2.cellSignalStrength.dbm
is CellInfoWcdma -> info2.cellSignalStrength.dbm
else -> 0
}
Timber.i("sim2 ${subs.carrierName} $strength2")
} else {
strength2 = -1
}
}
}
}else if(activeSubscriptionInfoList.size == 1)
{
if(regCellInfo.size >= 1) {
if (subs.simSlotIndex == 0) {
if (subs.carrierName != "No service") {
strength1 = when (val info1 = regCellInfo[0]) {
is CellInfoLte -> info1.cellSignalStrength.level
is CellInfoGsm -> info1.cellSignalStrength.level
is CellInfoCdma -> info1.cellSignalStrength.level
is CellInfoWcdma -> info1.cellSignalStrength.level
else -> 0
}
Timber.i("subs $subs")
Timber.i("sim1 ${subs.carrierName} ${subs.mnc} $strength1")
} else {
strength1 = -1
}
}
}
strength2 = -2
}
}
}
}
Timber.i("final strenght sim1 $strength1 sim2 $strength2")
return Pair(strength1, strength2)
}