title: Android dual SIM signal strength
body: <p>I have been trying to get access to some features on my android dual sim phone (the brand is LKD). I have managed to get the functions for TelephonyManager and ITelephony through java reflection, and got them to run. However i want to get the signal strength for both of the sim cards and i cannot see a way to do this through the reflection. I can get the first sim card in slot 1 through having a PhoneStateListener with the function onSignalStrengthsChanged().</p>
  
  <p>Does anyone have some tips for this? Functions i got from reflection:</p>
  
  <pre><code>###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
  </code></pre>
  
  <p>And btw it seems both of the sim cards are active at the same time(no need for switching between sim cards) since i can call the phone using both phone numbers without switching the sim card  on the phone.</p>
  
  <p>Thanks!</p>