1 /**
2  * Copyright (C) 2014 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
5  * use this file except in compliance with the License. You may obtain a copy
6  * of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13  * License for the specific language governing permissions and limitations
14  * under the License.
15  */
16 package android.app.usage;
17 
18 import android.content.res.Configuration;
19 import android.os.Parcel;
20 import android.os.Parcelable;
21 
22 /**
23  * Represents the usage statistics of a device {@link android.content.res.Configuration} for a
24  * specific time range.
25  */
26 public final class ConfigurationStats implements Parcelable {
27 
28     /**
29      * {@hide}
30      */
31     public Configuration mConfiguration;
32 
33     /**
34      * {@hide}
35      */
36     public long mBeginTimeStamp;
37 
38     /**
39      * {@hide}
40      */
41     public long mEndTimeStamp;
42 
43     /**
44      * {@hide}
45      */
46     public long mLastTimeActive;
47 
48     /**
49      * {@hide}
50      */
51     public long mTotalTimeActive;
52 
53     /**
54      * {@hide}
55      */
56     public int mActivationCount;
57 
58     /**
59      * {@hide}
60      */
ConfigurationStats()61     public ConfigurationStats() {
62     }
63 
ConfigurationStats(ConfigurationStats stats)64     public ConfigurationStats(ConfigurationStats stats) {
65         mConfiguration = stats.mConfiguration;
66         mBeginTimeStamp = stats.mBeginTimeStamp;
67         mEndTimeStamp = stats.mEndTimeStamp;
68         mLastTimeActive = stats.mLastTimeActive;
69         mTotalTimeActive = stats.mTotalTimeActive;
70         mActivationCount = stats.mActivationCount;
71     }
72 
getConfiguration()73     public Configuration getConfiguration() {
74         return mConfiguration;
75     }
76 
77     /**
78      * Get the beginning of the time range this {@link ConfigurationStats} represents,
79      * measured in milliseconds since the epoch.
80      * <p/>
81      * See {@link System#currentTimeMillis()}.
82      */
getFirstTimeStamp()83     public long getFirstTimeStamp() {
84         return mBeginTimeStamp;
85     }
86 
87     /**
88      * Get the end of the time range this {@link ConfigurationStats} represents,
89      * measured in milliseconds since the epoch.
90      * <p/>
91      * See {@link System#currentTimeMillis()}.
92      */
getLastTimeStamp()93     public long getLastTimeStamp() {
94         return mEndTimeStamp;
95     }
96 
97     /**
98      * Get the last time this configuration was active, measured in milliseconds since the epoch.
99      * <p/>
100      * See {@link System#currentTimeMillis()}.
101      */
getLastTimeActive()102     public long getLastTimeActive() {
103         return mLastTimeActive;
104     }
105 
106     /**
107      * Get the total time this configuration was active, measured in milliseconds.
108      */
getTotalTimeActive()109     public long getTotalTimeActive() {
110         return mTotalTimeActive;
111     }
112 
113     /**
114      * Get the number of times this configuration was active.
115      */
getActivationCount()116     public int getActivationCount() {
117         return mActivationCount;
118     }
119 
120     @Override
describeContents()121     public int describeContents() {
122         return 0;
123     }
124 
125     @Override
writeToParcel(Parcel dest, int flags)126     public void writeToParcel(Parcel dest, int flags) {
127         if (mConfiguration != null) {
128             dest.writeInt(1);
129             mConfiguration.writeToParcel(dest, flags);
130         } else {
131             dest.writeInt(0);
132         }
133 
134         dest.writeLong(mBeginTimeStamp);
135         dest.writeLong(mEndTimeStamp);
136         dest.writeLong(mLastTimeActive);
137         dest.writeLong(mTotalTimeActive);
138         dest.writeInt(mActivationCount);
139     }
140 
141     public static final Creator<ConfigurationStats> CREATOR = new Creator<ConfigurationStats>() {
142         @Override
143         public ConfigurationStats createFromParcel(Parcel source) {
144             ConfigurationStats stats = new ConfigurationStats();
145             if (source.readInt() != 0) {
146                 stats.mConfiguration = Configuration.CREATOR.createFromParcel(source);
147             }
148             stats.mBeginTimeStamp = source.readLong();
149             stats.mEndTimeStamp = source.readLong();
150             stats.mLastTimeActive = source.readLong();
151             stats.mTotalTimeActive = source.readLong();
152             stats.mActivationCount = source.readInt();
153             return stats;
154         }
155 
156         @Override
157         public ConfigurationStats[] newArray(int size) {
158             return new ConfigurationStats[size];
159         }
160     };
161 }
162