cordova-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Josh Soref <jso...@blackberry.com>
Subject RE: [Android] Battery Plugin API drains battery..What now???
Date Tue, 10 Jun 2014 23:27:15 GMT
Joe wrote:
> After the battery tests, I looked at the battery plugin, and we need to shelve the battery
plugin until we get a new API. 

Sounds good to me.

> Worse yet, the W3C API proposed is terrible and should never be implemented on Android.

I was involved, but agree.

> So, as we currently implement it, we set the battery to listen to the batteryChange event,
> which is used to return the battery level,
> which isn't actually a percent but some number that isn't consistent across Android devices.

> This bug has been filed.

Awesome.

> However, a more serious bug is the fact that every time this is triggered, it takes about
1% of battery power.

This is more or less what I expected (feared, warned about)

>  I've played with this event in the past on a side project, and it's killed batteries
on my devices in less than an hour.

I wish you had been able to send this feedback when I was working on this stuff...

> So, the proper way you monitor for battery events is by monitoring for certain events
> by adding an events receiver in the AndroidManifest.xml file, and letting that fire an
> event depending on whether there's a callbackContext assigned to it. 

> The problem is that we should only monitor certain manifests,
> and get the values when those events happen.

>  We can support getting the value of the battery on demand,


> but we should discourage our users from doing this.

This was my main point. Roughly I saw:
* You can't do anything remotely useful w/ the battery information. You don't know how much
time you have before:
1. Your device loses network connectivity
2. Your user drops your device and the battery flies out / the device falls into a body of
water
3. Your device panics
4. Your application crashes
5. Your device decides to terminate your application because it needs memory

* I expected it to be expensive (and a heisenbug, in that the act of observing [monitoring]
it changes it)
* The only practical use I've seen for this is to create a battery widget, which was not a
good UC in my mind

> This brings us to the W3C Battery API:
> http://www.w3.org/TR/battery-status/

> To me, this is unimplementable without killing the battery,
> since this appears to work similarly to our device API in that we'd have to populate
this on an interval,
> and that interval on Android is how fast you want your battery to die. 
> So, how do we want to approach this?
> I have no idea why the W3C wrote a specification that is near impossible to implement.

It was written because "app authors" demanded it.

> Thoughts?

http://www.w3.org/2005/10/Process-20051014/tr.html#q74

7.1.2 Maturity Levels of the Recommendation Track
Candidate Recommendation (CR)
    A Candidate Recommendation is a document that W3C believes has been widely reviewed and
satisfies the Working Group's technical requirements. W3C publishes a Candidate Recommendation
to gather implementation experience.
Proposed Recommendation (PR)
    A Proposed Recommendation is a mature technical report that, after wide review for technical
soundness and implementability, W3C has sent to the W3C Advisory Committee for final endorsement.
W3C Recommendation (REC)
    A W3C Recommendation is a specification or set of guidelines that, after extensive consensus-building,
has received the endorsement of W3C Members and the Director. W3C recommends the wide deployment
of its Recommendations. Note: W3C Recommendations are similar to the standards published by
other organizations.

7.1.3 Maturity Level When Ending Work on a Technical Report
Working Group Note
    A Working Group Note is published by a chartered Working Group to indicate that work has
ended on a particular topic. A Working Group MAY publish a Working Group Note with or without
its prior publication as a Working Draft.

CR is the stage where implementers are supposed to be giving feedback. Put on an implementer
hat (Cordova) and send feedback explaining your concerns. Ideally this feedback is precisely
what is needed to get this proposal to die as a CR (dead proposals are republished as NOTES
with an explanation that people should not use/implement them).

I'll be glad to offer support in this area (not wearing my corporate hat).
Mime
View raw message