1 /* 2 * Copyright (C) 2012 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.internal.location; 18 19 import android.os.Parcel; 20 import android.os.Parcelable; 21 22 /** 23 * A Parcelable containing (legacy) location provider properties. 24 * This object is just used inside the framework and system services. 25 * @hide 26 */ 27 public final class ProviderProperties implements Parcelable { 28 /** 29 * True if provider requires access to a 30 * data network (e.g., the Internet), false otherwise. 31 */ 32 public final boolean mRequiresNetwork; 33 34 /** 35 * True if the provider requires access to a 36 * satellite-based positioning system (e.g., GPS), false 37 * otherwise. 38 */ 39 public final boolean mRequiresSatellite; 40 41 /** 42 * True if the provider requires access to an appropriate 43 * cellular network (e.g., to make use of cell tower IDs), false 44 * otherwise. 45 */ 46 public final boolean mRequiresCell; 47 48 /** 49 * True if the use of this provider may result in a 50 * monetary charge to the user, false if use is free. It is up to 51 * each provider to give accurate information. Cell (network) usage 52 * is not considered monetary cost. 53 */ 54 public final boolean mHasMonetaryCost; 55 56 /** 57 * True if the provider is able to provide altitude 58 * information, false otherwise. A provider that reports altitude 59 * under most circumstances but may occasionally not report it 60 * should return true. 61 */ 62 public final boolean mSupportsAltitude; 63 64 /** 65 * True if the provider is able to provide speed 66 * information, false otherwise. A provider that reports speed 67 * under most circumstances but may occasionally not report it 68 * should return true. 69 */ 70 public final boolean mSupportsSpeed; 71 72 /** 73 * True if the provider is able to provide bearing 74 * information, false otherwise. A provider that reports bearing 75 * under most circumstances but may occasionally not report it 76 * should return true. 77 */ 78 public final boolean mSupportsBearing; 79 80 /** 81 * Power requirement for this provider. 82 * 83 * @return the power requirement for this provider, as one of the 84 * constants Criteria.POWER_*. 85 */ 86 public final int mPowerRequirement; 87 88 /** 89 * Constant describing the horizontal accuracy returned 90 * by this provider. 91 * 92 * @return the horizontal accuracy for this provider, as one of the 93 * constants Criteria.ACCURACY_COARSE or Criteria.ACCURACY_FINE 94 */ 95 public final int mAccuracy; 96 97 public ProviderProperties(boolean mRequiresNetwork, 98 boolean mRequiresSatellite, boolean mRequiresCell, boolean mHasMonetaryCost, 99 boolean mSupportsAltitude, boolean mSupportsSpeed, boolean mSupportsBearing, 100 int mPowerRequirement, int mAccuracy) { 101 this.mRequiresNetwork = mRequiresNetwork; 102 this.mRequiresSatellite = mRequiresSatellite; 103 this.mRequiresCell = mRequiresCell; 104 this.mHasMonetaryCost = mHasMonetaryCost; 105 this.mSupportsAltitude = mSupportsAltitude; 106 this.mSupportsSpeed = mSupportsSpeed; 107 this.mSupportsBearing = mSupportsBearing; 108 this.mPowerRequirement = mPowerRequirement; 109 this.mAccuracy = mAccuracy; 110 } 111 112 public static final Parcelable.Creator<ProviderProperties> CREATOR = 113 new Parcelable.Creator<ProviderProperties>() { 114 @Override 115 public ProviderProperties createFromParcel(Parcel in) { 116 boolean requiresNetwork = in.readInt() == 1; 117 boolean requiresSatellite = in.readInt() == 1; 118 boolean requiresCell = in.readInt() == 1; 119 boolean hasMonetaryCost = in.readInt() == 1; 120 boolean supportsAltitude = in.readInt() == 1; 121 boolean supportsSpeed = in.readInt() == 1; 122 boolean supportsBearing = in.readInt() == 1; 123 int powerRequirement = in.readInt(); 124 int accuracy = in.readInt(); 125 return new ProviderProperties(requiresNetwork, requiresSatellite, 126 requiresCell, hasMonetaryCost, supportsAltitude, supportsSpeed, supportsBearing, 127 powerRequirement, accuracy); 128 } 129 @Override 130 public ProviderProperties[] newArray(int size) { 131 return new ProviderProperties[size]; 132 } 133 }; 134 135 @Override 136 public int describeContents() { 137 return 0; 138 } 139 140 @Override 141 public void writeToParcel(Parcel parcel, int flags) { 142 parcel.writeInt(mRequiresNetwork ? 1 : 0); 143 parcel.writeInt(mRequiresSatellite ? 1 : 0); 144 parcel.writeInt(mRequiresCell ? 1 : 0); 145 parcel.writeInt(mHasMonetaryCost ? 1 : 0); 146 parcel.writeInt(mSupportsAltitude ? 1 : 0); 147 parcel.writeInt(mSupportsSpeed ? 1 : 0); 148 parcel.writeInt(mSupportsBearing ? 1 : 0); 149 parcel.writeInt(mPowerRequirement); 150 parcel.writeInt(mAccuracy); 151 } 152 } 153