Android Open Source - pyneo-wirelesslocation Network Location Provider V2






From Project

Back to project page pyneo-wirelesslocation.

License

The source code is released under:

GNU General Public License

If you think the Android project pyneo-wirelesslocation 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

package org.pyneo.wirelesslocation;
/*  ww w.ja v  a 2s  .  c o m*/
import android.annotation.TargetApi;
import android.location.Criteria;
import android.location.Location;
import android.os.Bundle;
import android.os.SystemClock;
import android.content.Context;
import android.os.WorkSource;
import android.util.Log;
import internal.com.android.location.provider.LocationProviderBase;
import internal.com.android.location.provider.LocationRequestUnbundled;
import internal.com.android.location.provider.ProviderPropertiesUnbundled;
import internal.com.android.location.provider.ProviderRequestUnbundled;

@TargetApi(17)
public class NetworkLocationProviderV2 extends LocationProviderBase implements NetworkLocationProvider {
  private static final String TAG = NetworkLocationProviderV2.class.getName();
  private static boolean DEBUG = false;
  static { DEBUG = Log.isLoggable("org.pyneo.android", Log.DEBUG); }

  private boolean enabledByService = false;
  private boolean enabledBySetting = true;
  private WirelessEnvListener wirelessEnvListener;

  public NetworkLocationProviderV2(Context context) {
    super(TAG, ProviderPropertiesUnbundled.create(
      true, // requiresNetwork
      false, // requiresSatellite
      true, // requiresCell
      false, // hasMonetaryCost
      false, // supportsAltitude
      false, // supportsSpeed
      false, // supportsBearing
      Criteria.POWER_LOW, // powerRequirement
      Criteria.ACCURACY_FINE)); // accuracy
    if (DEBUG) Log.d(TAG, "NetworkLocationProviderV2:");
    wirelessEnvListener = new WirelessEnvListener(context, this);
  }

  @Override
  public synchronized void disable() {
    if (DEBUG) Log.d(TAG, "disable:");
    enabledByService = false;
  }

  @Override
  public synchronized void enable() {
    if (DEBUG) Log.d(TAG, "enable:");
    enabledByService = true;
  }

  @Override
  public boolean isActive() {
    if (DEBUG) Log.d(TAG, "isActive:");
    return enabledByService && enabledBySetting;
  }

  @Override
  public synchronized void onDisable() {
    if (DEBUG) Log.d(TAG, "onDisable:");
    enabledBySetting = false;
  }

  @Override
  public synchronized void onEnable() {
    if (DEBUG) Log.d(TAG, "onEnable:");
    enabledBySetting = true;
  }

  @Override
  public int onGetStatus(final Bundle arg0) {
    if (DEBUG) Log.d(TAG, "onGetStatus:");
    return android.location.LocationProvider.AVAILABLE;
  }

  @Override
  public long onGetStatusUpdateTime() {
    if (DEBUG) Log.d(TAG, "onGetStatusUpdateTime:");
    return SystemClock.elapsedRealtime();
  }

  @Override
  public void onLocationChanged(Location location) {
    if (DEBUG) Log.d(TAG, "onLocationChanged:");
    if (location != null) {
      if (DEBUG) Log.d(TAG, "onLocationChanged: " + location);
      reportLocation(location);
    }
  }

  @Override
  public void onSetRequest(final ProviderRequestUnbundled requests, final WorkSource ws) {
    try {
      if (DEBUG) Log.d(TAG, "onSetRequest: requests=" + requests + ", ws=" + ws);
      wirelessEnvListener.disable();
      long autoTime = Long.MAX_VALUE;
      boolean autoUpdate = false;
      for (final LocationRequestUnbundled request : requests.getLocationRequests()) {
        if (DEBUG) Log.d(TAG, "onSetRequest: request=" + request);
        if (autoTime > request.getInterval()) {
          autoTime = request.getInterval();
        }
        autoUpdate = true;
      }
      if (autoUpdate) {
        if (autoTime < 1500) {
          autoTime = 1500;
        }
        wirelessEnvListener.setTime(autoTime);
        wirelessEnvListener.enable();
      }
      else {
        wirelessEnvListener.disable();
      }
    }
    catch (Exception e) {
      Log.e(TAG, "onSetRequest: e=" + e, e);
    }
  }
}




Java Source Code List

android.location.GeocoderParams.java
android.location.LocationRequest.java
android.net.NetworkInfo.java
android.os.WorkSource.java
com.android.internal.location.ProviderProperties.java
com.android.internal.location.ProviderRequest.java
com.google.android.location.NetworkLocationService.java
com.google.android.location.geocode.GeocodeService.java
com.google.android.location.internal.server.GoogleLocationService.java
com.google.android.location.internal.server.NetworkLocationService.java
com.google.android.location.network.NetworkLocationService.java
internal.com.android.location.provider.GeocodeProvider.java
internal.com.android.location.provider.LocationProviderBase.java
internal.com.android.location.provider.LocationProvider.java
internal.com.android.location.provider.LocationRequestUnbundled.java
internal.com.android.location.provider.ProviderPropertiesUnbundled.java
internal.com.android.location.provider.ProviderRequestUnbundled.java
org.pyneo.android.TheDictionary.java
org.pyneo.android.TheList.java
org.pyneo.android.cellapi.CellAPI2.java
org.pyneo.android.wirelessid.CellIdPre17API.java
org.pyneo.android.wirelessid.CellId.java
org.pyneo.android.wirelessid.Meta.java
org.pyneo.android.wirelessid.Satellite.java
org.pyneo.android.wirelessid.WifiId.java
org.pyneo.wirelesslocation.GeocodeProvider.java
org.pyneo.wirelesslocation.MainService.java
org.pyneo.wirelesslocation.NetworkLocationProviderV1.java
org.pyneo.wirelesslocation.NetworkLocationProviderV2.java
org.pyneo.wirelesslocation.NetworkLocationProvider.java
org.pyneo.wirelesslocation.WirelessEnvListener.java