Android Open Source - ubihelper Cell Strength Channel






From Project

Back to project page ubihelper.

License

The source code is released under:

GNU General Public License

If you think the Android project ubihelper listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/**
 * Copyright (c) 2012 The University of Nottingham
 * /* w w  w  . j a  va 2 s. co m*/
 * This file is part of ubihelper
 *
 *  ubihelper is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU Affero General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  ubihelper is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU Affero General Public License for more details.
 *
 *  You should have received a copy of the GNU Affero General Public License
 *  along with ubihelper. If not, see <http://www.gnu.org/licenses/>.
 *  
 *  @author Chris Greenhalgh (cmg@cs.nott.ac.uk), The University of Nottingham
 */
package uk.ac.horizon.ubihelper.service.channel;

import org.json.JSONException;
import org.json.JSONObject;

import android.app.Service;
import android.content.BroadcastReceiver;
import android.telephony.CellLocation;
import android.telephony.PhoneStateListener;
import android.telephony.SignalStrength;
import android.telephony.TelephonyManager;
import android.telephony.cdma.CdmaCellLocation;
import android.telephony.gsm.GsmCellLocation;
import uk.ac.horizon.ubihelper.channel.NamedChannel;

/**
 * @author cmg
 *
 */
public class CellStrengthChannel extends NamedChannel  {
  private TelephonyManager telephony;
  private Service service;
  /**
   * @param name
   */
  public CellStrengthChannel(Service service, String name) {
    super(name);
    this.service = service;
    telephony = (TelephonyManager)service.getSystemService(Service.TELEPHONY_SERVICE);
  }
  
  private PhoneStateListener listener = new PhoneStateListener() {

    @Override
    public void onCellLocationChanged(CellLocation location) {
      update(location, null);
    }

    /* (non-Javadoc)
     * @see android.telephony.PhoneStateListener#onSignalStrengthsChanged(android.telephony.SignalStrength)
     */
    @Override
    public void onSignalStrengthsChanged(SignalStrength signalStrength) {
      update(null, signalStrength);
    }
    
  };
  @Override
  protected void handleStart() {
    if (telephony!=null) {
      telephony.listen(listener, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS | PhoneStateListener.LISTEN_CELL_LOCATION);
    }
  }
  protected void update(CellLocation loc, SignalStrength ss) {
    if (loc==null && telephony!=null)
      loc = telephony.getCellLocation();
    // TODO Auto-generated method stub
    JSONObject value = new JSONObject();
    try {
      value.put("timestamp", System.currentTimeMillis());
      if (loc instanceof GsmCellLocation) {
        GsmCellLocation gsm = (GsmCellLocation)loc;
        if (gsm.getCid()!=(-1))
          value.put("cid", gsm.getCid());
        if (gsm.getLac()!=(-1))
          value.put("lac", gsm.getLac());
        value.put("type","gsm");
      }
      else if (loc instanceof CdmaCellLocation) {
        CdmaCellLocation cdma = (CdmaCellLocation)loc;
        if (cdma.getBaseStationId()!=(-1))
          value.put("baseStationId", cdma.getBaseStationId());
        if (cdma.getBaseStationLatitude()!=Integer.MAX_VALUE)
          value.put("baseStationLat", cdma.getBaseStationLatitude());
        if (cdma.getBaseStationLongitude()!=Integer.MAX_VALUE)
          value.put("baseStationLon", cdma.getBaseStationLongitude());
        if (cdma.getNetworkId()!=(-1))
          value.put("baseStationId", cdma.getNetworkId());
        if (cdma.getNetworkId()!=(-1))
          value.put("networkId", cdma.getNetworkId());
        if (cdma.getSystemId()!=(-1))
          value.put("systemId", cdma.getSystemId());
        value.put("type","cdma");
      }
      else if (loc!=null) {
        value.put("type", loc.getClass().getName());
      }

      if (ss!=null) {
        if (ss.getCdmaDbm()!=(-1))
          value.put("cdmsDbm", ss.getCdmaDbm());
        if (ss.getCdmaEcio()!=(-1))
          value.put("cdmaEcio", ss.getCdmaEcio());
        if (ss.getEvdoDbm()!=(-1))
          value.put("evdoDbm", ss.getEvdoDbm());
        if (ss.getEvdoEcio()!=(-1))
          value.put("evdiEcio", ss.getEvdoEcio());
        if (ss.getEvdoSnr()!=(-1))
          value.put("evdoSnr", ss.getEvdoSnr());
        if (ss.getGsmBitErrorRate()!=(-1))
          value.put("gsmBER", ss.getGsmBitErrorRate());
        if (ss.getGsmSignalStrength()!=(-1))
          value.put("gsmSS", ss.getGsmSignalStrength());
        value.put("gsm", ss.isGsm());
      }
    } catch (JSONException e) {
       // shouldn't
    }
    onNewValue(value);
  }
  @Override
  protected void handleStop() {
    if (telephony!=null)
      telephony.listen(listener, PhoneStateListener.LISTEN_NONE);
  }

}




Java Source Code List

org.json.JSONArray.java
org.json.JSONException.java
org.json.JSONObject.java
org.json.JSONString.java
org.json.JSONStringer.java
org.json.JSONTokener.java
org.json.JSONWriter.java
uk.ac.horizon.ubihelper.channel.ChannelFactory.java
uk.ac.horizon.ubihelper.channel.ChannelListener.java
uk.ac.horizon.ubihelper.channel.ChannelManager.java
uk.ac.horizon.ubihelper.channel.ChannelValueEvent.java
uk.ac.horizon.ubihelper.channel.NamedChannel.java
uk.ac.horizon.ubihelper.channel.PullSubscription.java
uk.ac.horizon.ubihelper.channel.SharedVariableChannel.java
uk.ac.horizon.ubihelper.channel.Subscription.java
uk.ac.horizon.ubihelper.dns.DnsClient.java
uk.ac.horizon.ubihelper.dns.DnsProtocol.java
uk.ac.horizon.ubihelper.dns.DnsServer.java
uk.ac.horizon.ubihelper.dns.DnsUtils.java
uk.ac.horizon.ubihelper.httpserver.HttpClientHandler.java
uk.ac.horizon.ubihelper.httpserver.HttpContinuation.java
uk.ac.horizon.ubihelper.httpserver.HttpError.java
uk.ac.horizon.ubihelper.httpserver.HttpListener.java
uk.ac.horizon.ubihelper.j2se.Base64.java
uk.ac.horizon.ubihelper.j2se.Server.java
uk.ac.horizon.ubihelper.net.Fragment.java
uk.ac.horizon.ubihelper.net.Marshaller.java
uk.ac.horizon.ubihelper.net.Message.java
uk.ac.horizon.ubihelper.net.OnPeerConnectionListener.java
uk.ac.horizon.ubihelper.net.PeerConnectionScheduler.java
uk.ac.horizon.ubihelper.net.PeerConnection.java
uk.ac.horizon.ubihelper.protocol.ClientInfo.java
uk.ac.horizon.ubihelper.protocol.ClientState.java
uk.ac.horizon.ubihelper.protocol.MessageUtils.java
uk.ac.horizon.ubihelper.protocol.PeerInfo.java
uk.ac.horizon.ubihelper.protocol.ProtocolManager.java
uk.ac.horizon.ubihelper.service.BroadcastIntentSubscription.java
uk.ac.horizon.ubihelper.service.EnabledPeersChannel.java
uk.ac.horizon.ubihelper.service.LogManager.java
uk.ac.horizon.ubihelper.service.LogSubscription.java
uk.ac.horizon.ubihelper.service.PeerManager.java
uk.ac.horizon.ubihelper.service.PeersOpenHelper.java
uk.ac.horizon.ubihelper.service.Service.java
uk.ac.horizon.ubihelper.service.WifiDiscoveryManager.java
uk.ac.horizon.ubihelper.service.channel.BluetoothDiscoveryChannel.java
uk.ac.horizon.ubihelper.service.channel.CellLocationChannel.java
uk.ac.horizon.ubihelper.service.channel.CellStrengthChannel.java
uk.ac.horizon.ubihelper.service.channel.GpsStatusChannel.java
uk.ac.horizon.ubihelper.service.channel.LocationChannel.java
uk.ac.horizon.ubihelper.service.channel.MicChannel.java
uk.ac.horizon.ubihelper.service.channel.PollingChannel.java
uk.ac.horizon.ubihelper.service.channel.SensorChannel.java
uk.ac.horizon.ubihelper.service.channel.TimeChannel.java
uk.ac.horizon.ubihelper.service.channel.WifiScannerChannel.java
uk.ac.horizon.ubihelper.ui.AboutActivity.java
uk.ac.horizon.ubihelper.ui.ChannelListActivity.java
uk.ac.horizon.ubihelper.ui.ChannelPeerListActivity.java
uk.ac.horizon.ubihelper.ui.ChannelValueActivity.java
uk.ac.horizon.ubihelper.ui.ChannelViewActivity.java
uk.ac.horizon.ubihelper.ui.LoggingChannelListActivity.java
uk.ac.horizon.ubihelper.ui.LoggingPreferences.java
uk.ac.horizon.ubihelper.ui.MainPreferences.java
uk.ac.horizon.ubihelper.ui.ManagePeersActivity.java
uk.ac.horizon.ubihelper.ui.PeerInfoActivity.java
uk.ac.horizon.ubihelper.ui.PeerManualAddActivity.java
uk.ac.horizon.ubihelper.ui.PeerRequestActivity.java
uk.ac.horizon.ubihelper.ui.PeerRequestInfoActivity.java
uk.ac.horizon.ubihelper.ui.SearchPeersActivity.java
uk.ac.horizon.ubihelper.ui.TestActivity.java
uk.ac.horizon.ubihelper.ui.WifiStatusActivity.java
uk.ac.horizon.ubihelper.websocket.ClientWebsocket.java
uk.ac.horizon.ubihelper.websocket.ReadyState.java
uk.ac.horizon.ubihelper.websocket.SocketChannelWebsocket.java
uk.ac.horizon.ubihelper.websocket.WebsocketListener.java
uk.ac.horizon.ubihelper.websocket.Websocket.java