Hook in to the new radio API to find out when the radio is active and use that to track its state in batter stats. We also still have the data being tracked from the kernel's emulation, and continue to use that if we don't get data from the radio. Currently this monitoring is turned off until some issues in the radio can be fixed that are providing bad data. Also add a new API to get estimated drain and charge times. Change-Id: Ifc4900fabb8f848f9cda361dce698664ea75f175
140 lines
3.7 KiB
Java
140 lines
3.7 KiB
Java
/*
|
|
* Copyright (C) 2014 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.telephony;
|
|
|
|
import android.os.Parcel;
|
|
import android.os.Parcelable;
|
|
|
|
/**
|
|
* Data connection real time information
|
|
*
|
|
* TODO: How to handle multiple subscriptions?
|
|
* @hide
|
|
*/
|
|
public class DataConnectionRealTimeInfo implements Parcelable {
|
|
private long mTime; // Time the info was collected since boot in nanos;
|
|
|
|
public static int DC_POWER_STATE_LOW = 1;
|
|
public static int DC_POWER_STATE_MEDIUM = 2;
|
|
public static int DC_POWER_STATE_HIGH = 3;
|
|
public static int DC_POWER_STATE_UNKNOWN = Integer.MAX_VALUE;
|
|
|
|
private int mDcPowerState; // DC_POWER_STATE_[LOW | MEDIUM | HIGH | UNKNOWN]
|
|
|
|
/**
|
|
* Constructor
|
|
*
|
|
* @hide
|
|
*/
|
|
public DataConnectionRealTimeInfo(long time, int dcPowerState) {
|
|
mTime = time;
|
|
mDcPowerState = dcPowerState;
|
|
}
|
|
|
|
/**
|
|
* Constructor
|
|
*
|
|
* @hide
|
|
*/
|
|
public DataConnectionRealTimeInfo() {
|
|
mTime = Long.MAX_VALUE;
|
|
mDcPowerState = DC_POWER_STATE_UNKNOWN;
|
|
}
|
|
|
|
/**
|
|
* Construct a PreciseCallState object from the given parcel.
|
|
*/
|
|
private DataConnectionRealTimeInfo(Parcel in) {
|
|
mTime = in.readLong();
|
|
mDcPowerState = in.readInt();
|
|
}
|
|
|
|
/**
|
|
* @return time the information was collected or Long.MAX_VALUE if unknown
|
|
*/
|
|
public long getTime() {
|
|
return mTime;
|
|
}
|
|
|
|
/**
|
|
* @return DC_POWER_STATE_[LOW | MEDIUM | HIGH | UNKNOWN]
|
|
*/
|
|
public int getDcPowerState() {
|
|
return mDcPowerState;
|
|
}
|
|
|
|
@Override
|
|
public int describeContents() {
|
|
return 0;
|
|
}
|
|
|
|
@Override
|
|
public void writeToParcel(Parcel out, int flags) {
|
|
out.writeLong(mTime);
|
|
out.writeInt(mDcPowerState);
|
|
}
|
|
|
|
public static final Parcelable.Creator<DataConnectionRealTimeInfo> CREATOR
|
|
= new Parcelable.Creator<DataConnectionRealTimeInfo>() {
|
|
|
|
@Override
|
|
public DataConnectionRealTimeInfo createFromParcel(Parcel in) {
|
|
return new DataConnectionRealTimeInfo(in);
|
|
}
|
|
|
|
@Override
|
|
public DataConnectionRealTimeInfo[] newArray(int size) {
|
|
return new DataConnectionRealTimeInfo[size];
|
|
}
|
|
};
|
|
|
|
@Override
|
|
public int hashCode() {
|
|
final long prime = 17;
|
|
long result = 1;
|
|
result = (prime * result) + mTime;
|
|
result += (prime * result) + mDcPowerState;
|
|
return (int)result;
|
|
}
|
|
|
|
@Override
|
|
public boolean equals(Object obj) {
|
|
if (this == obj) {
|
|
return true;
|
|
}
|
|
if (obj == null) {
|
|
return false;
|
|
}
|
|
if (getClass() != obj.getClass()) {
|
|
return false;
|
|
}
|
|
DataConnectionRealTimeInfo other = (DataConnectionRealTimeInfo) obj;
|
|
return (mTime == other.mTime)
|
|
&& (mDcPowerState == other.mDcPowerState);
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
StringBuffer sb = new StringBuffer();
|
|
|
|
sb.append("mTime=").append(mTime);
|
|
sb.append(" mDcPowerState=").append(mDcPowerState);
|
|
|
|
return sb.toString();
|
|
}
|
|
}
|