| /* |
| * Copyright (C) 2013 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.os.Parcel; |
| import android.os.Parcelable; |
| |
| /** |
| * A data class representing a set of options to configure batching sessions. |
| * @hide |
| */ |
| public class FusedBatchOptions implements Parcelable { |
| private volatile long mPeriodInNS = 0; |
| private volatile int mSourcesToUse = 0; |
| private volatile int mFlags = 0; |
| |
| // the default value is set to request fixes at no cost |
| private volatile double mMaxPowerAllocationInMW = 0; |
| // If non-zero can be used for power savings by throttling location when device hasn't moved. |
| private volatile float mSmallestDisplacementMeters = 0; |
| |
| /* |
| * Getters and setters for properties needed to hold the options. |
| */ |
| public void setMaxPowerAllocationInMW(double value) { |
| mMaxPowerAllocationInMW = value; |
| } |
| |
| public double getMaxPowerAllocationInMW() { |
| return mMaxPowerAllocationInMW; |
| } |
| |
| public void setPeriodInNS(long value) { |
| mPeriodInNS = value; |
| } |
| |
| public long getPeriodInNS() { |
| return mPeriodInNS; |
| } |
| |
| public void setSmallestDisplacementMeters(float value) { |
| mSmallestDisplacementMeters = value; |
| } |
| |
| public float getSmallestDisplacementMeters() { |
| return mSmallestDisplacementMeters; |
| } |
| |
| public void setSourceToUse(int source) { |
| mSourcesToUse |= source; |
| } |
| |
| public void resetSourceToUse(int source) { |
| mSourcesToUse &= ~source; |
| } |
| |
| public boolean isSourceToUseSet(int source) { |
| return (mSourcesToUse & source) != 0; |
| } |
| |
| public int getSourcesToUse() { |
| return mSourcesToUse; |
| } |
| |
| public void setFlag(int flag) { |
| mFlags |= flag; |
| } |
| |
| public void resetFlag(int flag) { |
| mFlags &= ~flag; |
| } |
| |
| public boolean isFlagSet(int flag) { |
| return (mFlags & flag) != 0; |
| } |
| |
| public int getFlags() { |
| return mFlags; |
| } |
| |
| /** |
| * Definition of enum flag sets needed by this class. |
| * Such values need to be kept in sync with the ones in fused_location.h |
| */ |
| public static final class SourceTechnologies { |
| public static int GNSS = 1<<0; |
| public static int WIFI = 1<<1; |
| public static int SENSORS = 1<<2; |
| public static int CELL = 1<<3; |
| public static int BLUETOOTH = 1<<4; |
| } |
| |
| public static final class BatchFlags { |
| // follow the definitions to the letter in fused_location.h |
| public static int WAKEUP_ON_FIFO_FULL = 0x0000001; |
| public static int CALLBACK_ON_LOCATION_FIX =0x0000002; |
| } |
| |
| /* |
| * Method definitions to support Parcelable operations. |
| */ |
| public static final Parcelable.Creator<FusedBatchOptions> CREATOR = |
| new Parcelable.Creator<FusedBatchOptions>() { |
| @Override |
| public FusedBatchOptions createFromParcel(Parcel parcel) { |
| FusedBatchOptions options = new FusedBatchOptions(); |
| options.setMaxPowerAllocationInMW(parcel.readDouble()); |
| options.setPeriodInNS(parcel.readLong()); |
| options.setSourceToUse(parcel.readInt()); |
| options.setFlag(parcel.readInt()); |
| options.setSmallestDisplacementMeters(parcel.readFloat()); |
| return options; |
| } |
| |
| @Override |
| public FusedBatchOptions[] newArray(int size) { |
| return new FusedBatchOptions[size]; |
| } |
| }; |
| |
| @Override |
| public int describeContents() { |
| return 0; |
| } |
| |
| @Override |
| public void writeToParcel(Parcel parcel, int flags) { |
| parcel.writeDouble(mMaxPowerAllocationInMW); |
| parcel.writeLong(mPeriodInNS); |
| parcel.writeInt(mSourcesToUse); |
| parcel.writeInt(mFlags); |
| parcel.writeFloat(mSmallestDisplacementMeters); |
| } |
| } |