下面列出了android.telephony.CellSignalStrengthCdma#android.telephony.CellIdentityCdma 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/**
* Adds or updates a cell tower.
* <p>
* If the cell tower is already in the list, it is replaced; if not, a new
* entry is created.
* <p>
* This method will set the cell's identity data, its signal strength and
* whether it is the currently serving cell. If the API level is 18 or
* higher, it will also set the generation.
* @return The new or updated entry.
*/
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
public CellTowerCdma update(CellInfoCdma cell) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1)
return null;
CellIdentityCdma cid = cell.getCellIdentity();
CellTowerCdma result = this.get(cid.getSystemId(), cid.getNetworkId(), cid.getBasestationId());
if (result == null) {
result = new CellTowerCdma(cid.getSystemId(), cid.getNetworkId(), cid.getBasestationId());
this.put(result.getText(), result);
}
result.setCellInfo(true);
result.setDbm(cell.getCellSignalStrength().getDbm());
result.setServing(cell.isRegistered());
return result;
}
public boolean isValid(CellIdentityCdma cell) {
boolean valid = (isBidInRange(cell.getBasestationId()) && isNidInRange(cell.getNetworkId())
&& isSidInRange(cell.getSystemId()));
if (!valid) {
Timber.w("isValid(): Invalid CellIdentityCdma [sid=%s, nid=%s, bid=%s]", cell.getSystemId(), cell.getNetworkId(), cell.getBasestationId());
Timber.w("isValid(): Invalid CellIdentityCdma %s", cell);
}
return valid;
}
public CellInfoCdmaAssert hasCellIdentity(CellIdentityCdma cellIdentity) {
isNotNull();
CellIdentityCdma actualCellIdentity = actual.getCellIdentity();
assertThat(actualCellIdentity) //
.overridingErrorMessage("Expected cell identity <%s> but was <%s>.", cellIdentity, actualCellIdentity) //
.isEqualTo(cellIdentity);
return this;
}
public static void loadCellInfo(TelephonyManager tm, Device pDevice) {
int lCurrentApiVersion = android.os.Build.VERSION.SDK_INT;
try {
if (pDevice.mCell == null) {
pDevice.mCell = new Cell();
}
List<CellInfo> cellInfoList = tm.getAllCellInfo();
if (cellInfoList != null) {
for (final CellInfo info : cellInfoList) {
//Network Type
pDevice.mCell.setNetType(tm.getNetworkType());
if (info instanceof CellInfoGsm) {
final CellSignalStrengthGsm gsm = ((CellInfoGsm) info)
.getCellSignalStrength();
final CellIdentityGsm identityGsm = ((CellInfoGsm) info)
.getCellIdentity();
//Signal Strength
pDevice.mCell.setDBM(gsm.getDbm()); // [dBm]
//Cell Identity
pDevice.mCell.setCID(identityGsm.getCid());
pDevice.mCell.setMCC(identityGsm.getMcc());
pDevice.mCell.setMNC(identityGsm.getMnc());
pDevice.mCell.setLAC(identityGsm.getLac());
} else if (info instanceof CellInfoCdma) {
final CellSignalStrengthCdma cdma = ((CellInfoCdma) info)
.getCellSignalStrength();
final CellIdentityCdma identityCdma = ((CellInfoCdma) info)
.getCellIdentity();
//Signal Strength
pDevice.mCell.setDBM(cdma.getDbm());
//Cell Identity
pDevice.mCell.setCID(identityCdma.getBasestationId());
pDevice.mCell.setMNC(identityCdma.getSystemId());
pDevice.mCell.setLAC(identityCdma.getNetworkId());
pDevice.mCell.setSID(identityCdma.getSystemId());
} else if (info instanceof CellInfoLte) {
final CellSignalStrengthLte lte = ((CellInfoLte) info)
.getCellSignalStrength();
final CellIdentityLte identityLte = ((CellInfoLte) info)
.getCellIdentity();
//Signal Strength
pDevice.mCell.setDBM(lte.getDbm());
pDevice.mCell.setTimingAdvance(lte.getTimingAdvance());
//Cell Identity
pDevice.mCell.setMCC(identityLte.getMcc());
pDevice.mCell.setMNC(identityLte.getMnc());
pDevice.mCell.setCID(identityLte.getCi());
} else if (lCurrentApiVersion >= Build.VERSION_CODES.JELLY_BEAN_MR2 &&
info instanceof CellInfoWcdma) {
final CellSignalStrengthWcdma wcdma = ((CellInfoWcdma) info)
.getCellSignalStrength();
final CellIdentityWcdma identityWcdma = ((CellInfoWcdma) info)
.getCellIdentity();
//Signal Strength
pDevice.mCell.setDBM(wcdma.getDbm());
//Cell Identity
pDevice.mCell.setLAC(identityWcdma.getLac());
pDevice.mCell.setMCC(identityWcdma.getMcc());
pDevice.mCell.setMNC(identityWcdma.getMnc());
pDevice.mCell.setCID(identityWcdma.getCid());
pDevice.mCell.setPSC(identityWcdma.getPsc());
} else {
Log.i(TAG, mTAG + "Unknown type of cell signal! "
+ "ClassName: " + info.getClass().getSimpleName()
+ " ToString: " + info.toString());
}
if (pDevice.mCell.isValid()) {
break;
}
}
}
} catch (NullPointerException npe) {
Log.e(TAG, mTAG + "loadCellInfo: Unable to obtain cell signal information: ", npe);
}
}
public static void loadCellInfo(TelephonyManager tm, Device pDevice) {
int lCurrentApiVersion = android.os.Build.VERSION.SDK_INT;
try {
if (pDevice.mCell == null) {
pDevice.mCell = new Cell();
}
List<CellInfo> cellInfoList = tm.getAllCellInfo();
if (cellInfoList != null) {
for (final CellInfo info : cellInfoList) {
//Network Type
pDevice.mCell.setNetType(tm.getNetworkType());
if (info instanceof CellInfoGsm) {
final CellSignalStrengthGsm gsm = ((CellInfoGsm) info).getCellSignalStrength();
final CellIdentityGsm identityGsm = ((CellInfoGsm) info).getCellIdentity();
// Signal Strength
pDevice.mCell.setDBM(gsm.getDbm()); // [dBm]
// Cell Identity
pDevice.mCell.setCID(identityGsm.getCid());
pDevice.mCell.setMCC(identityGsm.getMcc());
pDevice.mCell.setMNC(identityGsm.getMnc());
pDevice.mCell.setLAC(identityGsm.getLac());
} else if (info instanceof CellInfoCdma) {
final CellSignalStrengthCdma cdma = ((CellInfoCdma) info).getCellSignalStrength();
final CellIdentityCdma identityCdma = ((CellInfoCdma) info).getCellIdentity();
// Signal Strength
pDevice.mCell.setDBM(cdma.getDbm());
// Cell Identity
pDevice.mCell.setCID(identityCdma.getBasestationId());
pDevice.mCell.setMNC(identityCdma.getSystemId());
pDevice.mCell.setLAC(identityCdma.getNetworkId());
pDevice.mCell.setSID(identityCdma.getSystemId());
} else if (info instanceof CellInfoLte) {
final CellSignalStrengthLte lte = ((CellInfoLte) info).getCellSignalStrength();
final CellIdentityLte identityLte = ((CellInfoLte) info).getCellIdentity();
// Signal Strength
pDevice.mCell.setDBM(lte.getDbm());
pDevice.mCell.setTimingAdvance(lte.getTimingAdvance());
// Cell Identity
pDevice.mCell.setMCC(identityLte.getMcc());
pDevice.mCell.setMNC(identityLte.getMnc());
pDevice.mCell.setCID(identityLte.getCi());
} else if (lCurrentApiVersion >= Build.VERSION_CODES.JELLY_BEAN_MR2 && info instanceof CellInfoWcdma) {
final CellSignalStrengthWcdma wcdma = ((CellInfoWcdma) info).getCellSignalStrength();
final CellIdentityWcdma identityWcdma = ((CellInfoWcdma) info).getCellIdentity();
// Signal Strength
pDevice.mCell.setDBM(wcdma.getDbm());
// Cell Identity
pDevice.mCell.setLAC(identityWcdma.getLac());
pDevice.mCell.setMCC(identityWcdma.getMcc());
pDevice.mCell.setMNC(identityWcdma.getMnc());
pDevice.mCell.setCID(identityWcdma.getCid());
pDevice.mCell.setPSC(identityWcdma.getPsc());
} else {
Log.i(TAG, mTAG + "Unknown type of cell signal!"
+ "\n ClassName: " + info.getClass().getSimpleName()
+ "\n ToString: " + info.toString());
}
if (pDevice.mCell.isValid()) {
break;
}
}
}
} catch (NullPointerException npe) {
Log.e(TAG, mTAG + "loadCellInfo: Unable to obtain cell signal information: ", npe);
}
}
/**
* Converts CellInfoCdma into JSON
* @param cellInfo CellInfoCdma
* @return JSON
*/
public static String cellInfoCDMAJSON(CellInfoCdma cellInfo, boolean returnSignalStrength){
final Calendar calendar = Calendar.getInstance();
final JSONObject json = new JSONObject();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2 && cellInfo != null) {
try {
json.put("provider", CELLINFO_PROVIDER);
json.put("type", CDMA);
json.put("timestamp", calendar.getTimeInMillis());
final CellIdentityCdma identityCdma = cellInfo.getCellIdentity();
json.put("latitude", CdmaCellLocation.convertQuartSecToDecDegrees(identityCdma.getLatitude()));
json.put("longitude", CdmaCellLocation.convertQuartSecToDecDegrees(identityCdma.getLongitude()));
json.put("basestationId", identityCdma.getBasestationId());
json.put("networkId", identityCdma.getNetworkId());
json.put("systemId", identityCdma.getSystemId());
if (returnSignalStrength){
final JSONObject jsonSignalStrength = new JSONObject();
final CellSignalStrengthCdma cellSignalStrengthCdma = cellInfo.getCellSignalStrength();
jsonSignalStrength.put("asuLevel", cellSignalStrengthCdma.getAsuLevel());
jsonSignalStrength.put("cdmaDbm", cellSignalStrengthCdma.getCdmaDbm());
jsonSignalStrength.put("cdmaEcio", cellSignalStrengthCdma.getCdmaEcio());
jsonSignalStrength.put("cdmaLevel", cellSignalStrengthCdma.getCdmaLevel());
jsonSignalStrength.put("dbm", cellSignalStrengthCdma.getDbm());
jsonSignalStrength.put("evdoDbm", cellSignalStrengthCdma.getEvdoDbm());
jsonSignalStrength.put("evdoEcio", cellSignalStrengthCdma.getEvdoEcio());
jsonSignalStrength.put("evdoLevel", cellSignalStrengthCdma.getEvdoLevel());
jsonSignalStrength.put("evdoSnr", cellSignalStrengthCdma.getEvdoSnr());
jsonSignalStrength.put("level", cellSignalStrengthCdma.getLevel());
json.put("cellSignalStrengthCdma", jsonSignalStrength);
}
}
catch(JSONException exc) {
logJSONException(exc);
}
}
return json.toString();
}
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
private static VisibleCell getVisibleCellPostJellyBeanMr1(
@Nullable CellInfo cellInfo, long elapsedTime, long currentTime) {
if (cellInfo == null) {
return VisibleCell.UNKNOWN_VISIBLE_CELL;
}
long cellInfoAge = elapsedTime - TimeUnit.NANOSECONDS.toMillis(cellInfo.getTimeStamp());
long cellTimestamp = currentTime - cellInfoAge;
if (cellInfo instanceof CellInfoCdma) {
CellIdentityCdma cellIdentityCdma = ((CellInfoCdma) cellInfo).getCellIdentity();
return VisibleCell.builder(VisibleCell.CDMA_RADIO_TYPE)
.setCellId(cellIdentityCdma.getBasestationId())
.setLocationAreaCode(cellIdentityCdma.getNetworkId())
.setMobileNetworkCode(cellIdentityCdma.getSystemId())
.setTimestamp(cellTimestamp)
.build();
}
if (cellInfo instanceof CellInfoGsm) {
CellIdentityGsm cellIdentityGsm = ((CellInfoGsm) cellInfo).getCellIdentity();
return VisibleCell.builder(VisibleCell.GSM_RADIO_TYPE)
.setCellId(cellIdentityGsm.getCid())
.setLocationAreaCode(cellIdentityGsm.getLac())
.setMobileCountryCode(cellIdentityGsm.getMcc())
.setMobileNetworkCode(cellIdentityGsm.getMnc())
.setTimestamp(cellTimestamp)
.build();
}
if (cellInfo instanceof CellInfoLte) {
CellIdentityLte cellIdLte = ((CellInfoLte) cellInfo).getCellIdentity();
return VisibleCell.builder(VisibleCell.LTE_RADIO_TYPE)
.setCellId(cellIdLte.getCi())
.setMobileCountryCode(cellIdLte.getMcc())
.setMobileNetworkCode(cellIdLte.getMnc())
.setPhysicalCellId(cellIdLte.getPci())
.setTrackingAreaCode(cellIdLte.getTac())
.setTimestamp(cellTimestamp)
.build();
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2
&& cellInfo instanceof CellInfoWcdma) {
// CellInfoWcdma is only usable JB MR2 upwards.
CellIdentityWcdma cellIdentityWcdma = ((CellInfoWcdma) cellInfo).getCellIdentity();
return VisibleCell.builder(VisibleCell.WCDMA_RADIO_TYPE)
.setCellId(cellIdentityWcdma.getCid())
.setLocationAreaCode(cellIdentityWcdma.getLac())
.setMobileCountryCode(cellIdentityWcdma.getMcc())
.setMobileNetworkCode(cellIdentityWcdma.getMnc())
.setPrimaryScramblingCode(cellIdentityWcdma.getPsc())
.setTimestamp(cellTimestamp)
.build();
}
return VisibleCell.UNKNOWN_VISIBLE_CELL;
}
private void getAllCellInfo(List<CellInfo> cellInfo) {
// only for registered cells is returned identify
// SlimKat in Galaxy Nexus - returns null :-/
// Honor 7 - returns empty list (not null), Dual SIM?
//PPApplication.logE("PhoneStateScanner.getAllCellInfo", "cellInfo="+cellInfo);
if (cellInfo!=null) {
if (Permissions.checkLocation(context.getApplicationContext())) {
//PPApplication.logE("PhoneStateScanner.getAllCellInfo", "---- start ----------------------------");
boolean anyRegistered = false;
for (CellInfo _cellInfo : cellInfo) {
//PPApplication.logE("PhoneStateScanner.getAllCellInfo", "registered="+_cellInfo.isRegistered());
boolean isRegistered = false;
if (_cellInfo instanceof CellInfoGsm) {
//PPApplication.logE("PhoneStateScanner.getAllCellInfo", "gsm info="+_cellInfo);
CellIdentityGsm identityGsm = ((CellInfoGsm) _cellInfo).getCellIdentity();
//PPApplication.logE("PhoneStateScanner.getAllCellInfo", "gsm cid="+identityGsm.getCid());
if (isValidCellId(identityGsm.getCid())) {
if (_cellInfo.isRegistered()) {
registeredCell = identityGsm.getCid();
//PPApplication.logE("PhoneStateScanner.getAllCellInfo", "gsm registeredCell="+registeredCell);
lastConnectedTime = Calendar.getInstance().getTimeInMillis();
isRegistered = true;
}
}
} else if (_cellInfo instanceof CellInfoLte) {
//PPApplication.logE("PhoneStateScanner.getAllCellInfo", "lte info="+_cellInfo);
CellIdentityLte identityLte = ((CellInfoLte) _cellInfo).getCellIdentity();
//PPApplication.logE("PhoneStateScanner.getAllCellInfo", "lte cid="+identityLte.getCi());
if (isValidCellId(identityLte.getCi())) {
if (_cellInfo.isRegistered()) {
registeredCell = identityLte.getCi();
//PPApplication.logE("PhoneStateScanner.getAllCellInfo", "lte registeredCell="+registeredCell);
lastConnectedTime = Calendar.getInstance().getTimeInMillis();
isRegistered = true;
}
}
} else if (_cellInfo instanceof CellInfoWcdma) {
//PPApplication.logE("PhoneStateScanner.getAllCellInfo", "wcdma info="+_cellInfo);
CellIdentityWcdma identityWcdma = ((CellInfoWcdma) _cellInfo).getCellIdentity();
//PPApplication.logE("PhoneStateScanner.getAllCellInfo", "wcdma cid=" + identityWcdma.getCid());
if (isValidCellId(identityWcdma.getCid())) {
if (_cellInfo.isRegistered()) {
registeredCell = identityWcdma.getCid();
//PPApplication.logE("PhoneStateScanner.getAllCellInfo", "wcdma registeredCell="+registeredCell);
lastConnectedTime = Calendar.getInstance().getTimeInMillis();
isRegistered = true;
}
}
} else if (_cellInfo instanceof CellInfoCdma) {
//PPApplication.logE("PhoneStateScanner.getAllCellInfo", "cdma info="+_cellInfo);
CellIdentityCdma identityCdma = ((CellInfoCdma) _cellInfo).getCellIdentity();
//PPApplication.logE("PhoneStateScanner.getAllCellInfo", "wcdma cid="+identityCdma.getBasestationId());
if (isValidCellId(identityCdma.getBasestationId())) {
if (_cellInfo.isRegistered()) {
registeredCell = identityCdma.getBasestationId();
//PPApplication.logE("PhoneStateScanner.getAllCellInfo", "cdma registeredCell="+registeredCell);
lastConnectedTime = Calendar.getInstance().getTimeInMillis();
isRegistered = true;
}
}
}
/*else {
PPApplication.logE("PhoneStateScanner.getAllCellInfo", "unknown info="+_cellInfo);
}*/
if (isRegistered) {
anyRegistered = true;
/*if (PPApplication.logEnabled()) {
PPApplication.logE("PhoneStateScanner.getAllCellInfo", "registeredCell=" + registeredCell);
PPApplication.logE("PhoneStateScanner.getAllCellInfo", "is registered, save it");
}*/
DatabaseHandler db = DatabaseHandler.getInstance(context);
db.updateMobileCellLastConnectedTime(registeredCell, lastConnectedTime);
doAutoRegistration(registeredCell);
}
}
if (!anyRegistered) {
//PPApplication.logE("PhoneStateScanner.getAllCellInfo", "empty cellInfo");
registeredCell = Integer.MAX_VALUE;
doAutoRegistration(registeredCell);
}
//PPApplication.logE("PhoneStateScanner.getAllCellInfo", "---- end ----------------------------");
}
}
//else
// PPApplication.logE("PhoneStateScanner.getAllCellInfo", "cell info is null");
}
public CellIdentityCdmaAssert(CellIdentityCdma actual) {
super(actual, CellIdentityCdmaAssert.class);
}