Commit Graph

44 Commits

Author SHA1 Message Date
ykhung
c12b9500e6 Refine the BatteryUsageStats close() method invoke timing
Refine invoke batteryUsageStats.close() timing to 1) avoid closing it before the UI is ready to ignore showing the battery usage app list data for AOSP version, and 2) avoid close the BatteryUsageStats which is passed from caller components in the BatteryInfo with unexpected behavior.

Bug: 220717612
Test: make RunSettingsRoboTests -j56 ROBOTEST_FILTER="com.android.settings.fuelgauge"
Change-Id: I0f75580ac68d72b41fa9a7f43aa6ea694f0992ff
2022-04-28 17:16:04 +00:00
Wesley Wang
6cd9fc0a7e Refactor compact battery status method (1/2)
- Move compact battery status logic into libs

Bug: 219650786
Test: make SettingsRoboTests
Change-Id: Icc53c8d88235bffedfb51a3526668277fcbf4f40
2022-02-21 06:34:46 +00:00
Wesley Wang
1d649951f9 Use compact battery status string if available (1/3)
- Add a config to switch the battery status string logic

Bug: 219650786
Test: make SettingsRoboTests
Change-Id: I5939cdc2e4e90466539f342d6d2030c1de1a94c3
2022-02-15 18:50:04 +08:00
Dmitri Plotnikov
4b8a7bcaa5 Use a simpler constructor
The constructor with two arguments is changing

Bug: 195306545
Test: make RunSettingsRoboTests
Change-Id: I56288bb5b3eb9d71ae49128ccbc72fd57abb48d1
2021-10-12 05:17:14 +00:00
ykhung
454698d97e Invoke close() method for BatteryUsageStats to close cursor window
invoke close() method for BatteryUsageStats to close cursor window,
since BatteryUsageStats will implement "Closeable" interface in T.
(from Dimitri's request)

Bug: 201229421
Test: make SettingsRoboTests
Change-Id: Ibfca404d00cce51405cffddb636f685869ac130b
2021-09-29 00:44:11 +08:00
ykhung
e893a890ca [Robustness] protect get battery stats from DeadSystemException
Refine the original workaround patch in the ag/15527095 from NPE to
return default BatteryUsageStats instance as we merged in the
ag/15919139 (align the same solution).

Bug: 195306545
Test: make SettingsRoboTests
Change-Id: Ic03e8296d16ecb8629155f75727e9cde48c303eb
2021-09-28 10:00:50 +00:00
ykhung
ad346e12d5 [Robustness] protect get battery stats from DeadSystemException
In some corner cases, we will receive the DeadSystemException from
BatteryStatService when invoking getBatteryUsageStats() method. Before
this issue is resolved by BatteryStatService team, we will add some
protections to avoid Settings app is crashed.

Bug: 195306545
Bug: 195467687
Test: make SettingsRoboTests
Change-Id: I75fcf63f4f69d86d6dce0e12bd4d738b1219ae47
2021-08-12 03:53:14 +00:00
Wesley.CW Wang
273a7d96a3 Remove unnecessary converting us to ms
- Pick from pagit/1951738
 - The class "Estimate" has the menber estimateMillis and the unit of batteryUsageStats.getBatteryTimeRemainingMs() is millisecond, so converting from us to ms is unnecessary.

Bug: 187379252
Bug: 184916537
Test: make RunSettingsRoboTests
Change-Id: I2e8e03451352d7ad4cd44f72d5261dad35a81eb9
2021-06-24 11:41:53 +00:00
Wesley.CW Wang
2c6fd8fd3b Update battery charging status string
- Present status string only when status anomalous
 - Remove app usage pages divider

Bug: 185448191
Bug: 187767337
Bug: 187778673
Test: make SettingsRoboTests
Change-Id: I7829e9deed05fb7d95d483ddb718abfdc53b1aa6
2021-05-12 21:14:23 +08:00
Wesley.CW Wang
50f314e45d Update StringUtil#formatElapsedTime method (2/3)
- Update the usage and the test case
 - Update discharging string to follow new string doc

Bug: 183689347
Test: make RunSettingsRoboTests
Change-Id: I1e14e7da8cb02755d8cf6e12626a0d94fad87121
2021-04-07 10:19:10 +00:00
Dmitri Plotnikov
820bee81d6 Transition BatteryInfo and BatteryUtils to BatteryUsageStats API
Bug: 173745486
Test: make RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.fuelgauge.BatteryHistoryPreferenceTest
Test: make RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.fuelgauge.BatteryInfoLoaderTest
Test: make RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.fuelgauge.BatteryInfoTest
Test: make RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.fuelgauge.BatteryUtilsTest
Test: make RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.fuelgauge.batterytip.detectors

Change-Id: I469ff8b88aa3307422c02f51943df4ef1759db56
2021-03-12 14:08:42 -08:00
Wesley.CW Wang
9a6aae5006 Add Battery Defender feature to Settings
- Reupload CL from ag/13108999 to fix the merge conflict
 - Adding new tips of Battery Defender, will be presented once battery is overheated
 - Launch Help Center article of battery overheat when clicking Battery Defender tip
 Screenshots: https://screenshot.googleplex.com/7jUibTJANgR6UQ6.png
 	      https://screenshot.googleplex.com/tUj2LLi87SfndBN.png

Bug: 172794045
Bug: 173497281
Bug: 173496188
Test: make RunSettingsRoboTests -j40
Change-Id: Ibb106a5d42cdf6232abf9ddf4b3225bdcebccf4a
2020-12-01 16:00:49 +08:00
Raff Tsai
791ad4d568 Sync lastest SettingsLib interface
Test: rebuild
Change-Id: I3131f701deb47acae9f19436cbe66e077ea004ee
2019-12-26 11:58:38 +08:00
Jason Chiu
86e98bf448 Execute getting battery info on the parallel executor
Getting battery info is time consuming and may block other tasks in the
same background thread.

Executing it on the parallel executor can improve app launch performance.

Bug: 141694556
Test: robotest
Change-Id: I55517e03961929c2b288e230ed474d45915d63fd
2019-09-27 17:33:08 +08:00
Salvador Martinez
415f35b670 Update BatteryUtils to update system battery estimate cache
To try and ensure SysUI and Settings don't show different battery
estimates we have settings always push the estimate to the system
cache which will cause the status bar to update as well.

Test: manually trigger battery broadcasts and observe
Bug: 124030091
Change-Id: I07a17ecf2a42c3022673ad2aca438f8d6e81b41f
2019-04-24 10:35:41 -07:00
Salvador Martinez
6a81e41c7c Update battery stuff to use SettingsLib Estimate class
This will make the upcoming consistency Cl easier to implement.

Test: Robotests still pass
Bug: 124030091
Change-Id: Ief4989e2b5f9b83b5c3b93d17f9f9fa12136f3ee
2019-04-19 17:35:23 +00:00
Raff Tsai
deda67b7bf Revert "Revert "Change battery tip text""
This reverts commit 39beb2533f.

Reason for revert: <start to implement>

Fixes: 121042353
Test: adb shell settings put global battery_tip_constants test_low_battery_tip=true
      Then go to Settings -> battery to see the text

Change-Id: I83cc187d5bfda5312410e91ee636373f305ef449
2019-03-09 00:14:29 +08:00
Raff Tsai
39beb2533f Revert "Change battery tip text"
This reverts commit 2441b94c6d.

Reason for revert: <wrong commit>

Change-Id: I373fc065eafc81c26a8eba133255f9377d1d5d7f
2019-03-08 08:51:05 +00:00
Raff Tsai
2441b94c6d Change battery tip text
Fixes: 121042353
Test: adb shell settings put global battery_tip_constants test_low_battery_tip=true
      Then go to Settings -> battery to see the text
Change-Id: Ie3c4a89ccb7c2724840dc886a502ef919e13a856
2019-03-07 04:50:43 +08:00
Mill Chen
60f6a25af8 Add Battery slice in Contextual Settings Homepage
- Add Battery card that implements CustomSliceable in Contextual
Settings Homepage.
- Add test case for Battery slice.
- Created a loadBatteryInfo method for BatterySlice.
- Add a map in CustomSliceManager to cache CustomSliceable instances,
let existing battery slice be able to update battery info.
- Use a flag to avoid triggering an infinite loop when calling
notifyChange in the callback function.

Bug: 114796623, 115971399
Test: manual, robotests
Change-Id: I4b785708bf8456c6c4de7cae4b44f8a060bccbae
2018-10-24 20:01:53 +08:00
Fan Zhang
23f8d59d02 Sort imports
Having consistent import order will reduce chance of merge
conflict between internal and external master

Test: rebuild
Change-Id: I0b1a170967ddcce7f388603fd521f6ed1eeba30b
2018-08-28 22:13:15 +00:00
jackqdyulei
5c5e3bbd0c Refactor the BatteryInfo
Move the battery stats logic to background because it is time
consuming.

Bug: 112262502
Test: robotest still pass
Change-Id: I794bc82a4f1b5ae5a883c89d447116601a86558f
2018-08-09 18:03:18 -07:00
Fan Zhang
670ce333ae Misc clean up. move widgets from graph to widget package.
Bug: n/a
Test: robotests, rebuild
Change-Id: I910f355312d52e81a0bf57b46a3f267e1eb9882a
2018-06-11 16:05:12 -07:00
Aurimas Liutikas
e0069d332d Migrate Settings to androidx.
Test: make Settings
Bug: 76692459
Change-Id: I941dea40562170649bf056e675cc32e5163c0e39
2018-04-20 12:52:29 -07:00
Salvador Martinez
453db0cdbc 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
2018-03-07 10:26:59 -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
Salvador Martinez
250a79830c Fix null pointer from PowerUsageFeatureProvider
Some locations did not check if the returned value was null before
doing operations on them and could crash. This CL changes those
spots to take that into account.

Test: b/72463854 will add in follow up to unblock dogfood
Bug: 72350595
Change-Id: I0ace5c0ab4a8aa9fd5b09d41d6f986143246f059
2018-01-24 17:53:35 -08:00
jackqdyulei
92dcd78ad3 Change high usage detector logic
Based on the requirement, change it to detect:
"whether battery draining is larger than x in the last y hours"

Bug: 70570352
Test: RunSettingsRoboTests
Change-Id: I9fb1a9f2fe38d5d64681dafe26311aeab7f3fe9c
2018-01-19 20:25:07 -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
ae4b79ee6d Update strings when shortString is true
After b/64124535, battery strings in settings page use shortString
version. This cl updates the charging string in this situation to
match the mock.

Note that no matter whether we use shorString, the chargingLabel
should remain the same.

Bug: 64752046
Test: RunSettingsRoboTests
Change-Id: I4395d4660e212688cd560ca0b124acbd9c099cc9
2017-08-16 14:42:35 -07:00
Salvador Martinez
dcb96058ef Shorten main settings battery string
This string will be too long in other languages so we're shortening
it for the main settings screen.

Test: robotests updated
Bug: 64124535
Change-Id: I5ccad99b1023f84ee72a144e07b1ea60f3fc01d5
2017-08-01 10:29:44 -07:00
Salvador Martinez
7961627680 Add some more logging to settings battery stuff
This CL adds logging to areas which are possible suspects for
the slowdown some people have been reporting in the
PowerUsageAdvanced screen. It times the time it takes for various
battery stats methods as well as the time it takes to draw things.

Test: still build (only adds logging)
Bug: 62959645
Bug: 63442960
Change-Id: I7e6c5e83e33a931057c9fdef14d3bef84f514940
2017-07-19 18:16:56 -07:00
Alex Kulesza
82dbcd973d Render enhanced battery projection curves.
BatteryInfo now supplies standard linear or enhanced projection curves,
depending on the provider.

Note that the semantics of parsing have changed slightly in that the
value of endTime supplied to onParsingStarted is now the end time of the
historical data and does not include the projection. However, as far as
I can see there is no existing code that depends on the parsing
functionality besides BatteryInfo itself.

Also slightly optimizes the updating behavior of the UsageGraph, since
we are now reconfiguring it multiple times.

Bug: 38400320
Test: make RunSettingsRoboTests, manual on device
Change-Id: Ieff26d31356b34bb38e49f54f979fd80549864b2
2017-07-05 18:56:02 -04: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
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
jackqdyulei
543c1f2cf5 Update the chargeLabel when battery level is full
Before this cl, it will show "100% - charging", which doesn't make
sense. This cl removes "- charging", and only show "100%" in this
case

Bug: 62559153
Test: RunSettingsRoboTests
Change-Id: Id124fe4098e21b4a69c4a7d3d522fa227faab65d
2017-06-23 14:04:45 -07:00
Salvador Martinez
cb9c53dd7c Fix BatteryInfo using enhanced estimate for charge time
Due to a typo in BatteryEstimates the enhanced estimate we use
for discharging would also be used for charging. This CL corrects
the typo and adds a simple test to catch a similar mistake in the
future. We were also always loading the enhanced estimate even when
we were not using it. As a ~*bonus*~ it should also help improve
the speed of the charging use case for this screen and fixes an
issue with the battery not switching to the charging icon in the
main battery page.

Test: robotest
Bug: 62738028
Bug: 62873396
Bug: 62784575
Bug: 62736144
Change-Id: Ib2cbdeea22afb7da590b701b84f526bdac243410
2017-06-22 09:42:36 -07:00
Alex Kulesza
c57ceaaa8c Implement general projection curve support for UsageGraph.
Previously, projections were hard-coded in UsageGraph as lines from the
last known point to the corner of the graph. This change replaces that
with support for arbitrary projection curves. Logic for hiding/showing
the projection is now gone; if the client does not want a projection,
it simply does not supply one.

There are two active clients of this code: the data usage graph and the
battery usage graph. The data graph does not use projections and is
essentially unchanged. The battery graph now implements its linear
extrapolation directly in BatteryInfo.

Bug: 38400320
Test: make SettingsUnitTests SettingsGoogleUnitTests
Test: manual (screenshots in comments)
Change-Id: I754e66f6b18ecb8b936143399f8e9e3368fc1ce4
2017-06-08 16:59:14 +00:00
TreeHugger Robot
90ef8cea69 Merge "Add ability to see both battery estimates on long press" 2017-06-06 01:58:17 +00:00
Salvador Martinez
f4727ea07f Add ability to see both battery estimates on long press
If the enhanced estimate is being used in battery settings
it is now possible to long press on the text to have it display
both instead of the string that is normally used.

Adds another loader to enable this since it needs both the old
and the new estimates simultaneously.

Feature is hidden behind a feature flag that only googlers will
have enabled.

Test: robotests
Bug: 38399275
Change-Id: I5caf26513baada27efd50ddb0e72d3868da47150
2017-06-05 16:26:32 -07:00
Alex Kulesza
c661098ab8 Move UsageGraph from SettingsLib to Settings.
In preparation for modifying the graph code to show detailed projections
(see bug), this change moves it into Settings along with related tests
and resources.

Bug: 38400320
Test: manual, make SettingsUnitTests, make SettingsGoogleUnitTests
Change-Id: I88e5336c15827727b3427e29b10954bba9cfba7d
2017-06-05 15:43:18 -04:00
jackqdyulei
214372be19 Use new time format in BatteryInfo
1. Using "h" and "m" instead of "hrs" and "min"
2. Refactor the string to CharSequence so it won't have
TTS issue(i.e read "m" as "meter")
3. Update tests related to this part.

Bug: 37201139
Test: RunSettingsRoboTests
Change-Id: I9cadb511572b2d522d26ab337c171fa69da87475
2017-06-02 15:15:16 -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
Salvador Martinez
0e8c88376c Move BatteryInfo to settings from settingslib
This CL simply moves BatteryInfo from settingslib to settings and
makes sure the tests still pass. No other changes are made other than
imports or minor changes needed to make sure existing code does not
break.

Test: Robotests still pass
Bug: 38399275
Bug: 38398949
Bug: 38399654
Change-Id: I59803348e2780b7676ccc6c43234a586c184d71f
2017-06-01 11:34:08 -07:00