Commit Graph

103 Commits

Author SHA1 Message Date
Lei Yu
63795b2f5c Log app versionCode in anomaly detection
Change-Id: Ie760a4156b14b739279aa398bd1d2b8485449e91
Fixes: 77919142
Test: RunSettingsRoboTests
2018-04-12 10:32:08 -07:00
Lei Yu
7d09e2ea68 Add method to check if app has launcher activity
This method should only used for system apps.

Change-Id: Id4109d8e223933269b8dae3aaa91b8a9186c527c
Fixes: 77477987
Test: RunSettingsRoboTests
2018-04-12 10:01:42 -07:00
Lei Yu
6c4c7ba0fe Add system app check for anomaly detection.
In this CL, don't blame system app in anomaly detection and also
add log for it.

Following CL will update it to also check whether this system app
has launch entry.

Bug: 77477987
Test: RunSettingsRoboTests
Change-Id: I97490b32bc42ec2f8e03ec2d82f7c8bf89f9c66f
2018-04-11 18:02:50 -07:00
Lei Yu
c5f5b18b22 Add NullPtrCheck when smearing in settings
This only happens in new device with broken power_profile.xml, in
which it doesn't have screen power model.

This CL catches the null pointer crash and log it.

Change-Id: Iac23e3a8fc51385bdb22979c4b59000319f6fd49
Fixes: 74617269
Test: RunSettingsRoboTests
2018-04-06 15:57:44 -07:00
hughchen
18ce28ed33 Change BatteryUtils.isLegacyApp() to isPreOApp()
Bug: 73792442
Test: RunSettingsRoboTests
      make -j40 RunSettingsRoboTests
Change-Id: I770030a8f38ec6156aa2a40f4c88ac9e0673751d
2018-03-20 01:44:43 +00:00
Lei Yu
8b148924de update "Last full charge" preference
When there is average time estimation, change it to "Full charge lasts
about" and also update the time.

Also update the BatteryInfo to return average time estimation even
though it is charging.

Bug: 73018395
Test: RunSettingsRoboTests
Change-Id: Ib22dadb5716e3034c60aeeb7768fdbf0cc86be0c
2018-03-19 13:18:27 -07:00
Salvador Martinez
db1efa3e03 Update BatteryInfo to include averageTimeToDischarge
This updates the Estimate data model class as well as the places
it is used to populate the new field when available.

Test: robotests
Bug: 74020365
Change-Id: Ibcecf933819f8b8cd8514205768569e9bd7d1517
(cherry picked from commit 453db0cdbc)
Merged-In: 453db0cdbc
2018-03-07 20:39:59 +00:00
jackqdyulei
457fb842eb Add special check for excessive bg anomaly
To check whether this app has battery usage more than x%

Bug: 72385333
Test: RunSettingsRoboTests
Change-Id: I87e6b01c866a053658f84ce3486120ae82963fd9
2018-02-23 10:12:05 -08:00
Salvador Martinez
408dc41228 Update copy for battery estimate related features
Many features are using the enhanced estimates but the copy for them
has gotten out of sync. This CL moves shared strings between Settings
and SysUI to SettingsLib and also updates features that use the
strings to have consistent behavior/text.

Test: Robotests
Bug: 65656091
Bug: 66909350
Bug: 67469159
Change-Id: Ie5ef1ed65429ca9805cff374f1439e5d61eb6591
2018-02-07 10:55:15 -08:00
jackqdyulei
0fb2d68f97 Add restrict app detail page
1. Move force standby action to BatteryUtils
2. Add click action for restricted preference(go to detail page)
3. Build app list in detail page using packageOps list

Bug: 71502850
Test: RunSettingsRoboTests
Change-Id: I1e6733e5402e7a854b07a8bbb43a86255276bfaa
2018-01-19 09:59:53 -08:00
jackqdyulei
ca102facf0 Add high usage battery tip
1. Add both model and detector
2. Move the screen usage method to BatteryUtils
so we could reuse it.
3. Add and update the tests

Bug: 70570352
Test: RunSettingsRoboTests

Change-Id: I6a7248d9d48ee8cb6fc2c18c8c225210d49b6bc9
2018-01-09 15:00:41 -08:00
Salvador Martinez
12e327608b Improve messaging for enhanced notifications
The message displayed in battery settings will now more accurately
reflect when an estimate is enhanced based on our updated
definition of what that means.

Test: robotests
Bug: 64833846
Change-Id: Id635d78d8f56d10253e22df2705af93f2693db70
2018-01-08 17:38:36 -08:00
jackqdyulei
0c6d7e744a Extract method getBatteryInfo() from loader
In battery tips, we need synchronized method to get batteryInfo.
This cl move the logic to BatteryUtils, then in battery tips we
could use this method directly.

Bug: 70570352
Test: robotest still pass
Change-Id: Id69349a25395ae472a9b3152c6f04127ee32c4e1
2017-12-19 16:30:56 -08:00
Michael Wachenschwanz
987711712c Add Foreground Service time to battery usage
Add foreground service time to foreground usage time of apps. This will
account for app usage that user is aware of but is not being displayed
on screen, such as playing music while screen is locked.

Change-Id: Ica9fe0819e46b50299eb2eab7f0483ea01441fb0
Fixes: 38313557
Test: RunSettingsRoboTests
2017-07-21 17:37:00 -07:00
jackqdyulei
114cf2a1a7 Never store battery stats for cache
In PowerUsageBase, it will store battery stats if it has a configuration
change, which will make BatteryStatsLoaderHelper never get the correct
battery stats because it uses Bundle.EMPTY as the bundle message.

This cl:
1. Remove the store action even though it is configuration change.
2. Always use null to get battery stats
3. Always start a battery status check in register()

Bug: 63658232
Test: RunSettingsRoboTests
Change-Id: Ifbf970c63378ed66dddcdae4d952b7d1fd84216a
2017-07-14 15:36:40 -07:00
jackqdyulei
bfc2b11b93 Update Anomaly detection framework
This cl make it could have multiple actions for each anomaly type.

This includes:
1. Add field "targetSdkVersion", "bgRestrictionEnabled" in Anomaly
2. Add new action which includes "force stop" and "background check"
3. Add "sdkVersion" and "bgRestrictionEnabled" method in BatteryUtils
4. Update BackgroundCheckAction to check sdkVersion first
5. Update serveral tests and add new test

Bug: 63037765
Test: RunSettingsRoboTests
Change-Id: Iea7a131ee57d501f7737ae4a3ba672d948d05cd8
2017-07-06 15:53:28 -07:00
TreeHugger Robot
55ad60d1ff Merge "Add util method to get battery stats" into oc-dr1-dev 2017-07-06 21:58:33 +00:00
Alex Kulesza
43d4fefb36 Make utility methods static.
BatteryUtils.convertUsToMs and .convertMsToUs should be static, and now
they are.

Bug: 63347148
Test: make RunSettingsRoboTests
Change-Id: If652e2d3e1260df9a933805d7da670fbb26b2c25
2017-07-05 18:53:22 -04:00
Matthew Fritze
bfe82cab89 Add util method to get battery stats
Bug:62271803
Test: make RunSettingsRoboTests
Change-Id: I91089c24c7cd5f7329be052c50859e049e70e9b1
2017-07-05 14:54:20 -07:00
TreeHugger Robot
96e774b7d7 Merge "Update the method about foreground time." into oc-dr1-dev 2017-07-05 20:38:52 +00:00
jackqdyulei
43cbee6914 Update the method about foreground time.
For now it uses MIN(STATE_TOP_TIME, FOREGROUND_ACTIVITY_TIME) and this
method is used in both display and screen smearing.

Bug: 63080621
Test: RunSettingsRoboTests
Change-Id: I2ca3109697aa66fae67d8b2f4f10c4d08bb99d59
2017-06-30 16:18:29 -07:00
Salvador Martinez
cc7c9603db Add BatteryInfo logging to settings
This Cl adds a few log statements to BatteryInfo to try
and determine what the bottleneck in the Battery Settings
Advanced page could be.

Test: robotests still pass
Bug: 62959645
Change-Id: I1ff712d97bc8be78873c63e187edbffa8e10cd21
2017-06-29 16:53:27 -07:00
TreeHugger Robot
33c9b7a111 Merge "Fix the getForegroundActivityTotalTimeMs" into oc-dr1-dev 2017-06-29 00:43:09 +00:00
TreeHugger Robot
9a30ceab83 Merge "Hide the IDLE in "app list"" into oc-dr1-dev 2017-06-28 19:38:20 +00:00
jackqdyulei
85e25e34fd Fix the getForegroundActivityTotalTimeMs
The parameter in timer should be microseconds, not milliseconds

Bug: 63073847
Test: RunSettingsRoboTests
Change-Id: I5e451aee9eb30815fbefe12c0bfdc85dff884b8e
2017-06-28 12:33:20 -07:00
jackqdyulei
10fa63e62c Hide the IDLE in "app list"
Also don't smear it.

Bug: 62423075
Test: RunSettingsRoboTests
Change-Id: I74072f9dde0dcf7b9a4abb05b86fe2102b618d6a
2017-06-27 17:31:09 -07:00
jackqdyulei
118e2baabe Fix the getForegroundActivityTotalTimeMs
It should return milliseconds, not microseconds time

Bug: 63073847
Test: RunSettingsRoboTests
Change-Id: Ib7ddb947646062fc50a40d300829389e0ac401ee
2017-06-27 16:49:14 -07:00
jackqdyulei
3d93fc16f4 Change the method to get foreground time.
This cl changes it to:
foregroundTime = MIN(topTime, foregroundActivityTime);

Bug: 62884954
Test: RunSettingsRoboTests
Change-Id: I236c18b19c4f06c5a6d018bc06ffb9862af51de2
2017-06-23 11:02:54 -07:00
jackqdyulei
9d0d6e4fcc Merge "Hide wifi and bt in battery settings" into oc-dev
am: 05777a7918

Change-Id: If676ec0119bebed800727f618225fd355e9da74f
2017-06-20 22:55:47 +00:00
jackqdyulei
d10608dfbb Hide wifi and bt in battery settings
Hide them in app usage list but don't smear them

Bug: 62787787
Test: RunSettingsRoboTests
Change-Id: I43c15ea8a2b32f293eb859f3fead8666e45674ef
2017-06-20 13:44:52 -07:00
jackqdyulei
72c3275a66 Refine Anomaly detail page
1. Fix the layout issue(title not vertical horizontal)
2. Add subtitle for anomaly

Bug: 36924669
Test: RunSettingsRoboTests
Change-Id: I9b3627f09bbe37b104644d203ff8924f0faaea47
2017-06-20 11:37:55 -07:00
jackqdyulei
e3e8bd6317 Refactor anomaly detection
This cl refactor it so:
1. AnomayLoader could create its own BatteryStatsHelper if needed.
2. AnomalyDetector could detect the anomaly with a target package name
3. Remove FeatureProvider in AnomalyLoader and use
AnomalyDetectionPolicy instead

With this cl, we could add anomaly detection to battery usage page
more easily.

Bug: 36924669
Test: RunSettingsRoboTests
Change-Id: I1ee09701de8b5c8855f44e447813760285794c89
2017-06-05 19:35:22 -07:00
Salvador Martinez
9cfa7720f4 Make BatterySettings Asynchronous and use enhanced estimate
this CL changes BatteryInfo methods to all use the async style
callback approach it had for one of the methods. Non-async methods
are now annotated to only be used in worker threads. BatteryInfo
can now be obtained via callback by calling one of the async
methods. Alternatively if there is a worker thread available
the synchronous methods similar to the old ones can be used.

The callback methods have all been changed so that they cascade to a
async method that takes all the required info as paremeters. This
will minimize the amount of churn in files that currently use
BatteryInfo.

A new loader was created that can be used to get BatteryInfo in
places that wish to get it. This loader is used in
PowerUsageSummary to get the BatteryInfo.

Test: Robotests
Bug: 38399275
Bug: 38398949
Bug: 38399654
Change-Id: Ic5a82d8ca4c85fad1b883226327ec083badf861d
2017-06-01 18:03:53 -07:00
jackqdyulei
de3bb7194d Add method to calculate last full charge time
Bug: 38481300
Test: RunSettingsRoboTests
Change-Id: Icd551921f263352eb01d0c6ada62d277c8699507
2017-05-30 15:51:29 -07:00
jackqdyulei
03539a07e4 Add method to calculate last full charge time
Bug: 38481300
Test: RunSettingsRoboTests
Change-Id: Icd551921f263352eb01d0c6ada62d277c8699507
2017-05-26 13:21:42 -07:00
jackqdyulei
f984b1e1ae Sort app list after smeared on screen
Then we could make sure the app list is sorted

Bug: 62035385
Test: RunSettingsRoboTests
Change-Id: I3fa3d6ffc5930cf011e382632143e459fdbc4369
Merged-In: I3fa3d6ffc5930cf011e382632143e459fdbc4369
2017-05-25 10:09:05 -07:00
jackqdyulei
7932484fa9 Sort app list after smeared on screen
Then we could make sure the app list is sorted

Bug: 62035385
Test: RunSettingsRoboTests
Change-Id: I3fa3d6ffc5930cf011e382632143e459fdbc4369
2017-05-23 17:36:47 -07:00
jackqdyulei
495de548bd Add wakeup alarm anomaly detector
Wakeup alarm count frequent is calculated by a / b, where
1. a: the total wakeup alarm count since the last full charge
2. b: total time running since last full charge
(include sleeping time)

This cl also has the following changes:
1. Move bunch of methods to BatteryUtils
2. Create type WAKEUP_ALARM
3. Add and update tests

Upcoming cl will make sure we get the threshold from
AnomalyDetectionPolicy

Bug: 36921529
Test: RunSettingsRoboTests
Change-Id: I4f7b85606df68b6057f6c7d3f3be7f9a9a747f1d
2017-05-23 09:49:14 -07:00
Salvador Martinez
6976ccecee Merge "Use enhanced estimate battery info when available" 2017-05-23 03:28:32 +00:00
Salvador Martinez
be6f07045a Use enhanced estimate battery info when available
This CL updates the battery page to get the updated strings and
other relevant battery info from directly from SettingsLib by
providing it an overrided drain time instead of manually changing
the value in the returned info. This will provide the added benefit
of using the new strings when appropriate that tell the user that
the estimate provided is based on their usage.

Test: robotests
Bug: 38399659
Change-Id: I0db572c2ea78910756314b6bf066d37e9f90a15c
2017-05-22 18:06:29 -07:00
TreeHugger Robot
21d2403c67 Merge "Show wifi and bluetooth item in battery settings" into oc-dev 2017-05-18 19:13:35 +00:00
jackqdyulei
7d7080ab64 Drop the misc and not smear it.
Bug: 38347725
Test: RunSettingsRoboTests
Change-Id: I573e4fb945bc212505c9211d9b92f77a6a9a2739
2017-05-17 18:12:03 -07:00
jackqdyulei
2b923ce44f Smear screen power usage based on activity time.
Bug: 38328636
Test: RunSettingsRoboTests
Change-Id: I8e7baadcd88a8e9d674f5bc8d8e42e0f3953c98a
2017-05-17 18:06:47 -07:00
jackqdyulei
6c9dc0b1ca Show wifi and bluetooth item in battery settings
Change-Id: Icc1824758908b14ad895dcc28a63a5d9c685b490
Fix: 38328856
Fix: 38328641
Test: RunSettingsRoboTests
2017-05-17 10:29:55 -07:00
TreeHugger Robot
651261c7dd Merge "Only use PROCESS_STATE_TOP as foreground time." into oc-dev 2017-05-05 18:55:29 +00:00
jackqdyulei
01e690e377 Only use PROCESS_STATE_TOP as foreground time.
There are some miscalculations in state FOREGROUND_SERVICE and
FOREGROUND, so we move them out of the foreground time for now.

We will fix it after O and may add them back later.

Bug: 37000096
Test: RunSettingsRoboTests
Change-Id: Ic3f2f7fa69e8a213895c601630d1cca94fd32220
2017-05-05 10:23:09 -07:00
jackqdyulei
a245188a65 Distribute the misc among all the apps
Distribute it in:
1. Battery main page(PowerUsageSummary)
2. Advanced battery page(PowerUsageAdvanced)

Bug: 37487061
Test: RunSettingsRoboTests
Change-Id: Id1810b81a6b380d908bcdc18421530e938578c37
2017-04-25 11:48:24 -07:00
TreeHugger Robot
e5fa4cd4b5 Merge "Remove STATE_TOP_SLEEPING from foreground time" into oc-dev 2017-04-25 18:36:01 +00:00
jackqdyulei
7c6e6e9254 Remove STATE_TOP_SLEEPING from foreground time
That state means the time when app is on top while screen is off,
we should not count it as foreground usage time.

Bug: 37547898
Test: RunSettingsRoboTests
Change-Id: I67e0c135d0c4b71cd667037b0d5dc7673b53607e
2017-04-24 11:37:00 -07:00
jackqdyulei
f4c1cef322 Add TtsSpan for formatted time.
Talk back will read "Used for 3m" as "Used for 3 meters", but
it will read "Used for 3h 3m" correctly.

This cl add specific Ttsspan if the time only contains "minute"

Bug: 36379530
Test: Run SettingsRoboTests

Change-Id: I033575938cce24221980dddd9d66be4e18804541
2017-04-21 14:42:42 -07:00