Java Code Examples for android.telephony.NeighboringCellInfo#getLac()
The following examples show how to use
android.telephony.NeighboringCellInfo#getLac() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: CellbasedLocationProvider.java From LocalGSMLocationProvider with Apache License 2.0 | 6 votes |
/** * Add neighbouring cells as generated by the getNeighboringCells API. * @param neighbours The list of neighbouring cells. */ public void addNeighbours(List<NeighboringCellInfo> neighbours) { if (neighbours == null || neighbours.isEmpty()) return; for (NeighboringCellInfo neighbour : neighbours) { List<CellInfo> cellInfos = db.query(neighbour.getCid(), neighbour.getLac()); if (cellInfos != null && !cellInfos.isEmpty()) { for (CellInfo cellInfo : cellInfos) { pushRecentCells(cellInfo); } } else { CellInfo ci = new CellInfo(); ci.lng = 0d; ci.lat = 0d; ci.CID = neighbour.getCid(); ci.LAC = neighbour.getLac(); ci.MCC = -1; ci.MNC = -1; pushUnusedCells(ci); } } }
Example 2
Source File: PhoneUtils.java From Mobilyzer with Apache License 2.0 | 6 votes |
/** * Returns the information about cell towers in range. Returns null if the information is * not available * * TODO(wenjiezeng): As folklore has it and Wenjie has confirmed, we cannot get cell info from * Samsung phones. */ public String getCellInfo(boolean cidOnly) { if(!(ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION)==PackageManager.PERMISSION_GRANTED)){ return null; } initNetwork(); List<NeighboringCellInfo> infos = telephonyManager.getNeighboringCellInfo(); StringBuffer buf = new StringBuffer(); String tempResult = ""; if (infos.size() > 0) { for (NeighboringCellInfo info : infos) { tempResult = cidOnly ? info.getCid() + ";" : info.getLac() + "," + info.getCid() + "," + info.getRssi() + ";"; buf.append(tempResult); } // Removes the trailing semicolon buf.deleteCharAt(buf.length() - 1); return buf.toString(); } else { return null; } }
Example 3
Source File: CellBackendHelper.java From android_external_UnifiedNlpApi with Apache License 2.0 | 5 votes |
private Cell parseCellInfo(NeighboringCellInfo info) { try { if (getCellType(info.getNetworkType()) != Cell.CellType.GSM) return null; return new Cell(Cell.CellType.GSM, getMcc(), getMnc(), info.getLac(), info.getCid(), info.getPsc(), info.getRssi()); } catch (Exception ignored) { } return null; }
Example 4
Source File: ai.java From MiBandDecompiled with Apache License 2.0 | 5 votes |
protected final List m() { ArrayList arraylist = new ArrayList(); if (b == null) { return arraylist; } if (!c()) { return arraylist; } Iterator iterator = b.getNeighboringCellInfo().iterator(); int i1 = 0; do { if (!iterator.hasNext()) { break; } NeighboringCellInfo neighboringcellinfo = (NeighboringCellInfo)iterator.next(); if (i1 > 15) { break; } if (neighboringcellinfo.getLac() != 0 && neighboringcellinfo.getLac() != 65535 && neighboringcellinfo.getCid() != 65535 && neighboringcellinfo.getCid() != 0xfffffff) { arraylist.add(neighboringcellinfo); i1++; } } while (true); return arraylist; }
Example 5
Source File: CellBackendHelper.java From android_external_UnifiedNlpApi with Apache License 2.0 | 5 votes |
private Cell parseCellInfo(NeighboringCellInfo info) { try { if (getCellType(info.getNetworkType()) != Cell.CellType.GSM) return null; return new Cell(Cell.CellType.GSM, getMcc(), getMnc(), info.getLac(), info.getCid(), info.getPsc(), info.getRssi()); } catch (Exception ignored) { } return null; }
Example 6
Source File: CellTracker.java From AIMSICDL with GNU General Public License v3.0 | 4 votes |
/** * Description: Updates Neighbouring Cell details * * TODO: add more details... * * */ public List<Cell> updateNeighbouringCells() { List<Cell> neighboringCells = new ArrayList<>(); List<NeighboringCellInfo> neighboringCellInfo = tm.getNeighboringCellInfo(); if (neighboringCellInfo == null) { neighboringCellInfo = new ArrayList<>(); } Boolean nclp = tinydb.getBoolean("nc_list_present"); // Is NC list present? (default is false) //if nclp = true then check for neighboringCellInfo //if (neighboringCellInfo != null && neighboringCellInfo.size() == 0 && nclp) { //if (!neighboringCellInfo.isEmpty() && neighboringCellInfo.size() == 0 && nclp) { if (neighboringCellInfo.size() == 0 && nclp) { Log.i(TAG, mTAG + "NeighbouringCellInfo is empty: start polling..."); // Try to poll the neighboring cells for a few seconds neighboringCellBlockingQueue = new LinkedBlockingQueue<>(100); // Max 100 NC's before blocking (?) // ToDo: rename... (We don't use API's <18 anymore.) DeviceApi18.startListening(tm, phoneStatelistener); // ToDo: Move or remove. This should now be done by getAllCellInfo() in new RadioAPI "collector" module. for (int i = 0; i < 10 && neighboringCellInfo.size() == 0; i++) { try { Log.d(TAG, mTAG + "NeighbouringCellInfo empty: trying " + i); NeighboringCellInfo info = neighboringCellBlockingQueue.poll(1, TimeUnit.SECONDS); if (info == null) { neighboringCellInfo = tm.getNeighboringCellInfo(); if (neighboringCellInfo != null) { if (neighboringCellInfo.size() > 0) { // Can we think of a better log message here? Log.d(TAG, mTAG + "NeighbouringCellInfo found on " + i + " try. (time based)"); break; } else { continue; } } } List<NeighboringCellInfo> cellInfoList = new ArrayList<>(neighboringCellBlockingQueue.size() + 1); while (info != null) { cellInfoList.add(info); info = neighboringCellBlockingQueue.poll(1, TimeUnit.SECONDS); } neighboringCellInfo = cellInfoList; } catch (InterruptedException e) { Log.e(TAG, mTAG + "Interrupted BlockingQueue Exception: " + e); } } } //log.debug(mTAG + ": neighbouringCellInfo size: " + neighboringCellInfo.size()); // Add NC list to DBi_measure:nc_list for (NeighboringCellInfo neighbourCell : neighboringCellInfo) { Log.i(TAG, mTAG + "NeighbouringCellInfo -" + " LAC:" + neighbourCell.getLac() + " CID:" + neighbourCell.getCid() + " PSC:" + neighbourCell.getPsc() + " RSSI:" + neighbourCell.getRssi()); final Cell cell = new Cell( neighbourCell.getCid(), neighbourCell.getLac(), neighbourCell.getRssi(), neighbourCell.getPsc(), neighbourCell.getNetworkType(), false); neighboringCells.add(cell); } return neighboringCells; }
Example 7
Source File: LegacyMeasurementParser.java From TowerCollector with Mozilla Public License 2.0 | 4 votes |
private String createCellKey(NeighboringCellInfo neighboringCell, Cell cell) { return cell.getMcc() + "_" + cell.getMnc() + "_" + neighboringCell.getLac() + "_" + neighboringCell.getCid(); }
Example 8
Source File: CellTowerListLte.java From satstat with GNU General Public License v3.0 | 4 votes |
/** * 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. Cells whose network type is not LTE will be * rejected. * <p> * This method will set the cell's identity data, generation and its signal * strength. * @return The new or updated entry, or {@code null} if the cell was rejected */ public CellTowerLte update(String networkOperator, NeighboringCellInfo cell) { int mcc = CellTower.UNKNOWN; int mnc = CellTower.UNKNOWN; if (networkOperator.length() > 3) { mcc = Integer.parseInt(networkOperator.substring(0, 3)); mnc = Integer.parseInt(networkOperator.substring(3)); } CellTowerLte result = null; CellTowerLte cand = this.get(mcc, mnc, cell.getLac(), cell.getCid()); if ((cand != null) && CellTower.matches(cell.getPsc(), cand.getPci())) result = cand; if (result == null) { cand = this.get(cell.getPsc()); if ((cand != null) && CellTower.matches(mcc, cand.getMcc()) && CellTower.matches(mnc, cand.getMnc()) && CellTower.matches(cell.getLac(), cand.getTac()) && CellTower.matches(cell.getCid(), cand.getCi())) result = cand; } if (result == null) result = new CellTowerLte(mcc, mnc, cell.getLac(), cell.getCid(), cell.getPsc()); result.setNeighboringCellInfo(true); int networkType = cell.getNetworkType(); switch (networkType) { case TelephonyManager.NETWORK_TYPE_LTE: result.setAsu(cell.getRssi()); break; default: // not an LTE cell, return return null; } result.setNetworkType(networkType); if (result.getMcc() == CellTower.UNKNOWN) result.setMcc(mcc); if (result.getMnc() == CellTower.UNKNOWN) result.setMnc(mnc); if (result.getTac() == CellTower.UNKNOWN) result.setTac(cell.getLac()); if (result.getCi() == CellTower.UNKNOWN) result.setCi(cell.getCid()); if (result.getPci() == CellTower.UNKNOWN) result.setPci(cell.getPsc()); this.put(result.getText(), result); this.put(result.getAltText(), result); Log.d(this.getClass().getSimpleName(), String.format("Added NeighboringCellInfo for %s, %d G, %d dBm", result.getText(), result.getGeneration(), result.getDbm())); return result; }
Example 9
Source File: CellTowerListGsm.java From satstat with GNU General Public License v3.0 | 4 votes |
/** * 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. Cells whose network type is not a flavor of GSM or * UMTS will be rejected. * <p> * This method will set the cell's identity data, generation and its signal * strength. * @return The new or updated entry, or {@code null} if the cell was rejected */ public CellTowerGsm update(String networkOperator, NeighboringCellInfo cell) { int mcc = CellTower.UNKNOWN; int mnc = CellTower.UNKNOWN; if (networkOperator.length() > 3) { mcc = Integer.parseInt(networkOperator.substring(0, 3)); mnc = Integer.parseInt(networkOperator.substring(3)); } CellTowerGsm result = null; CellTowerGsm cand = this.get(mcc, mnc, cell.getLac(), cell.getCid()); if ((cand != null) && CellTower.matches(cell.getPsc(), cand.getPsc())) result = cand; if (result == null) { cand = this.get(cell.getPsc()); if ((cand != null) && CellTower.matches(mcc, cand.getMcc()) && CellTower.matches(mnc, cand.getMnc()) && CellTower.matches(cell.getLac(), cand.getLac()) && CellTower.matches(cell.getCid(), cand.getCid())) result = cand; } if (result == null) result = new CellTowerGsm(mcc, mnc, cell.getLac(), cell.getCid(), cell.getPsc()); result.setNeighboringCellInfo(true); int networkType = cell.getNetworkType(); switch (networkType) { case TelephonyManager.NETWORK_TYPE_UMTS: case TelephonyManager.NETWORK_TYPE_HSDPA: case TelephonyManager.NETWORK_TYPE_HSUPA: case TelephonyManager.NETWORK_TYPE_HSPA: /* * for details see TS 25.133 section 9.1.1.3 * http://www.3gpp.org/DynaReport/25133.htm */ result.setCpichRscp(cell.getRssi()); break; case TelephonyManager.NETWORK_TYPE_EDGE: case TelephonyManager.NETWORK_TYPE_GPRS: result.setAsu(cell.getRssi()); break; default: // not a GSM or UMTS cell, return return null; // result.setDbm(CellTower.DBM_UNKNOWN); // not needed because this is the default value; setting it // here might overwrite valid data obtained from a different // source } result.setNetworkType(networkType); if (result.getMcc() == CellTower.UNKNOWN) result.setMcc(mcc); if (result.getMnc() == CellTower.UNKNOWN) result.setMnc(mnc); if (result.getLac() == CellTower.UNKNOWN) result.setLac(cell.getLac()); if (result.getCid() == CellTower.UNKNOWN) result.setCid(cell.getCid()); if (result.getPsc() == CellTower.UNKNOWN) result.setPsc(cell.getPsc()); this.put(result.getText(), result); this.put(result.getAltText(), result); if ((result.getText() == null) && (result.getAltText() == null)) Log.d(this.getClass().getSimpleName(), String.format("Added %d G cell with no data from NeighboringCellInfo", result.getGeneration())); return result; }