summaryrefslogtreecommitdiffstats
path: root/core/java/android/os/BatteryProperty.java
blob: 27dad4f241731a9fdab26ccb345e930a86363ab2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
/* Copyright 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.os;

import android.os.Parcel;
import android.os.Parcelable;

/**
 * Battery properties that may be queried using
 * {@link BatteryManager#getProperty
 * BatteryManager.getProperty()}
 */
public class BatteryProperty implements Parcelable {
    /*
     * Battery property identifiers.  These must match the values in
     * frameworks/native/include/batteryservice/BatteryService.h
     */
    /** Battery capacity in microampere-hours, as an integer. */
    public static final int CHARGE_COUNTER = 1;

    /**
     * Instantaneous battery current in microamperes, as an integer.  Positive
     * values indicate net current entering the battery from a charge source,
     * negative values indicate net current discharging from the battery.
     */
    public static final int CURRENT_NOW = 2;

    /**
     * Average battery current in microamperes, as an integer.  Positive
     * values indicate net current entering the battery from a charge source,
     * negative values indicate net current discharging from the battery.
     * The time period over which the average is computed may depend on the
     * fuel gauge hardware and its configuration.
     */
    public static final int CURRENT_AVERAGE = 3;

    /**
     * Remaining battery capacity as an integer percentage of total capacity
     * (with no fractional part).
     */
    public static final int CAPACITY = 4;

    /**
     * Battery remaining energy in nanowatt-hours, as a long integer.
     */
    public static final int ENERGY_COUNTER = 5;

    private long mValueLong;

    /**
     * @hide
     */
    public BatteryProperty() {
        mValueLong = Long.MIN_VALUE;
    }

    /**
     * Return the value of a property of integer type previously queried
     * via {@link BatteryManager#getProperty
     * BatteryManager.getProperty()}.  If the platform does
     * not provide the property queried, this value will be
     * Integer.MIN_VALUE.
     *
     * @return The queried property value, or Integer.MIN_VALUE if not supported.
     */
    public int getInt() {
        return (int)mValueLong;
    }

    /**
     * Return the value of a property of long type previously queried
     * via {@link BatteryManager#getProperty
     * BatteryManager.getProperty()}.  If the platform does
     * not provide the property queried, this value will be
     * Long.MIN_VALUE.
     *
     * @return The queried property value, or Long.MIN_VALUE if not supported.
     */
    public long getLong() {
        return mValueLong;
    }
    /*
     * Parcel read/write code must be kept in sync with
     * frameworks/native/services/batteryservice/BatteryProperty.cpp
     */

    private BatteryProperty(Parcel p) {
        readFromParcel(p);
    }

    public void readFromParcel(Parcel p) {
        mValueLong = p.readLong();
    }

    public void writeToParcel(Parcel p, int flags) {
        p.writeLong(mValueLong);
    }

    public static final Parcelable.Creator<BatteryProperty> CREATOR
        = new Parcelable.Creator<BatteryProperty>() {
        public BatteryProperty createFromParcel(Parcel p) {
            return new BatteryProperty(p);
        }

        public BatteryProperty[] newArray(int size) {
            return new BatteryProperty[size];
        }
    };

    public int describeContents() {
        return 0;
    }
}