CellTowerListLte.java 文件源码

java
阅读 20 收藏 0 点赞 0 评论 0

项目:satstat 作者:
/**
 * Adds or updates a cell tower.
 * <p>
 * If the cell tower is already in the list, its data is updated; 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. 
 * @return The new or updated entry.
 */
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
public CellTowerLte update(CellInfoLte cell) {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) 
        return null;
    CellIdentityLte cid = cell.getCellIdentity();
    CellTowerLte result = null;
    CellTowerLte cand = this.get(cid.getMcc(), cid.getMnc(), cid.getTac(), cid.getCi());
    if ((cand != null) && CellTower.matches(cid.getPci(), cand.getPci()))
        result = cand;

    if (result == null) {
        cand = this.get(cid.getPci());
        if ((cand != null)
                && ((cid.getMcc() == Integer.MAX_VALUE) || CellTower.matches(cid.getMcc(), cand.getMcc()))
                && ((cid.getMnc() == Integer.MAX_VALUE) || CellTower.matches(cid.getMnc(), cand.getMnc()))
                && ((cid.getTac() == Integer.MAX_VALUE) || CellTower.matches(cid.getTac(), cand.getTac()))
                && ((cid.getCi() == Integer.MAX_VALUE) ||CellTower.matches(cid.getCi(), cand.getCi())))
            result = cand;
    }
    if (result == null)
        result = new CellTowerLte(cid.getMcc(), cid.getMnc(), cid.getTac(), cid.getCi(), cid.getPci());
    if (result.getMcc() == CellTower.UNKNOWN)
        result.setMcc(cid.getMcc());
    if (result.getMnc() == CellTower.UNKNOWN)
        result.setMnc(cid.getMnc());
    if (result.getTac() == CellTower.UNKNOWN)
        result.setTac(cid.getTac());
    if (result.getCi() == CellTower.UNKNOWN)
        result.setCi(cid.getCi());
    if (result.getPci() == CellTower.UNKNOWN)
        result.setPci(cid.getPci());
    this.put(result.getText(), result);
    this.put(result.getAltText(), result);
    result.setCellInfo(true);
    result.setDbm(cell.getCellSignalStrength().getDbm());
    result.setServing(cell.isRegistered());
    Log.d(this.getClass().getSimpleName(), String.format("Added CellInfoLte for %s, %d G, %d dBm",
            result.getText(),
            result.getGeneration(),
            result.getDbm()));
    return result;
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号