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