19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.location; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcel; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcelable; 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * A class indicating the application criteria for selecting a 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * location provider. Providers maybe ordered according to accuracy, 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * power usage, ability to report altitude, speed, 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * and bearing, and monetary cost. 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class Criteria implements Parcelable { 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * A constant indicating that the application does not choose to 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * place requirement on a particular feature. 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int NO_REQUIREMENT = 0; 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * A constant indicating a low power requirement. 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int POWER_LOW = 1; 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * A constant indicating a medium power requirement. 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int POWER_MEDIUM = 2; 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * A constant indicating a high power requirement. 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int POWER_HIGH = 3; 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * A constant indicating a finer location accuracy requirement 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int ACCURACY_FINE = 1; 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * A constant indicating an approximate accuracy requirement 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int ACCURACY_COARSE = 2; 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6003ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood /** 6103ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood * A constant indicating a low location accuracy requirement 6203ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood * - may be used for horizontal, altitude, speed or bearing accuracy. 638900c32986eb9b06f30ecbe6709857fd2cc7b576Mike Lockwood * For horizontal and vertical position this corresponds roughly to 648900c32986eb9b06f30ecbe6709857fd2cc7b576Mike Lockwood * an accuracy of greater than 500 meters. 6503ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood */ 6603ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood public static final int ACCURACY_LOW = 1; 6703ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood 6803ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood /** 6903ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood * A constant indicating a medium accuracy requirement 708900c32986eb9b06f30ecbe6709857fd2cc7b576Mike Lockwood * - currently used only for horizontal accuracy. 718900c32986eb9b06f30ecbe6709857fd2cc7b576Mike Lockwood * For horizontal position this corresponds roughly to to an accuracy 728900c32986eb9b06f30ecbe6709857fd2cc7b576Mike Lockwood * of between 100 and 500 meters. 7303ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood */ 7403ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood public static final int ACCURACY_MEDIUM = 2; 7503ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood 7603ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood /** 7703ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood * a constant indicating a high accuracy requirement 7803ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood * - may be used for horizontal, altitude, speed or bearing accuracy. 798900c32986eb9b06f30ecbe6709857fd2cc7b576Mike Lockwood * For horizontal and vertical position this corresponds roughly to 808900c32986eb9b06f30ecbe6709857fd2cc7b576Mike Lockwood * an accuracy of less than 100 meters. 8103ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood */ 8203ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood public static final int ACCURACY_HIGH = 3; 8303ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood 8403ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood private int mHorizontalAccuracy = NO_REQUIREMENT; 8503ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood private int mVerticalAccuracy = NO_REQUIREMENT; 8603ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood private int mSpeedAccuracy = NO_REQUIREMENT; 8703ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood private int mBearingAccuracy = NO_REQUIREMENT; 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int mPowerRequirement = NO_REQUIREMENT; 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private boolean mAltitudeRequired = false; 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private boolean mBearingRequired = false; 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private boolean mSpeedRequired = false; 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private boolean mCostAllowed = false; 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Constructs a new Criteria object. The new object will have no 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * requirements on accuracy, power, or response time; will not 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * require altitude, speed, or bearing; and will not allow monetary 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * cost. 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Criteria() {} 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Constructs a new Criteria object that is a copy of the given criteria. 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Criteria(Criteria criteria) { 10603ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood mHorizontalAccuracy = criteria.mHorizontalAccuracy; 10703ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood mVerticalAccuracy = criteria.mVerticalAccuracy; 10803ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood mSpeedAccuracy = criteria.mSpeedAccuracy; 10903ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood mBearingAccuracy = criteria.mBearingAccuracy; 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mPowerRequirement = criteria.mPowerRequirement; 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mAltitudeRequired = criteria.mAltitudeRequired; 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mBearingRequired = criteria.mBearingRequired; 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mSpeedRequired = criteria.mSpeedRequired; 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mCostAllowed = criteria.mCostAllowed; 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 11803ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood * Indicates the desired horizontal accuracy (latitude and longitude). 11903ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood * Accuracy may be {@link #ACCURACY_LOW}, {@link #ACCURACY_MEDIUM}, 1208900c32986eb9b06f30ecbe6709857fd2cc7b576Mike Lockwood * {@link #ACCURACY_HIGH} or {@link #NO_REQUIREMENT}. 12103ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood * More accurate location may consume more power and may take longer. 12203ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood * 12303ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood * @throws IllegalArgumentException if accuracy is not one of the supported constants 12403ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood */ 12503ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood public void setHorizontalAccuracy(int accuracy) { 1268900c32986eb9b06f30ecbe6709857fd2cc7b576Mike Lockwood if (accuracy < NO_REQUIREMENT || accuracy > ACCURACY_HIGH) { 12703ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood throw new IllegalArgumentException("accuracy=" + accuracy); 12803ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood } 12903ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood mHorizontalAccuracy = accuracy; 13003ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood } 13103ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood 13203ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood /** 13303ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood * Returns a constant indicating the desired horizontal accuracy (latitude and longitude). 13403ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood * Accuracy may be {@link #ACCURACY_LOW}, {@link #ACCURACY_MEDIUM}, 1358900c32986eb9b06f30ecbe6709857fd2cc7b576Mike Lockwood * {@link #ACCURACY_HIGH} or {@link #NO_REQUIREMENT}. 13603ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood */ 13703ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood public int getHorizontalAccuracy() { 13803ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood return mHorizontalAccuracy; 13903ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood } 14003ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood 14103ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood /** 14203ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood * Indicates the desired vertical accuracy (altitude). 14303ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood * Accuracy may be {@link #ACCURACY_LOW}, {@link #ACCURACY_MEDIUM}, 1448900c32986eb9b06f30ecbe6709857fd2cc7b576Mike Lockwood * {@link #ACCURACY_HIGH} or {@link #NO_REQUIREMENT}. 14503ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood * More accurate location may consume more power and may take longer. 14603ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood * 14703ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood * @throws IllegalArgumentException if accuracy is not one of the supported constants 14803ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood */ 14903ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood public void setVerticalAccuracy(int accuracy) { 1508900c32986eb9b06f30ecbe6709857fd2cc7b576Mike Lockwood if (accuracy < NO_REQUIREMENT || accuracy > ACCURACY_HIGH) { 15103ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood throw new IllegalArgumentException("accuracy=" + accuracy); 15203ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood } 15303ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood mVerticalAccuracy = accuracy; 15403ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood } 15503ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood 15603ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood /** 15703ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood * Returns a constant indicating the desired vertical accuracy (altitude). 1588900c32986eb9b06f30ecbe6709857fd2cc7b576Mike Lockwood * Accuracy may be {@link #ACCURACY_LOW}, {@link #ACCURACY_HIGH}, 1598900c32986eb9b06f30ecbe6709857fd2cc7b576Mike Lockwood * or {@link #NO_REQUIREMENT}. 16003ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood */ 16103ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood public int getVerticalAccuracy() { 16203ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood return mVerticalAccuracy; 16303ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood } 16403ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood 16503ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood /** 16603ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood * Indicates the desired speed accuracy. 1678900c32986eb9b06f30ecbe6709857fd2cc7b576Mike Lockwood * Accuracy may be {@link #ACCURACY_LOW}, {@link #ACCURACY_HIGH}, 1688900c32986eb9b06f30ecbe6709857fd2cc7b576Mike Lockwood * or {@link #NO_REQUIREMENT}. 16903ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood * More accurate location may consume more power and may take longer. 17003ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood * 17103ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood * @throws IllegalArgumentException if accuracy is not one of the supported constants 17203ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood */ 17303ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood public void setSpeedAccuracy(int accuracy) { 1748900c32986eb9b06f30ecbe6709857fd2cc7b576Mike Lockwood if (accuracy < NO_REQUIREMENT || accuracy > ACCURACY_HIGH) { 17503ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood throw new IllegalArgumentException("accuracy=" + accuracy); 17603ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood } 17703ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood mSpeedAccuracy = accuracy; 17803ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood } 17903ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood 18003ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood /** 18103ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood * Returns a constant indicating the desired speed accuracy 1828900c32986eb9b06f30ecbe6709857fd2cc7b576Mike Lockwood * Accuracy may be {@link #ACCURACY_LOW}, {@link #ACCURACY_HIGH}, 1838900c32986eb9b06f30ecbe6709857fd2cc7b576Mike Lockwood * or {@link #NO_REQUIREMENT}. 18403ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood */ 18503ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood public int getSpeedAccuracy() { 18603ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood return mSpeedAccuracy; 18703ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood } 18803ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood 18903ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood /** 19003ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood * Indicates the desired bearing accuracy. 1918900c32986eb9b06f30ecbe6709857fd2cc7b576Mike Lockwood * Accuracy may be {@link #ACCURACY_LOW}, {@link #ACCURACY_HIGH}, 1928900c32986eb9b06f30ecbe6709857fd2cc7b576Mike Lockwood * or {@link #NO_REQUIREMENT}. 19303ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood * More accurate location may consume more power and may take longer. 19403ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood * 19503ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood * @throws IllegalArgumentException if accuracy is not one of the supported constants 19603ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood */ 19703ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood public void setBearingAccuracy(int accuracy) { 1988900c32986eb9b06f30ecbe6709857fd2cc7b576Mike Lockwood if (accuracy < NO_REQUIREMENT || accuracy > ACCURACY_HIGH) { 19903ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood throw new IllegalArgumentException("accuracy=" + accuracy); 20003ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood } 20103ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood mBearingAccuracy = accuracy; 20203ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood } 20303ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood 20403ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood /** 20503ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood * Returns a constant indicating the desired bearing accuracy. 2068900c32986eb9b06f30ecbe6709857fd2cc7b576Mike Lockwood * Accuracy may be {@link #ACCURACY_LOW}, {@link #ACCURACY_HIGH}, 2078900c32986eb9b06f30ecbe6709857fd2cc7b576Mike Lockwood * or {@link #NO_REQUIREMENT}. 20803ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood */ 20903ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood public int getBearingAccuracy() { 21003ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood return mBearingAccuracy; 21103ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood } 21203ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood 21303ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood /** 2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Indicates the desired accuracy for latitude and longitude. Accuracy 2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * may be {@link #ACCURACY_FINE} if desired location 2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is fine, else it can be {@link #ACCURACY_COARSE}. 21703ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood * More accurate location may consume more power and may take longer. 2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 21903ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood * @throws IllegalArgumentException if accuracy is not one of the supported constants 2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setAccuracy(int accuracy) { 22203ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood if (accuracy < NO_REQUIREMENT || accuracy > ACCURACY_COARSE) { 2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throw new IllegalArgumentException("accuracy=" + accuracy); 2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 22503ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood if (accuracy == ACCURACY_FINE) { 2268900c32986eb9b06f30ecbe6709857fd2cc7b576Mike Lockwood mHorizontalAccuracy = ACCURACY_HIGH; 22703ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood } else { 22803ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood mHorizontalAccuracy = ACCURACY_LOW; 22903ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood } 2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns a constant indicating desired accuracy of location 2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Accuracy may be {@link #ACCURACY_FINE} if desired location 2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is fine, else it can be {@link #ACCURACY_COARSE}. 2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getAccuracy() { 23803ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood if (mHorizontalAccuracy >= ACCURACY_HIGH) { 23903ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood return ACCURACY_FINE; 24003ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood } else { 24103ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood return ACCURACY_COARSE; 24203ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood } 2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Indicates the desired maximum power level. The level parameter 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * must be one of NO_REQUIREMENT, POWER_LOW, POWER_MEDIUM, or 2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * POWER_HIGH. 2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setPowerRequirement(int level) { 2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (level < NO_REQUIREMENT || level > POWER_HIGH) { 2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throw new IllegalArgumentException("level=" + level); 2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mPowerRequirement = level; 2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns a constant indicating the desired power requirement. The 2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * returned 2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getPowerRequirement() { 2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mPowerRequirement; 2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Indicates whether the provider is allowed to incur monetary cost. 2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setCostAllowed(boolean costAllowed) { 2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mCostAllowed = costAllowed; 2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns whether the provider is allowed to incur monetary cost. 2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean isCostAllowed() { 2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mCostAllowed; 2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Indicates whether the provider must provide altitude information. 2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Not all fixes are guaranteed to contain such information. 2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setAltitudeRequired(boolean altitudeRequired) { 2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mAltitudeRequired = altitudeRequired; 2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns whether the provider must provide altitude information. 2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Not all fixes are guaranteed to contain such information. 2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean isAltitudeRequired() { 2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mAltitudeRequired; 2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Indicates whether the provider must provide speed information. 2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Not all fixes are guaranteed to contain such information. 2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setSpeedRequired(boolean speedRequired) { 3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mSpeedRequired = speedRequired; 3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns whether the provider must provide speed information. 3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Not all fixes are guaranteed to contain such information. 3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean isSpeedRequired() { 3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mSpeedRequired; 3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Indicates whether the provider must provide bearing information. 3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Not all fixes are guaranteed to contain such information. 3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setBearingRequired(boolean bearingRequired) { 3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mBearingRequired = bearingRequired; 3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns whether the provider must provide bearing information. 3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Not all fixes are guaranteed to contain such information. 3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean isBearingRequired() { 3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mBearingRequired; 3259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Parcelable.Creator<Criteria> CREATOR = 3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new Parcelable.Creator<Criteria>() { 3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Criteria createFromParcel(Parcel in) { 3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Criteria c = new Criteria(); 33103ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood c.mHorizontalAccuracy = in.readInt(); 33203ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood c.mVerticalAccuracy = in.readInt(); 33303ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood c.mSpeedAccuracy = in.readInt(); 33403ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood c.mBearingAccuracy = in.readInt(); 3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project c.mPowerRequirement = in.readInt(); 3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project c.mAltitudeRequired = in.readInt() != 0; 3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project c.mBearingRequired = in.readInt() != 0; 3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project c.mSpeedRequired = in.readInt() != 0; 3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project c.mCostAllowed = in.readInt() != 0; 3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return c; 3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Criteria[] newArray(int size) { 3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new Criteria[size]; 3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int describeContents() { 3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 0; 3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void writeToParcel(Parcel parcel, int flags) { 35303ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood parcel.writeInt(mHorizontalAccuracy); 35403ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood parcel.writeInt(mVerticalAccuracy); 35503ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood parcel.writeInt(mSpeedAccuracy); 35603ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwood parcel.writeInt(mBearingAccuracy); 3579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project parcel.writeInt(mPowerRequirement); 3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project parcel.writeInt(mAltitudeRequired ? 1 : 0); 3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project parcel.writeInt(mBearingRequired ? 1 : 0); 3609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project parcel.writeInt(mSpeedRequired ? 1 : 0); 3619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project parcel.writeInt(mCostAllowed ? 1 : 0); 3629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 364