Merge "[IT02] Expose system api to report radio power state"
This commit is contained in:
@@ -6976,12 +6976,14 @@ package android.os {
|
|||||||
method @NonNull @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public android.os.connectivity.WifiBatteryStats getWifiBatteryStats();
|
method @NonNull @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public android.os.connectivity.WifiBatteryStats getWifiBatteryStats();
|
||||||
method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportFullWifiLockAcquiredFromSource(@NonNull android.os.WorkSource);
|
method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportFullWifiLockAcquiredFromSource(@NonNull android.os.WorkSource);
|
||||||
method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportFullWifiLockReleasedFromSource(@NonNull android.os.WorkSource);
|
method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportFullWifiLockReleasedFromSource(@NonNull android.os.WorkSource);
|
||||||
|
method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportMobileRadioPowerState(boolean, int) throws java.lang.RuntimeException;
|
||||||
method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiBatchedScanStartedFromSource(@NonNull android.os.WorkSource, @IntRange(from=0) int);
|
method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiBatchedScanStartedFromSource(@NonNull android.os.WorkSource, @IntRange(from=0) int);
|
||||||
method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiBatchedScanStoppedFromSource(@NonNull android.os.WorkSource);
|
method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiBatchedScanStoppedFromSource(@NonNull android.os.WorkSource);
|
||||||
method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiMulticastDisabled(@NonNull android.os.WorkSource);
|
method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiMulticastDisabled(@NonNull android.os.WorkSource);
|
||||||
method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiMulticastEnabled(@NonNull android.os.WorkSource);
|
method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiMulticastEnabled(@NonNull android.os.WorkSource);
|
||||||
method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiOff();
|
method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiOff();
|
||||||
method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiOn();
|
method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiOn();
|
||||||
|
method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiRadioPowerState(boolean, int) throws java.lang.RuntimeException;
|
||||||
method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiRssiChanged(@IntRange(from=0xffffff81, to=0) int);
|
method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiRssiChanged(@IntRange(from=0xffffff81, to=0) int);
|
||||||
method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiScanStartedFromSource(@NonNull android.os.WorkSource);
|
method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiScanStartedFromSource(@NonNull android.os.WorkSource);
|
||||||
method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiScanStoppedFromSource(@NonNull android.os.WorkSource);
|
method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportWifiScanStoppedFromSource(@NonNull android.os.WorkSource);
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import android.annotation.SystemService;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.connectivity.CellularBatteryStats;
|
import android.os.connectivity.CellularBatteryStats;
|
||||||
import android.os.connectivity.WifiBatteryStats;
|
import android.os.connectivity.WifiBatteryStats;
|
||||||
|
import android.telephony.DataConnectionRealTimeInfo;
|
||||||
|
|
||||||
import com.android.internal.app.IBatteryStats;
|
import com.android.internal.app.IBatteryStats;
|
||||||
|
|
||||||
@@ -376,4 +377,50 @@ public final class BatteryStatsManager {
|
|||||||
e.rethrowFromSystemServer();
|
e.rethrowFromSystemServer();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Indicates that the radio power state has changed.
|
||||||
|
*
|
||||||
|
* @param isActive indicates if the mobile radio is powered.
|
||||||
|
* @param uid Uid of this event. For the active state it represents the uid that was responsible
|
||||||
|
* for waking the radio, or -1 if the system was responsible for waking the radio.
|
||||||
|
* For inactive state, the UID should always be -1.
|
||||||
|
* @throws RuntimeException if there are binder remote-invocation errors.
|
||||||
|
*/
|
||||||
|
@RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS)
|
||||||
|
public void reportMobileRadioPowerState(boolean isActive, int uid) throws RuntimeException {
|
||||||
|
try {
|
||||||
|
mBatteryStats.noteMobileRadioPowerState(getDataConnectionPowerState(isActive),
|
||||||
|
SystemClock.elapsedRealtimeNanos(), uid);
|
||||||
|
} catch (RemoteException e) {
|
||||||
|
e.rethrowFromSystemServer();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Indicates that the wifi power state has changed.
|
||||||
|
*
|
||||||
|
* @param isActive indicates if the wifi radio is powered.
|
||||||
|
* @param uid Uid of this event. For the active state it represents the uid that was responsible
|
||||||
|
* for waking the radio, or -1 if the system was responsible for waking the radio.
|
||||||
|
* For inactive state, the UID should always be -1.
|
||||||
|
* @throws RuntimeException if there are binder remote-invocation errors.
|
||||||
|
*/
|
||||||
|
@RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS)
|
||||||
|
public void reportWifiRadioPowerState(boolean isActive, int uid) throws RuntimeException {
|
||||||
|
try {
|
||||||
|
mBatteryStats.noteWifiRadioPowerState(getDataConnectionPowerState(isActive),
|
||||||
|
SystemClock.elapsedRealtimeNanos(), uid);
|
||||||
|
} catch (RemoteException e) {
|
||||||
|
e.rethrowFromSystemServer();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int getDataConnectionPowerState(boolean isActive) {
|
||||||
|
// TODO: DataConnectionRealTimeInfo is under telephony package but the constants are used
|
||||||
|
// for both Wifi and mobile. It would make more sense to separate the constants to a generic
|
||||||
|
// class or move it to generic package.
|
||||||
|
return isActive ? DataConnectionRealTimeInfo.DC_POWER_STATE_HIGH
|
||||||
|
: DataConnectionRealTimeInfo.DC_POWER_STATE_LOW;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user