1e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy/* 2e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * Copyright (C) 2012 The Android Open Source Project 3e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * 4e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * Licensed under the Apache License, Version 2.0 (the "License"); 5e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * you may not use this file except in compliance with the License. 6e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * You may obtain a copy of the License at 7e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * 8e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * http://www.apache.org/licenses/LICENSE-2.0 9e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * 10e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * Unless required by applicable law or agreed to in writing, software 11e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * distributed under the License is distributed on an "AS IS" BASIS, 12e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * See the License for the specific language governing permissions and 14e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * limitations under the License. 15e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy */ 16e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 17a1db574036c9bc2d397b69f8200594027e1fff16Romain Guypackage com.android.internal.location; 18a1db574036c9bc2d397b69f8200594027e1fff16Romain Guy 197d7b5490a0b0763e831b31bc11f17d8159b5914aRomain Guyimport java.util.ArrayList; 207d7b5490a0b0763e831b31bc11f17d8159b5914aRomain Guyimport java.util.List; 21e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 22e4ac2d6b5723c95e648c489b187ddde449452c13Patrick Dubroyimport android.location.LocationRequest; 23e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guyimport android.os.Parcel; 24e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guyimport android.os.Parcelable; 25e5e0c50f7dfaccc220725c5595080e921ffda1e4Romain Guyimport android.util.TimeUtils; 264406345cd62d3687ce590c357854472f7f906e6cJesse Hall 27deba785f122a47915756ffd991f5540d952cf937Romain Guy/** @hide */ 28e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guypublic final class ProviderRequest implements Parcelable { 298f0095cd33558e9cc8a440047908e53b68906f5fRomain Guy /** Location reporting is requested (true) */ 308f0095cd33558e9cc8a440047908e53b68906f5fRomain Guy public boolean reportLocation = false; 31ce0537b80087a6225273040a987414b1dd081aa0Romain Guy 32c7d53494f1fbd9f9d74af89053ff9fdb1ccbac6cRomain Guy /** The smallest requested interval */ 33f6a11b8a9e25ff9861bbba19251bea84d8a5daf2Romain Guy public long interval = Long.MAX_VALUE; 34c7d53494f1fbd9f9d74af89053ff9fdb1ccbac6cRomain Guy 35079ba2c85b15e882629b8d188f5fbdb42f7f8eeaRomain Guy /** 36a1db574036c9bc2d397b69f8200594027e1fff16Romain Guy * A more detailed set of requests. 3761c8c9c5b2006d18e9310b6521c65b36ffe75ce4Romain Guy * <p>Location Providers can optionally use this to 3885bf02fc16784d935fb9eebfa9cb20fe46ff7951Romain Guy * fine tune location updates, for example when there 39e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * is a high power slow interval request and a 40b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy * low power fast interval request. 416c319ca1275c8db892c39b48fc54864c949f9171Romain Guy */ 4285bf02fc16784d935fb9eebfa9cb20fe46ff7951Romain Guy public List<LocationRequest> locationRequests = new ArrayList<LocationRequest>(); 4306f96e2652e4855b6520ad9dd70583677605b79aRomain Guy 44db1938e0e6ef816e228c815adccebd5cb05f2aa8Romain Guy public ProviderRequest() { } 459d5316e3f56d138504565ff311145ac01621dff4Romain Guy 4685bf02fc16784d935fb9eebfa9cb20fe46ff7951Romain Guy public static final Parcelable.Creator<ProviderRequest> CREATOR = 47b02d0ca5553300063e4332192632312600caf4b9Fabrice Di Meglio new Parcelable.Creator<ProviderRequest>() { 48e8e62a4a032a80409114a37908b5f18ab0080848Romain Guy @Override 49e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy public ProviderRequest createFromParcel(Parcel in) { 50e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy ProviderRequest request = new ProviderRequest(); 519d5316e3f56d138504565ff311145ac01621dff4Romain Guy request.reportLocation = in.readInt() == 1; 529d5316e3f56d138504565ff311145ac01621dff4Romain Guy request.interval = in.readLong(); 53163935113919a184122b8b3bd672ef08c8df65dcRomain Guy int count = in.readInt(); 54163935113919a184122b8b3bd672ef08c8df65dcRomain Guy for (int i = 0; i < count; i++) { 55163935113919a184122b8b3bd672ef08c8df65dcRomain Guy request.locationRequests.add(LocationRequest.CREATOR.createFromParcel(in)); 56163935113919a184122b8b3bd672ef08c8df65dcRomain Guy } 57163935113919a184122b8b3bd672ef08c8df65dcRomain Guy return request; 58163935113919a184122b8b3bd672ef08c8df65dcRomain Guy } 59163935113919a184122b8b3bd672ef08c8df65dcRomain Guy @Override 60bdb801ca993bcccbf2a4c2401d1720c3fa523777Romain Guy public ProviderRequest[] newArray(int size) { 61bdb801ca993bcccbf2a4c2401d1720c3fa523777Romain Guy return new ProviderRequest[size]; 62bdb801ca993bcccbf2a4c2401d1720c3fa523777Romain Guy } 63bdb801ca993bcccbf2a4c2401d1720c3fa523777Romain Guy }; 64bdb801ca993bcccbf2a4c2401d1720c3fa523777Romain Guy 65e2d345ea67e2960b37bfdc0fc8626d1bfa747404Romain Guy @Override 66bdb801ca993bcccbf2a4c2401d1720c3fa523777Romain Guy public int describeContents() { 67bdb801ca993bcccbf2a4c2401d1720c3fa523777Romain Guy return 0; 68bdb801ca993bcccbf2a4c2401d1720c3fa523777Romain Guy } 695baa3a62a97544669fba6d65a11c07f252e654ddSteve Block 70bdb801ca993bcccbf2a4c2401d1720c3fa523777Romain Guy @Override 71bdb801ca993bcccbf2a4c2401d1720c3fa523777Romain Guy public void writeToParcel(Parcel parcel, int flags) { 72bdb801ca993bcccbf2a4c2401d1720c3fa523777Romain Guy parcel.writeInt(reportLocation ? 1 : 0); 73e2d345ea67e2960b37bfdc0fc8626d1bfa747404Romain Guy parcel.writeLong(interval); 74a168d7372132d6c87835878794b6ed43d0d282fdRomain Guy parcel.writeInt(locationRequests.size()); 75a168d7372132d6c87835878794b6ed43d0d282fdRomain Guy for (LocationRequest request : locationRequests) { 76a168d7372132d6c87835878794b6ed43d0d282fdRomain Guy request.writeToParcel(parcel, flags); 77a168d7372132d6c87835878794b6ed43d0d282fdRomain Guy } 789d5316e3f56d138504565ff311145ac01621dff4Romain Guy } 799d5316e3f56d138504565ff311145ac01621dff4Romain Guy 809d5316e3f56d138504565ff311145ac01621dff4Romain Guy @Override 817ae7ac48aa2b53453c9805075171ecd5bcafd7deRomain Guy public String toString() { 829d5316e3f56d138504565ff311145ac01621dff4Romain Guy StringBuilder s = new StringBuilder(); 839d5316e3f56d138504565ff311145ac01621dff4Romain Guy s.append("ProviderRequest["); 84e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy if (reportLocation) { 857d7b5490a0b0763e831b31bc11f17d8159b5914aRomain Guy s.append("ON"); 867d7b5490a0b0763e831b31bc11f17d8159b5914aRomain Guy s.append(" interval="); 877d7b5490a0b0763e831b31bc11f17d8159b5914aRomain Guy TimeUtils.formatDuration(interval, s); 887d7b5490a0b0763e831b31bc11f17d8159b5914aRomain Guy } else { 897d7b5490a0b0763e831b31bc11f17d8159b5914aRomain Guy s.append("OFF"); 907d7b5490a0b0763e831b31bc11f17d8159b5914aRomain Guy } 917d7b5490a0b0763e831b31bc11f17d8159b5914aRomain Guy s.append(']'); 927d7b5490a0b0763e831b31bc11f17d8159b5914aRomain Guy return s.toString(); 937d7b5490a0b0763e831b31bc11f17d8159b5914aRomain Guy } 947d7b5490a0b0763e831b31bc11f17d8159b5914aRomain Guy} 957d7b5490a0b0763e831b31bc11f17d8159b5914aRomain Guy