Example usage for android.telephony PhoneStateListener LISTEN_SIGNAL_STRENGTHS

List of usage examples for android.telephony PhoneStateListener LISTEN_SIGNAL_STRENGTHS

Introduction

In this page you can find the example usage for android.telephony PhoneStateListener LISTEN_SIGNAL_STRENGTHS.

Prototype

int LISTEN_SIGNAL_STRENGTHS

To view the source code for android.telephony PhoneStateListener LISTEN_SIGNAL_STRENGTHS.

Click Source Link

Document

Listen for changes to the network signal strengths (cellular).

Usage

From source file:com.mobilyzer.util.PhoneUtils.java

/**
 * This method must be called in the service thread, as the system will create a Looper in
 * the calling thread which will handle the callbacks.
 *//*from   w  ww. jav  a 2  s .c o m*/
public void registerSignalStrengthListener() {
    initNetwork();
    telephonyManager.listen(new SignalStrengthChangeListener(), PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
}

From source file:com.secupwn.aimsicd.service.CellTracker.java

/**
 *  Description:    Updates Neighboring Cell details
 *
 *                  TODO: add more details...
 *
 *
 *//* w  w  w.ja va2 s  .c  om*/
public List<Cell> updateNeighboringCells() {
    List<Cell> neighboringCells = new ArrayList<>();
    List<NeighboringCellInfo> neighboringCellInfo = tm.getNeighboringCellInfo();
    if (neighboringCellInfo == null) {
        neighboringCellInfo = new ArrayList<>();
    }

    Boolean nclp = tinydb.getBoolean("nc_list_present"); // NC list present? (default is false)

    //if nclp = true then check for neighboringCellInfo
    if (neighboringCellInfo != null && neighboringCellInfo.size() == 0 && nclp) {

        log.info("NeighboringCellInfo is empty: start polling...");

        // Try to poll the neighboring cells for a few seconds
        neighboringCellBlockingQueue = new LinkedBlockingQueue<>(100); // TODO What is this ??

        //LISTEN_CELL_INFO added in API 17
        // TODO: See issue #555 (DeviceApi17.java is using API 18 CellInfoWcdma calls.
        if (Build.VERSION.SDK_INT > 17) {
            DeviceApi18.startListening(tm, phoneStatelistener);
        } else {
            tm.listen(phoneStatelistener,
                    PhoneStateListener.LISTEN_CELL_LOCATION | PhoneStateListener.LISTEN_CELL_INFO | // API 17
                            PhoneStateListener.LISTEN_DATA_CONNECTION_STATE
                            | PhoneStateListener.LISTEN_SERVICE_STATE
                            | PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
        }

        // TODO: Consider removing ??
        for (int i = 0; i < 10 && neighboringCellInfo.size() == 0; i++) {
            try {
                log.debug("NeighboringCellInfo 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.debug("NeighboringCellInfo 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) {
                // TODO: Add a more valuable message here!
                log.error("", e);
            }
        }
    }

    //log.debug(mTAG + ": neighboringCellInfo size: " + neighboringCellInfo.size());

    // Add NC list to DBi_measure:nc_list
    for (NeighboringCellInfo neighborCell : neighboringCellInfo) {
        log.info("NeighboringCellInfo -" + " LAC:" + neighborCell.getLac() + " CID:" + neighborCell.getCid()
                + " PSC:" + neighborCell.getPsc() + " RSSI:" + neighborCell.getRssi());

        final Cell cell = new Cell(neighborCell.getCid(), neighborCell.getLac(), neighborCell.getRssi(),
                neighborCell.getPsc(), neighborCell.getNetworkType(), false);
        neighboringCells.add(cell);
    }
    return neighboringCells;
}

From source file:com.SecUpwN.AIMSICD.service.AimsicdService.java

/**
 * Updates Neighbouring Cell details/*  w w  w .  j a  v  a  2  s  .c o  m*/
 */
public List<Cell> updateNeighbouringCells() {
    List<Cell> neighboringCells = new ArrayList<>();

    List<NeighboringCellInfo> neighboringCellInfo;
    neighboringCellInfo = tm.getNeighboringCellInfo();
    if (neighboringCellInfo.size() == 0) {
        // try to poll the neighboring cells for a few seconds
        final LinkedBlockingQueue<NeighboringCellInfo> neighboringCellBlockingQueue = new LinkedBlockingQueue<>(
                100);
        final PhoneStateListener listener = new PhoneStateListener() {
            private void handle() {
                List<NeighboringCellInfo> neighboringCellInfo;
                neighboringCellInfo = tm.getNeighboringCellInfo();
                if (neighboringCellInfo.size() == 0) {
                    return;
                }
                Log.i(TAG, "neighbouringCellInfo empty - event based polling succeeded!");
                tm.listen(this, PhoneStateListener.LISTEN_NONE);
                neighboringCellBlockingQueue.addAll(neighboringCellInfo);
            }

            @Override
            public void onServiceStateChanged(ServiceState serviceState) {
                handle();
            }

            @Override
            public void onDataConnectionStateChanged(int state) {
                handle();
            }

            @Override
            public void onDataConnectionStateChanged(int state, int networkType) {
                handle();
            }

            @Override
            public void onSignalStrengthsChanged(SignalStrength signalStrength) {
                handle();
            }

            @Override
            public void onCellInfoChanged(List<CellInfo> cellInfo) {
                handle();
            }
        };
        Log.i(TAG, "neighbouringCellInfo empty - start polling");

        //LISTEN_CELL_INFO added in API 17
        if (Build.VERSION.SDK_INT > 16) {
            tm.listen(listener, PhoneStateListener.LISTEN_CELL_INFO | PhoneStateListener.LISTEN_CELL_LOCATION
                    | PhoneStateListener.LISTEN_DATA_CONNECTION_STATE | PhoneStateListener.LISTEN_SERVICE_STATE
                    | PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
        } else {
            tm.listen(listener,
                    PhoneStateListener.LISTEN_CELL_LOCATION | PhoneStateListener.LISTEN_DATA_CONNECTION_STATE
                            | PhoneStateListener.LISTEN_SERVICE_STATE
                            | PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
        }

        for (int i = 0; i < 10 && neighboringCellInfo.size() == 0; i++) {
            try {
                Log.i(TAG, "neighbouringCellInfo empty - try " + i);
                NeighboringCellInfo info = neighboringCellBlockingQueue.poll(1, TimeUnit.SECONDS);
                if (info == null) {
                    neighboringCellInfo = tm.getNeighboringCellInfo();
                    if (neighboringCellInfo.size() > 0) {
                        Log.i(TAG, "neighbouringCellInfo empty - try " + i + " succeeded time based");
                        break;
                    } else {
                        continue;
                    }
                }
                ArrayList<NeighboringCellInfo> cellInfoList = new ArrayList<NeighboringCellInfo>(
                        neighboringCellBlockingQueue.size() + 1);
                while (info != null) {
                    cellInfoList.add(info);
                    info = neighboringCellBlockingQueue.poll(1, TimeUnit.SECONDS);
                }
                neighboringCellInfo = cellInfoList;
            } catch (InterruptedException e) {
                // normal
            }
        }
    }

    Log.i(TAG, "neighbouringCellInfo Size - " + neighboringCellInfo.size());
    for (NeighboringCellInfo neighbourCell : neighboringCellInfo) {
        Log.i(TAG, "neighbouringCellInfo - CID:" + neighbourCell.getCid() + " LAC:" + neighbourCell.getLac()
                + " RSSI:" + neighbourCell.getRssi() + " PSC:" + neighbourCell.getPsc());

        final Cell cell = new Cell(neighbourCell.getCid(), neighbourCell.getLac(), neighbourCell.getRssi(),
                neighbourCell.getPsc(), neighbourCell.getNetworkType(), false);
        neighboringCells.add(cell);
    }

    return neighboringCells;
}

From source file:at.alladin.rmbt.android.util.InformationCollector.java

/** Returns mobile data network connection type. */
/*// ww  w .j a v a  2s .  co m
 * private int getTelephonyNetworkType() { //assert
 * NETWORK_TYPES[14].compareTo("EHRPD") == 0;
 * 
 * int networkType = telManager.getNetworkType(); if (networkType <
 * NETWORK_TYPES.length) {
 * 
 * } else { return 0; } }
 */

// Listeners
private void registerListeners() {
    initNetwork();

    if (telListener == null) {
        telListener = new TelephonyStateListener();
        telManager.listen(telListener,
                PhoneStateListener.LISTEN_SIGNAL_STRENGTHS | PhoneStateListener.LISTEN_CELL_LOCATION);
    }
}

From source file:com.SecUpwN.AIMSICD.service.AimsicdService.java

/**
 * Cell Information Tracking and database logging
 *
 * @param track Enable/Disable tracking/*from ww w . j a  v a2  s.co  m*/
 */
public void setCellTracking(boolean track) {
    if (track) {
        tm.listen(mCellSignalListener,
                PhoneStateListener.LISTEN_CELL_LOCATION | PhoneStateListener.LISTEN_SIGNAL_STRENGTHS
                        | PhoneStateListener.LISTEN_DATA_ACTIVITY
                        | PhoneStateListener.LISTEN_DATA_CONNECTION_STATE);
        if (lm != null) {
            mLocationListener = new MyLocationListener();
            Log.i(TAG, "LocationManager already existed");
            lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, GPS_MIN_UPDATE_TIME,
                    GPS_MIN_UPDATE_DISTANCE, mLocationListener);
        } else {
            Log.i(TAG, "LocationManager did not exist");
            lm = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
            if (lm != null) {
                if (lm.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
                    Log.i(TAG, "LocationManager created");
                    lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, GPS_MIN_UPDATE_TIME,
                            GPS_MIN_UPDATE_DISTANCE, mLocationListener);
                }
            }
        }
        Helpers.msgShort(this, "Tracking cell information");
        mTrackingCell = true;
    } else {
        tm.listen(mCellSignalListener, PhoneStateListener.LISTEN_NONE);
        lm.removeUpdates(mLocationListener);
        mDevice.mCell.setLon(0.0);
        mDevice.mCell.setLat(0.0);
        mTrackingCell = false;
        mDevice.setCellInfo("[0,0]|nn|nn|");
        Helpers.msgShort(this, "Stopped tracking cell information");
    }
    setNotification();
}

From source file:pandroid.agent.PandroidAgentListener.java

/**
 *  Retrieves the current cell signal strength in dB
 *///ww  w.j a va  2  s.  co m
private void getSignalStrength() {
    TelephonyManager telephone = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
    signalListener phoneState = new signalListener();
    telephone.listen(phoneState, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
}