@SuppressLint("NewApi") private boolean performCellsUpdate(final Location location,final String providerName){
  if (!prefs.getBoolean(Preferences.KEY_LOG_CELLS,Preferences.VAL_SAVE_CELLS)) {
    Log.i(TAG,"Didn't save cells: cells tracking is disabled.");
    return false;
  }
  if (!GeometryUtils.isValidLocation(location)) {
    Log.e(TAG,"GPS location invalid (null or default value)");
    return false;
  }
  if (mLocationBlacklist.contains(location)) {
    mCellSavedAt=location;
    return false;
  }
  final ArrayList<CellRecord> cells=new ArrayList<>();
  final PositionRecord pos=new PositionRecord(location,mSessionId,providerName);
  if (isNewApiSupported()) {
    Log.v(TAG,"Collecting cell infos (New API > 18)");
    final List<CellInfo> cellInfoList=mTelephonyManager.getAllCellInfo();
    Log.v(TAG,"Found " + cellInfoList.size() + " cells");
    for (    final CellInfo info : cellInfoList) {
      final CellRecord cell=processCellInfo(info,pos);
      if (cell != null) {
        cells.add(cell);
        broadcastCellInfo(cell);
      }
    }
  }
 else {
    Log.v(TAG,"Collecting cell infos (API <= 17)");
    final CellLocation cellLocation=mTelephonyManager.getCellLocation();
    if (cellLocation instanceof GsmCellLocation || cellLocation instanceof CdmaCellLocation) {
      final CellRecord serving=processServingCellLocation(cellLocation,pos);
      if (serving != null) {
        cells.add(serving);
      }
      final ArrayList<CellRecord> neigbors=processNeighbors(serving,pos);
      cells.addAll(neigbors);
      broadcastCellInfo(serving);
    }
  }
  mDataHelper.storeCellsScanResults(cells,pos,pos);
  return (cells.size() > 0);
}

@ SuppressLint ( "NewApi" ) private boolean performCellsUpdate ( final Location location , final String providerName ) { if ( ! prefs . getBoolean ( Preferences . KEY_LOG_CELLS , Preferences . VAL_SAVE_CELLS ) ) { Log . i ( TAG , "Didn't save cells: cells tracking is disabled." ) ; return false ; } if ( ! GeometryUtils . isValidLocation ( location ) ) { Log . e ( TAG , "GPS location invalid (null or default value)" ) ; return false ; } if ( mLocationBlacklist . contains ( location ) ) { mCellSavedAt = location ; return false ; } final ArrayList < CellRecord > cells = new ArrayList < > ( ) ; final PositionRecord pos = new PositionRecord ( location , mSessionId , providerName ) ; if ( isNewApiSupported ( ) ) { Log . v ( TAG , "Collecting cell infos (New API > 18)" ) ; final List < CellInfo > cellInfoList = mTelephonyManager . getAllCellInfo ( ) ; Log . v ( TAG , "Found " + cellInfoList . size ( ) + " cells" ) ; for ( final CellInfo info : cellInfoList ) { final CellRecord cell = processCellInfo ( info , pos ) ; if ( cell != null ) { cells . add ( cell ) ; broadcastCellInfo ( cell ) ; } } } else { Log . v ( TAG , "Collecting cell infos (API <= 17)" ) ; final CellLocation cellLocation = mTelephonyManager . getCellLocation ( ) ; if ( cellLocation instanceof GsmCellLocation || cellLocation instanceof CdmaCellLocation ) { final CellRecord serving = processServingCellLocation ( cellLocation , pos ) ; if ( serving != null ) { cells . add ( serving ) ; } final ArrayList < CellRecord > neigbors = processNeighbors ( serving , pos ) ; cells . addAll ( neigbors ) ; broadcastCellInfo ( serving ) ; } } mDataHelper . storeCellsScanResults ( cells , pos , pos ) ; return ( cells . size ( ) > 0 ) ; }
processes cell related information and saves them to database
