Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 596ce7fb authored by Mike Lockwood's avatar Mike Lockwood Committed by Android (Google) Code Review
Browse files

Merge "Clean up interface between LocationManagerService and the location providers:"

parents a524f8ab d03ff94f
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -22,7 +22,6 @@ import android.location.GeocoderParams;
import android.location.IGeocodeProvider;
import android.location.IGpsStatusListener;
import android.location.ILocationListener;
import android.location.ILocationProvider;
import android.location.Location;
import android.os.Bundle;

+1 −1
Original line number Diff line number Diff line
@@ -21,7 +21,7 @@ import android.net.NetworkInfo;
import android.os.Bundle;

/**
 * Binder interface for location providers.
 * Binder interface for services that implement location providers.
 *
 * {@hide}
 */
+51 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2010 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.location;

import android.location.Location;
import android.net.NetworkInfo;
import android.os.Bundle;

/**
 * Location Manager's interface for location providers.
 *
 * {@hide}
 */
public interface LocationProviderInterface {
    String getName();
    boolean requiresNetwork();
    boolean requiresSatellite();
    boolean requiresCell();
    boolean hasMonetaryCost();
    boolean supportsAltitude();
    boolean supportsSpeed();
    boolean supportsBearing();
    int getPowerRequirement();
    int getAccuracy();
    boolean isEnabled();
    void enable();
    void disable();
    int getStatus(Bundle extras);
    long getStatusUpdateTime();
    void enableLocationTracking(boolean enable);
    void setMinTime(long minTime);
    void updateNetworkState(int state, NetworkInfo info);
    void updateLocation(Location location);
    boolean sendExtraCommand(String command, Bundle extras);
    void addListener(int uid);
    void removeListener(int uid);
}
+13 −2
Original line number Diff line number Diff line
@@ -26,11 +26,11 @@ import android.location.Criteria;
import android.location.IGpsStatusListener;
import android.location.IGpsStatusProvider;
import android.location.ILocationManager;
import android.location.ILocationProvider;
import android.location.INetInitiatedListener;
import android.location.Location;
import android.location.LocationManager;
import android.location.LocationProvider;
import android.location.LocationProviderInterface;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.SntpClient;
@@ -65,7 +65,7 @@ import java.util.Map.Entry;
 *
 * {@hide}
 */
public class GpsLocationProvider extends ILocationProvider.Stub {
public class GpsLocationProvider implements LocationProviderInterface {

    private static final String TAG = "GpsLocationProvider";

@@ -373,6 +373,13 @@ public class GpsLocationProvider extends ILocationProvider.Stub {
        }
    }

    /**
     * Returns the name of this provider.
     */
    public String getName() {
        return LocationManager.GPS_PROVIDER;
    }

    /**
     * Returns true if the provider requires access to a
     * data network (e.g., the Internet), false otherwise.
@@ -576,6 +583,10 @@ public class GpsLocationProvider extends ILocationProvider.Stub {
        }
    }

    public boolean isEnabled() {
        return mEnabled;
    }

    public int getStatus(Bundle extras) {
        if (extras != null) {
            extras.putInt("satellites", mSvCount);
+4 −12
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.content.Intent;
import android.content.ServiceConnection;
import android.location.ILocationProvider;
import android.location.Location;
import android.location.LocationProviderInterface;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.os.Handler;
@@ -31,18 +32,17 @@ import android.os.SystemClock;
import android.util.Log;

/**
 * A class for proxying ILocationProvider implementations.
 * A class for proxying location providers implemented as services.
 *
 * {@hide}
 */
public class LocationProviderProxy {
public class LocationProviderProxy implements LocationProviderInterface {

    private static final String TAG = "LocationProviderProxy";

    private final Context mContext;
    private final String mName;
    private ILocationProvider mProvider;
    private Intent mIntent;
    private Handler mHandler;
    private final Connection mServiceConnection = new Connection();

@@ -56,21 +56,13 @@ public class LocationProviderProxy {
    // for caching requiresNetwork, requiresSatellite, etc.
    private DummyLocationProvider mCachedAttributes;

    // constructor for proxying built-in location providers
    public LocationProviderProxy(Context context, String name, ILocationProvider provider) {
        mContext = context;
        mName = name;
        mProvider = provider;
    }

    // constructor for proxying location providers implemented in a separate service
    public LocationProviderProxy(Context context, String name, String serviceName,
            Handler handler) {
        mContext = context;
        mName = name;
        mIntent = new Intent(serviceName);
        mHandler = handler;
        mContext.bindService(mIntent, mServiceConnection, Context.BIND_AUTO_CREATE);
        mContext.bindService(new Intent(serviceName), mServiceConnection, Context.BIND_AUTO_CREATE);
    }

    private class Connection implements ServiceConnection {
Loading