1f9a274c9b8578dda6afeda422bff18b1577028b9destradaa/* 2f9a274c9b8578dda6afeda422bff18b1577028b9destradaa * Copyright (C) 2014 The Android Open Source Project 3f9a274c9b8578dda6afeda422bff18b1577028b9destradaa * 4f9a274c9b8578dda6afeda422bff18b1577028b9destradaa * Licensed under the Apache License, Version 2.0 (the "License"); 5f9a274c9b8578dda6afeda422bff18b1577028b9destradaa * you may not use this file except in compliance with the License. 6f9a274c9b8578dda6afeda422bff18b1577028b9destradaa * You may obtain a copy of the License at 7f9a274c9b8578dda6afeda422bff18b1577028b9destradaa * 8f9a274c9b8578dda6afeda422bff18b1577028b9destradaa * http://www.apache.org/licenses/LICENSE-2.0 9f9a274c9b8578dda6afeda422bff18b1577028b9destradaa * 10f9a274c9b8578dda6afeda422bff18b1577028b9destradaa * Unless required by applicable law or agreed to in writing, software 11f9a274c9b8578dda6afeda422bff18b1577028b9destradaa * distributed under the License is distributed on an "AS IS" BASIS, 12f9a274c9b8578dda6afeda422bff18b1577028b9destradaa * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f9a274c9b8578dda6afeda422bff18b1577028b9destradaa * See the License for the specific language governing permissions and 14f9a274c9b8578dda6afeda422bff18b1577028b9destradaa * limitations under the License. 15f9a274c9b8578dda6afeda422bff18b1577028b9destradaa */ 16f9a274c9b8578dda6afeda422bff18b1577028b9destradaa 17f9a274c9b8578dda6afeda422bff18b1577028b9destradaapackage android.hardware.location; 18f9a274c9b8578dda6afeda422bff18b1577028b9destradaa 19c4e1e59561884afc2c71b4b52697f62bd6b38f99destradaaimport android.annotation.SystemApi; 20f9a274c9b8578dda6afeda422bff18b1577028b9destradaaimport android.location.Location; 21f9a274c9b8578dda6afeda422bff18b1577028b9destradaaimport android.os.Parcel; 22f9a274c9b8578dda6afeda422bff18b1577028b9destradaaimport android.os.Parcelable; 23f9a274c9b8578dda6afeda422bff18b1577028b9destradaa 24f9a274c9b8578dda6afeda422bff18b1577028b9destradaa/** 25f9a274c9b8578dda6afeda422bff18b1577028b9destradaa * A class that represents an event for each change in the state of a monitoring system. 26c4e1e59561884afc2c71b4b52697f62bd6b38f99destradaa * 27c4e1e59561884afc2c71b4b52697f62bd6b38f99destradaa * @hide 28f9a274c9b8578dda6afeda422bff18b1577028b9destradaa */ 29c4e1e59561884afc2c71b4b52697f62bd6b38f99destradaa@SystemApi 30f9a274c9b8578dda6afeda422bff18b1577028b9destradaapublic class GeofenceHardwareMonitorEvent implements Parcelable { 31f9a274c9b8578dda6afeda422bff18b1577028b9destradaa private final int mMonitoringType; 32f9a274c9b8578dda6afeda422bff18b1577028b9destradaa private final int mMonitoringStatus; 33f9a274c9b8578dda6afeda422bff18b1577028b9destradaa private final int mSourceTechnologies; 34f9a274c9b8578dda6afeda422bff18b1577028b9destradaa private final Location mLocation; 35f9a274c9b8578dda6afeda422bff18b1577028b9destradaa 36f9a274c9b8578dda6afeda422bff18b1577028b9destradaa public GeofenceHardwareMonitorEvent( 37f9a274c9b8578dda6afeda422bff18b1577028b9destradaa int monitoringType, 38f9a274c9b8578dda6afeda422bff18b1577028b9destradaa int monitoringStatus, 39f9a274c9b8578dda6afeda422bff18b1577028b9destradaa int sourceTechnologies, 40f9a274c9b8578dda6afeda422bff18b1577028b9destradaa Location location) { 41f9a274c9b8578dda6afeda422bff18b1577028b9destradaa mMonitoringType = monitoringType; 42f9a274c9b8578dda6afeda422bff18b1577028b9destradaa mMonitoringStatus = monitoringStatus; 43f9a274c9b8578dda6afeda422bff18b1577028b9destradaa mSourceTechnologies = sourceTechnologies; 44f9a274c9b8578dda6afeda422bff18b1577028b9destradaa mLocation = location; 45f9a274c9b8578dda6afeda422bff18b1577028b9destradaa } 46f9a274c9b8578dda6afeda422bff18b1577028b9destradaa 47f9a274c9b8578dda6afeda422bff18b1577028b9destradaa /** 48f9a274c9b8578dda6afeda422bff18b1577028b9destradaa * Returns the type of the monitoring system that has a change on its state. 49f9a274c9b8578dda6afeda422bff18b1577028b9destradaa */ 50f9a274c9b8578dda6afeda422bff18b1577028b9destradaa public int getMonitoringType() { 51f9a274c9b8578dda6afeda422bff18b1577028b9destradaa return mMonitoringType; 52f9a274c9b8578dda6afeda422bff18b1577028b9destradaa } 53f9a274c9b8578dda6afeda422bff18b1577028b9destradaa 54f9a274c9b8578dda6afeda422bff18b1577028b9destradaa /** 55f9a274c9b8578dda6afeda422bff18b1577028b9destradaa * Returns the new status associated with the monitoring system. 56f9a274c9b8578dda6afeda422bff18b1577028b9destradaa */ 57f9a274c9b8578dda6afeda422bff18b1577028b9destradaa public int getMonitoringStatus() { 58f9a274c9b8578dda6afeda422bff18b1577028b9destradaa return mMonitoringStatus; 59f9a274c9b8578dda6afeda422bff18b1577028b9destradaa } 60f9a274c9b8578dda6afeda422bff18b1577028b9destradaa 61f9a274c9b8578dda6afeda422bff18b1577028b9destradaa /** 62f9a274c9b8578dda6afeda422bff18b1577028b9destradaa * Returns the source technologies that the status is associated to. 63f9a274c9b8578dda6afeda422bff18b1577028b9destradaa */ 64f9a274c9b8578dda6afeda422bff18b1577028b9destradaa public int getSourceTechnologies() { 65f9a274c9b8578dda6afeda422bff18b1577028b9destradaa return mSourceTechnologies; 66f9a274c9b8578dda6afeda422bff18b1577028b9destradaa } 67f9a274c9b8578dda6afeda422bff18b1577028b9destradaa 68f9a274c9b8578dda6afeda422bff18b1577028b9destradaa /** 69f9a274c9b8578dda6afeda422bff18b1577028b9destradaa * Returns the last known location according to the monitoring system. 70f9a274c9b8578dda6afeda422bff18b1577028b9destradaa */ 71f9a274c9b8578dda6afeda422bff18b1577028b9destradaa public Location getLocation() { 72f9a274c9b8578dda6afeda422bff18b1577028b9destradaa return mLocation; 73f9a274c9b8578dda6afeda422bff18b1577028b9destradaa } 74f9a274c9b8578dda6afeda422bff18b1577028b9destradaa 75f9a274c9b8578dda6afeda422bff18b1577028b9destradaa public static final Creator<GeofenceHardwareMonitorEvent> CREATOR = 76f9a274c9b8578dda6afeda422bff18b1577028b9destradaa new Creator<GeofenceHardwareMonitorEvent>() { 77f9a274c9b8578dda6afeda422bff18b1577028b9destradaa @Override 78f9a274c9b8578dda6afeda422bff18b1577028b9destradaa public GeofenceHardwareMonitorEvent createFromParcel(Parcel source) { 79f9a274c9b8578dda6afeda422bff18b1577028b9destradaa ClassLoader classLoader = GeofenceHardwareMonitorEvent.class.getClassLoader(); 80f9a274c9b8578dda6afeda422bff18b1577028b9destradaa int monitoringType = source.readInt(); 81f9a274c9b8578dda6afeda422bff18b1577028b9destradaa int monitoringStatus = source.readInt(); 82f9a274c9b8578dda6afeda422bff18b1577028b9destradaa int sourceTechnologies = source.readInt(); 83f9a274c9b8578dda6afeda422bff18b1577028b9destradaa Location location = source.readParcelable(classLoader); 84f9a274c9b8578dda6afeda422bff18b1577028b9destradaa 85f9a274c9b8578dda6afeda422bff18b1577028b9destradaa return new GeofenceHardwareMonitorEvent( 86f9a274c9b8578dda6afeda422bff18b1577028b9destradaa monitoringType, 87f9a274c9b8578dda6afeda422bff18b1577028b9destradaa monitoringStatus, 88f9a274c9b8578dda6afeda422bff18b1577028b9destradaa sourceTechnologies, 89f9a274c9b8578dda6afeda422bff18b1577028b9destradaa location); 90f9a274c9b8578dda6afeda422bff18b1577028b9destradaa } 91f9a274c9b8578dda6afeda422bff18b1577028b9destradaa 92f9a274c9b8578dda6afeda422bff18b1577028b9destradaa @Override 93f9a274c9b8578dda6afeda422bff18b1577028b9destradaa public GeofenceHardwareMonitorEvent[] newArray(int size) { 94f9a274c9b8578dda6afeda422bff18b1577028b9destradaa return new GeofenceHardwareMonitorEvent[size]; 95f9a274c9b8578dda6afeda422bff18b1577028b9destradaa } 96f9a274c9b8578dda6afeda422bff18b1577028b9destradaa }; 97f9a274c9b8578dda6afeda422bff18b1577028b9destradaa 98f9a274c9b8578dda6afeda422bff18b1577028b9destradaa @Override 99f9a274c9b8578dda6afeda422bff18b1577028b9destradaa public int describeContents() { 100f9a274c9b8578dda6afeda422bff18b1577028b9destradaa return 0; 101f9a274c9b8578dda6afeda422bff18b1577028b9destradaa } 102f9a274c9b8578dda6afeda422bff18b1577028b9destradaa 103f9a274c9b8578dda6afeda422bff18b1577028b9destradaa @Override 104f9a274c9b8578dda6afeda422bff18b1577028b9destradaa public void writeToParcel(Parcel parcel, int flags) { 105f9a274c9b8578dda6afeda422bff18b1577028b9destradaa parcel.writeInt(mMonitoringType); 106f9a274c9b8578dda6afeda422bff18b1577028b9destradaa parcel.writeInt(mMonitoringStatus); 107f9a274c9b8578dda6afeda422bff18b1577028b9destradaa parcel.writeInt(mSourceTechnologies); 108f9a274c9b8578dda6afeda422bff18b1577028b9destradaa parcel.writeParcelable(mLocation, flags); 109f9a274c9b8578dda6afeda422bff18b1577028b9destradaa } 110f9a274c9b8578dda6afeda422bff18b1577028b9destradaa 111f9a274c9b8578dda6afeda422bff18b1577028b9destradaa @Override 112f9a274c9b8578dda6afeda422bff18b1577028b9destradaa public String toString() { 113f9a274c9b8578dda6afeda422bff18b1577028b9destradaa return String.format( 114f9a274c9b8578dda6afeda422bff18b1577028b9destradaa "GeofenceHardwareMonitorEvent: type=%d, status=%d, sources=%d, location=%s", 115f9a274c9b8578dda6afeda422bff18b1577028b9destradaa mMonitoringType, 116f9a274c9b8578dda6afeda422bff18b1577028b9destradaa mMonitoringStatus, 117f9a274c9b8578dda6afeda422bff18b1577028b9destradaa mSourceTechnologies, 118f9a274c9b8578dda6afeda422bff18b1577028b9destradaa mLocation); 119f9a274c9b8578dda6afeda422bff18b1577028b9destradaa } 120f9a274c9b8578dda6afeda422bff18b1577028b9destradaa} 121