summaryrefslogtreecommitdiffstats
path: root/location/java/com/android/internal
diff options
context:
space:
mode:
Diffstat (limited to 'location/java/com/android/internal')
-rw-r--r--location/java/com/android/internal/location/DummyLocationProvider.java180
-rw-r--r--location/java/com/android/internal/location/ILocationProvider.aidl44
-rw-r--r--location/java/com/android/internal/location/ProviderProperties.aidl19
-rw-r--r--location/java/com/android/internal/location/ProviderProperties.java152
-rw-r--r--location/java/com/android/internal/location/ProviderRequest.aidl19
-rw-r--r--location/java/com/android/internal/location/ProviderRequest.java94
6 files changed, 328 insertions, 180 deletions
diff --git a/location/java/com/android/internal/location/DummyLocationProvider.java b/location/java/com/android/internal/location/DummyLocationProvider.java
deleted file mode 100644
index 3122960..0000000
--- a/location/java/com/android/internal/location/DummyLocationProvider.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * Copyright (C) 2007 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 com.android.internal.location;
-
-import android.location.ILocationManager;
-import android.location.LocationProvider;
-
-/**
- * A stub implementation of LocationProvider used by LocationManager.
- * A DummyLocationProvider may be queried to determine the properties
- * of the provider whcih it shadows, but does not actually provide location
- * data.
- *
- * {@hide}
- */
-public class DummyLocationProvider extends LocationProvider {
-
- private static final String TAG = "DummyLocationProvider";
-
- String mName;
- boolean mRequiresNetwork;
- boolean mRequiresSatellite;
- boolean mRequiresCell;
- boolean mHasMonetaryCost;
- boolean mSupportsAltitude;
- boolean mSupportsSpeed;
- boolean mSupportsBearing;
- int mPowerRequirement;
- int mAccuracy;
-
- public DummyLocationProvider(String name, ILocationManager service) {
- super(name, service);
- }
-
- public void setRequiresNetwork(boolean requiresNetwork) {
- mRequiresNetwork = requiresNetwork;
- }
-
- public void setRequiresSatellite(boolean requiresSatellite) {
- mRequiresSatellite = requiresSatellite;
- }
-
- public void setRequiresCell(boolean requiresCell) {
- mRequiresCell = requiresCell;
- }
-
- public void setHasMonetaryCost(boolean hasMonetaryCost) {
- mHasMonetaryCost = hasMonetaryCost;
- }
-
- public void setSupportsAltitude(boolean supportsAltitude) {
- mSupportsAltitude = supportsAltitude;
- }
-
- public void setSupportsSpeed(boolean supportsSpeed) {
- mSupportsSpeed = supportsSpeed;
- }
-
- public void setSupportsBearing(boolean supportsBearing) {
- mSupportsBearing = supportsBearing;
- }
-
- public void setPowerRequirement(int powerRequirement) {
- mPowerRequirement = powerRequirement;
- }
-
- public void setAccuracy(int accuracy) {
- mAccuracy = accuracy;
- }
-
- /**
- * Returns true if the provider requires access to a
- * data network (e.g., the Internet), false otherwise.
- */
- @Override
- public boolean requiresNetwork() {
- return mRequiresNetwork;
- }
-
- /**
- * Returns true if the provider requires access to a
- * satellite-based positioning system (e.g., GPS), false
- * otherwise.
- */
- @Override
- public boolean requiresSatellite() {
- return mRequiresSatellite;
- }
-
- /**
- * Returns true if the provider requires access to an appropriate
- * cellular network (e.g., to make use of cell tower IDs), false
- * otherwise.
- */
- @Override
- public boolean requiresCell() {
- return mRequiresCell;
- }
-
- /**
- * Returns true if the use of this provider may result in a
- * monetary charge to the user, false if use is free. It is up to
- * each provider to give accurate information.
- */
- @Override
- public boolean hasMonetaryCost() {
- return mHasMonetaryCost;
- }
-
- /**
- * Returns true if the provider is able to provide altitude
- * information, false otherwise. A provider that reports altitude
- * under most circumstances but may occassionally not report it
- * should return true.
- */
- @Override
- public boolean supportsAltitude() {
- return mSupportsAltitude;
- }
-
- /**
- * Returns true if the provider is able to provide speed
- * information, false otherwise. A provider that reports speed
- * under most circumstances but may occassionally not report it
- * should return true.
- */
- @Override
- public boolean supportsSpeed() {
- return mSupportsSpeed;
- }
-
- /**
- * Returns true if the provider is able to provide bearing
- * information, false otherwise. A provider that reports bearing
- * under most circumstances but may occassionally not report it
- * should return true.
- */
- @Override
- public boolean supportsBearing() {
- return mSupportsBearing;
- }
-
- /**
- * Returns the power requirement for this provider.
- *
- * @return the power requirement for this provider, as one of the
- * constants Criteria.POWER_REQUIREMENT_*.
- */
- @Override
- public int getPowerRequirement() {
- return mPowerRequirement;
- }
-
- /**
- * Returns a constant describing the horizontal accuracy returned
- * by this provider.
- *
- * @return the horizontal accuracy for this provider, as one of the
- * constants Criteria.ACCURACY_*.
- */
- @Override
- public int getAccuracy() {
- return mAccuracy;
- }
-}
-
diff --git a/location/java/com/android/internal/location/ILocationProvider.aidl b/location/java/com/android/internal/location/ILocationProvider.aidl
new file mode 100644
index 0000000..39c2d92
--- /dev/null
+++ b/location/java/com/android/internal/location/ILocationProvider.aidl
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2009 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 com.android.internal.location;
+
+import android.location.Location;
+import android.net.NetworkInfo;
+import android.os.Bundle;
+import android.os.WorkSource;
+
+import com.android.internal.location.ProviderProperties;
+import com.android.internal.location.ProviderRequest;
+
+/**
+ * Binder interface for services that implement location providers.
+ * <p>Use {@link LocationProviderBase} as a helper to implement this
+ * interface.
+ * @hide
+ */
+interface ILocationProvider {
+ void enable();
+ void disable();
+
+ void setRequest(in ProviderRequest request, in WorkSource ws);
+
+ // --- deprecated (but still supported) ---
+ ProviderProperties getProperties();
+ int getStatus(out Bundle extras);
+ long getStatusUpdateTime();
+ boolean sendExtraCommand(String command, inout Bundle extras);
+}
diff --git a/location/java/com/android/internal/location/ProviderProperties.aidl b/location/java/com/android/internal/location/ProviderProperties.aidl
new file mode 100644
index 0000000..b901444
--- /dev/null
+++ b/location/java/com/android/internal/location/ProviderProperties.aidl
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2012, 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 com.android.internal.location;
+
+parcelable ProviderProperties;
diff --git a/location/java/com/android/internal/location/ProviderProperties.java b/location/java/com/android/internal/location/ProviderProperties.java
new file mode 100644
index 0000000..08aed80
--- /dev/null
+++ b/location/java/com/android/internal/location/ProviderProperties.java
@@ -0,0 +1,152 @@
+/*
+ * Copyright (C) 2012 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 com.android.internal.location;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * A Parcelable containing (legacy) location provider properties.
+ * This object is just used inside the framework and system services.
+ * @hide
+ */
+public final class ProviderProperties implements Parcelable {
+ /**
+ * True if provider requires access to a
+ * data network (e.g., the Internet), false otherwise.
+ */
+ public final boolean mRequiresNetwork;
+
+ /**
+ * True if the provider requires access to a
+ * satellite-based positioning system (e.g., GPS), false
+ * otherwise.
+ */
+ public final boolean mRequiresSatellite;
+
+ /**
+ * True if the provider requires access to an appropriate
+ * cellular network (e.g., to make use of cell tower IDs), false
+ * otherwise.
+ */
+ public final boolean mRequiresCell;
+
+ /**
+ * True if the use of this provider may result in a
+ * monetary charge to the user, false if use is free. It is up to
+ * each provider to give accurate information. Cell (network) usage
+ * is not considered monetary cost.
+ */
+ public final boolean mHasMonetaryCost;
+
+ /**
+ * True if the provider is able to provide altitude
+ * information, false otherwise. A provider that reports altitude
+ * under most circumstances but may occasionally not report it
+ * should return true.
+ */
+ public final boolean mSupportsAltitude;
+
+ /**
+ * True if the provider is able to provide speed
+ * information, false otherwise. A provider that reports speed
+ * under most circumstances but may occasionally not report it
+ * should return true.
+ */
+ public final boolean mSupportsSpeed;
+
+ /**
+ * True if the provider is able to provide bearing
+ * information, false otherwise. A provider that reports bearing
+ * under most circumstances but may occasionally not report it
+ * should return true.
+ */
+ public final boolean mSupportsBearing;
+
+ /**
+ * Power requirement for this provider.
+ *
+ * @return the power requirement for this provider, as one of the
+ * constants Criteria.POWER_*.
+ */
+ public final int mPowerRequirement;
+
+ /**
+ * Constant describing the horizontal accuracy returned
+ * by this provider.
+ *
+ * @return the horizontal accuracy for this provider, as one of the
+ * constants Criteria.ACCURACY_COARSE or Criteria.ACCURACY_FINE
+ */
+ public final int mAccuracy;
+
+ public ProviderProperties(boolean mRequiresNetwork,
+ boolean mRequiresSatellite, boolean mRequiresCell, boolean mHasMonetaryCost,
+ boolean mSupportsAltitude, boolean mSupportsSpeed, boolean mSupportsBearing,
+ int mPowerRequirement, int mAccuracy) {
+ this.mRequiresNetwork = mRequiresNetwork;
+ this.mRequiresSatellite = mRequiresSatellite;
+ this.mRequiresCell = mRequiresCell;
+ this.mHasMonetaryCost = mHasMonetaryCost;
+ this.mSupportsAltitude = mSupportsAltitude;
+ this.mSupportsSpeed = mSupportsSpeed;
+ this.mSupportsBearing = mSupportsBearing;
+ this.mPowerRequirement = mPowerRequirement;
+ this.mAccuracy = mAccuracy;
+ }
+
+ public static final Parcelable.Creator<ProviderProperties> CREATOR =
+ new Parcelable.Creator<ProviderProperties>() {
+ @Override
+ public ProviderProperties createFromParcel(Parcel in) {
+ boolean requiresNetwork = in.readInt() == 1;
+ boolean requiresSatellite = in.readInt() == 1;
+ boolean requiresCell = in.readInt() == 1;
+ boolean hasMonetaryCost = in.readInt() == 1;
+ boolean supportsAltitude = in.readInt() == 1;
+ boolean supportsSpeed = in.readInt() == 1;
+ boolean supportsBearing = in.readInt() == 1;
+ int powerRequirement = in.readInt();
+ int accuracy = in.readInt();
+ return new ProviderProperties(requiresNetwork, requiresSatellite,
+ requiresCell, hasMonetaryCost, supportsAltitude, supportsSpeed, supportsBearing,
+ powerRequirement, accuracy);
+ }
+ @Override
+ public ProviderProperties[] newArray(int size) {
+ return new ProviderProperties[size];
+ }
+ };
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel parcel, int flags) {
+ parcel.writeInt(mRequiresNetwork ? 1 : 0);
+ parcel.writeInt(mRequiresSatellite ? 1 : 0);
+ parcel.writeInt(mRequiresCell ? 1 : 0);
+ parcel.writeInt(mHasMonetaryCost ? 1 : 0);
+ parcel.writeInt(mSupportsAltitude ? 1 : 0);
+ parcel.writeInt(mSupportsSpeed ? 1 : 0);
+ parcel.writeInt(mSupportsSpeed ? 1 : 0);
+ parcel.writeInt(mPowerRequirement);
+ parcel.writeInt(mAccuracy);
+ }
+}
diff --git a/location/java/com/android/internal/location/ProviderRequest.aidl b/location/java/com/android/internal/location/ProviderRequest.aidl
new file mode 100644
index 0000000..4e1ea95
--- /dev/null
+++ b/location/java/com/android/internal/location/ProviderRequest.aidl
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2012 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 com.android.internal.location;
+
+parcelable ProviderRequest;
diff --git a/location/java/com/android/internal/location/ProviderRequest.java b/location/java/com/android/internal/location/ProviderRequest.java
new file mode 100644
index 0000000..25c51f5
--- /dev/null
+++ b/location/java/com/android/internal/location/ProviderRequest.java
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2012 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 com.android.internal.location;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import android.location.LocationRequest;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.util.TimeUtils;
+
+/** @hide */
+public final class ProviderRequest implements Parcelable {
+ /** Location reporting is requested (true) */
+ public boolean reportLocation = false;
+
+ /** The smallest requested interval */
+ public long interval = Long.MAX_VALUE;
+
+ /**
+ * A more detailed set of requests.
+ * <p>Location Providers can optionally use this to
+ * fine tune location updates, for example when there
+ * is a high power slow interval request and a
+ * low power fast interval request.
+ */
+ public List<LocationRequest> locationRequests = null;
+
+ public ProviderRequest() {
+ }
+
+ public static final Parcelable.Creator<ProviderRequest> CREATOR =
+ new Parcelable.Creator<ProviderRequest>() {
+ @Override
+ public ProviderRequest createFromParcel(Parcel in) {
+ ProviderRequest request = new ProviderRequest();
+ request.reportLocation = in.readInt() == 1;
+ request.interval = in.readLong();
+ int count = in.readInt();
+ request.locationRequests = new ArrayList<LocationRequest>(count);
+ for (int i = 0; i < count; i++) {
+ request.locationRequests.add(LocationRequest.CREATOR.createFromParcel(in));
+ }
+ return request;
+ }
+ @Override
+ public ProviderRequest[] newArray(int size) {
+ return new ProviderRequest[size];
+ }
+ };
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel parcel, int flags) {
+ parcel.writeInt(reportLocation ? 1 : 0);
+ parcel.writeLong(interval);
+ parcel.writeParcelableArray(locationRequests.toArray(
+ new LocationRequest[locationRequests.size()]), 0);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder s = new StringBuilder();
+ s.append("ProviderRequest[");
+ if (reportLocation) {
+ s.append("ON");
+ s.append(" interval=");
+ TimeUtils.formatDuration(interval, s);
+ } else {
+ s.append("OFF");
+ }
+ s.append(']');
+ return s.toString();
+ }
+}