MockProvider.java revision 7e9f4eb2608148436cef36c9969bf8a599b39e72
17ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood/*
27ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood * Copyright (C) 2009 The Android Open Source Project
37ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood *
47ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood * Licensed under the Apache License, Version 2.0 (the "License");
57ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood * you may not use this file except in compliance with the License.
67ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood * You may obtain a copy of the License at
77ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood *
87ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood *      http://www.apache.org/licenses/LICENSE-2.0
97ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood *
107ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood * Unless required by applicable law or agreed to in writing, software
117ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood * distributed under the License is distributed on an "AS IS" BASIS,
127ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood * See the License for the specific language governing permissions and
147ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood * limitations under the License.
157ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood */
167ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood
1700b74270c9f136a8727c5f6cda0997a3a905f385Mike Lockwoodpackage com.android.server.location;
187ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood
1903ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwoodimport android.location.Criteria;
204e50b78bda9cd58be61581d2886c88ff6348a1c1Mike Lockwoodimport android.location.ILocationManager;
217ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwoodimport android.location.Location;
2215e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwoodimport android.location.LocationProvider;
2303d246779ea65fc2bd10d0b4f32620f45211133aMike Lockwoodimport android.net.NetworkInfo;
247ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwoodimport android.os.Bundle;
2515e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwoodimport android.os.RemoteException;
267e9f4eb2608148436cef36c9969bf8a599b39e72Dianne Hackbornimport android.os.WorkSource;
2715e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwoodimport android.util.Log;
287ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwoodimport android.util.PrintWriterPrinter;
297ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood
307ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwoodimport java.io.PrintWriter;
317ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood
327ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood/**
337ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood * A mock location provider used by LocationManagerService to implement test providers.
347ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood *
357ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood * {@hide}
367ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood */
37d03ff94fe58045b5bd1dd783fb98026778a4265dMike Lockwoodpublic class MockProvider implements LocationProviderInterface {
3815e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood    private final String mName;
3915e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood    private final ILocationManager mLocationManager;
407ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    private final boolean mRequiresNetwork;
417ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    private final boolean mRequiresSatellite;
427ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    private final boolean mRequiresCell;
437ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    private final boolean mHasMonetaryCost;
447ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    private final boolean mSupportsAltitude;
457ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    private final boolean mSupportsSpeed;
467ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    private final boolean mSupportsBearing;
477ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    private final int mPowerRequirement;
487ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    private final int mAccuracy;
497ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    private final Location mLocation;
507ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    private int mStatus;
517ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    private long mStatusUpdateTime;
527ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    private final Bundle mExtras = new Bundle();
537ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    private boolean mHasLocation;
547ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    private boolean mHasStatus;
557ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    private boolean mEnabled;
567ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood
5715e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood    private static final String TAG = "MockProvider";
5815e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood
594e50b78bda9cd58be61581d2886c88ff6348a1c1Mike Lockwood    public MockProvider(String name,  ILocationManager locationManager,
604e50b78bda9cd58be61581d2886c88ff6348a1c1Mike Lockwood        boolean requiresNetwork, boolean requiresSatellite,
617ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood        boolean requiresCell, boolean hasMonetaryCost, boolean supportsAltitude,
627ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood        boolean supportsSpeed, boolean supportsBearing, int powerRequirement, int accuracy) {
6315e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood        mName = name;
6415e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood        mLocationManager = locationManager;
657ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood        mRequiresNetwork = requiresNetwork;
667ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood        mRequiresSatellite = requiresSatellite;
677ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood        mRequiresCell = requiresCell;
687ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood        mHasMonetaryCost = hasMonetaryCost;
697ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood        mSupportsAltitude = supportsAltitude;
707ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood        mSupportsBearing = supportsBearing;
717ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood        mSupportsSpeed = supportsSpeed;
727ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood        mPowerRequirement = powerRequirement;
737ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood        mAccuracy = accuracy;
747ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood        mLocation = new Location(name);
757ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    }
767ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood
77d03ff94fe58045b5bd1dd783fb98026778a4265dMike Lockwood    public String getName() {
78d03ff94fe58045b5bd1dd783fb98026778a4265dMike Lockwood        return mName;
79d03ff94fe58045b5bd1dd783fb98026778a4265dMike Lockwood    }
80d03ff94fe58045b5bd1dd783fb98026778a4265dMike Lockwood
817ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    public void disable() {
827ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood        mEnabled = false;
837ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    }
847ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood
857ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    public void enable() {
867ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood        mEnabled = true;
877ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    }
887ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood
89d03ff94fe58045b5bd1dd783fb98026778a4265dMike Lockwood    public boolean isEnabled() {
90d03ff94fe58045b5bd1dd783fb98026778a4265dMike Lockwood        return mEnabled;
91d03ff94fe58045b5bd1dd783fb98026778a4265dMike Lockwood    }
92d03ff94fe58045b5bd1dd783fb98026778a4265dMike Lockwood
937ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    public int getStatus(Bundle extras) {
947ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood        if (mHasStatus) {
957ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood            extras.clear();
967ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood            extras.putAll(mExtras);
977ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood            return mStatus;
987ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood        } else {
9915e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood            return LocationProvider.AVAILABLE;
1007ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood        }
1017ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    }
1027ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood
1034e50b78bda9cd58be61581d2886c88ff6348a1c1Mike Lockwood    public long getStatusUpdateTime() {
1044e50b78bda9cd58be61581d2886c88ff6348a1c1Mike Lockwood        return mStatusUpdateTime;
1054e50b78bda9cd58be61581d2886c88ff6348a1c1Mike Lockwood    }
1064e50b78bda9cd58be61581d2886c88ff6348a1c1Mike Lockwood
1077ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    public int getAccuracy() {
1087ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood        return mAccuracy;
1097ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    }
1107ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood
1117ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    public int getPowerRequirement() {
1127ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood        return mPowerRequirement;
1137ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    }
1147ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood
1157ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    public boolean hasMonetaryCost() {
1167ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood        return mHasMonetaryCost;
1177ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    }
1187ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood
1197ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    public boolean requiresCell() {
1207ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood        return mRequiresCell;
1217ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    }
1227ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood
1237ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    public boolean requiresNetwork() {
1247ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood        return mRequiresNetwork;
1257ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    }
1267ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood
1277ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    public boolean requiresSatellite() {
1287ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood        return mRequiresSatellite;
1297ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    }
1307ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood
1317ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    public boolean supportsAltitude() {
1327ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood        return mSupportsAltitude;
1337ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    }
1347ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood
1357ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    public boolean supportsBearing() {
1367ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood        return mSupportsBearing;
1377ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    }
1387ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood
1397ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    public boolean supportsSpeed() {
1407ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood        return mSupportsSpeed;
1417ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    }
1427ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood
14303ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood    public boolean meetsCriteria(Criteria criteria) {
14403ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood        if ((criteria.getAccuracy() != Criteria.NO_REQUIREMENT) &&
14503ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood            (criteria.getAccuracy() < mAccuracy)) {
14603ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood            return false;
14703ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood        }
14803ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood        int criteriaPower = criteria.getPowerRequirement();
14903ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood        if ((criteriaPower != Criteria.NO_REQUIREMENT) &&
15003ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood            (criteriaPower < mPowerRequirement)) {
15103ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood            return false;
15203ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood        }
15303ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood        if (criteria.isAltitudeRequired() && !mSupportsAltitude) {
15403ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood            return false;
15503ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood        }
15603ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood        if (criteria.isSpeedRequired() && !mSupportsSpeed) {
15703ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood            return false;
15803ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood        }
15903ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood        if (criteria.isBearingRequired() && !mSupportsBearing) {
16003ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood            return false;
16103ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood        }
16203ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood        return true;
16303ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood    }
16403ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood
1657ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    public void setLocation(Location l) {
1667ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood        mLocation.set(l);
1677ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood        mHasLocation = true;
16815e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood        try {
169a4903f254b4711c8fc0ac5f7e3d605f4dce34f35Mike Lockwood            mLocationManager.reportLocation(mLocation, false);
17015e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood        } catch (RemoteException e) {
17115e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood            Log.e(TAG, "RemoteException calling reportLocation");
17215e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood        }
1737ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    }
1747ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood
1757ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    public void clearLocation() {
1767ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood        mHasLocation = false;
1777ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    }
1787ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood
1797ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    public void setStatus(int status, Bundle extras, long updateTime) {
1807ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood        mStatus = status;
1817ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood        mStatusUpdateTime = updateTime;
1827ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood        mExtras.clear();
1837ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood        if (extras != null) {
1847ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood            mExtras.putAll(extras);
1857ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood        }
1867ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood        mHasStatus = true;
1877ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    }
1887ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood
1897ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    public void clearStatus() {
1907ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood        mHasStatus = false;
1914e50b78bda9cd58be61581d2886c88ff6348a1c1Mike Lockwood        mStatusUpdateTime = 0;
1927ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    }
1937ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood
1943c8fbdf5dd19fad0b3006557716ee1026d7d5899Fred Fettinger    public String getInternalState() {
1953c8fbdf5dd19fad0b3006557716ee1026d7d5899Fred Fettinger        return null;
1963c8fbdf5dd19fad0b3006557716ee1026d7d5899Fred Fettinger    }
1973c8fbdf5dd19fad0b3006557716ee1026d7d5899Fred Fettinger
19815e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood    public void enableLocationTracking(boolean enable) {
19915e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood    }
20015e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood
20103ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood    public boolean requestSingleShotFix() {
20203ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood        return false;
20303ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood    }
20403ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood
2057e9f4eb2608148436cef36c9969bf8a599b39e72Dianne Hackborn    public void setMinTime(long minTime, WorkSource ws) {
20615e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood    }
20715e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood
20803d246779ea65fc2bd10d0b4f32620f45211133aMike Lockwood    public void updateNetworkState(int state, NetworkInfo info) {
20915e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood    }
21015e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood
211fd6e5f0dda50e113db4ccc55338b6c4f09da37a4Mike Lockwood    public void updateLocation(Location location) {
212fd6e5f0dda50e113db4ccc55338b6c4f09da37a4Mike Lockwood    }
213fd6e5f0dda50e113db4ccc55338b6c4f09da37a4Mike Lockwood
21415e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood    public boolean sendExtraCommand(String command, Bundle extras) {
21515e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood        return false;
21615e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood    }
21715e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood
21815e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood    public void addListener(int uid) {
21915e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood    }
22015e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood
22115e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood    public void removeListener(int uid) {
22215e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood    }
22315e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood
2247ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    public void dump(PrintWriter pw, String prefix) {
22515e3d0f082d551f8819fbe4b0d502cc108627876Mike Lockwood        pw.println(prefix + mName);
2267ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood        pw.println(prefix + "mHasLocation=" + mHasLocation);
2277ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood        pw.println(prefix + "mLocation:");
2287ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood        mLocation.dump(new PrintWriterPrinter(pw), prefix + "  ");
2297ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood        pw.println(prefix + "mHasStatus=" + mHasStatus);
2307ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood        pw.println(prefix + "mStatus=" + mStatus);
2317ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood        pw.println(prefix + "mStatusUpdateTime=" + mStatusUpdateTime);
2327ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood        pw.println(prefix + "mExtras=" + mExtras);
2337ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood    }
2347ec434e2e179776d75c8a4da66dcfd2ee630c5d8Mike Lockwood}
235