You don't force it. 
When the battery status changed, and uevent will be generated from
driver to the user level. The BatteryService is registered as a uevent
observer
(BatteryService.java:mUEventObserver.startObserving("SUBSYSTEM=power_supply");).
When the power_supply related uevent happens, the onUevent method of
observer will be called that will call update function. The update
function will read the sysfs and broadcast the update. 

Yi

On Tue, 2009-05-26 at 18:47 -0700, zhangxiyuan wrote:
> Hi Yi Sun,
> 
> maybe what I wanted to ask is how to force the BatteryService to send
> broadcase manually(through programming).
> 
> Thanks.
> 
> On May 27, 9:31 am, zhangxiyuan <zhangzho...@gmail.com> wrote:
> > Hi Dianne, Yi Sun,
> >
> > What I want to do is to get the battery status at any time,  for
> > example, I have a button on the screen, any time I click it, I can
> > view the battery status.
> > of course, there maybe more functions beyond this.
> >
> > Yi Sun,
> > First of all, thanks a lot.
> > I used adb shell to check the /sys directory, but there is not a
> > power_supply sub directory.
> > Is it because I am using an emulator but not real phone?
> > Could provide any snippets of poll the battery status?
> > Thanks.
> >
> > On May 27, 12:47 am, Dianne Hackborn <hack...@android.com> wrote:
> >
> > > As I said, I am pretty sure this is a sticky broadcast, meaning that the
> > > contents of the last broadcast are remembered by the system.
> >
> > > That said, I can't really help you any more without know what you are
> > > actually trying to do -- are you trying to write a third party app (if so
> > > android-developers is the appropriate place), are you trying to port to 
> > > some
> > > hardware (if so android-porting), or something else?
> >
> > > On Tue, May 26, 2009 at 12:29 AM, zhangxiyuan <zhangzho...@gmail.com> 
> > > wrote:
> >
> > > > Hi Dianne,
> > > > Thanks a lot for your help.
> >
> > > > According to the reply from Yi Sun:
> > > > >>>>Look into the update() method in BatteryService.java. You may be 
> > > > >>>>able
> > > > to
> > > > >>>>solve the issue by register for BATTERY_CHANGED. But, it only be 
> > > > >>>>sent
> > > > >>>>out when the battery status is changed. Not sure if it is good for 
> > > > >>>>you
> > > > >>>>or not.
> > > > I checked the source code of com.android.server.BatteryService#update
> > > > (), yes, the update method first call native_update(),
> > > > then check for the status, if some status field changed, then
> > > > sendIntent() will be invoked to broadcast.
> > > > My question is "does that mean I can not get the battery information
> > > > in real-time?", I mean if I launch the application at 00:00:00, then
> > > > return to home screen,
> > > > then relaunch it at 00:00:30, then maybe none of the status changed,
> > > > does that mean I can not get any status information?
> >
> > > > Thanks.
> >
> > > > On May 26, 3:16 pm, Dianne Hackborn <hack...@android.com> wrote:
> > > > > On Mon, May 25, 2009 at 8:12 PM, zhangxiyuan <zhangzho...@gmail.com>
> > > > wrote:
> > > > > > And I have three other questions:
> > > > > > 1. Which apis will be included in the sdk public api? Is there any
> > > > > > description about it?
> >
> > > > > The official public SDK is only the things described here:
> >
> > > > >http://developer.android.com/reference/packages.html
> >
> > > > > And yes, @hide is used to keep classes and methods out of the SDK.
> >
> > > > > 2. I modified the com.android.settings.BatteryInfo activity to another
> >
> > > > > > activity, delete all the api invocation to the non-public api,
> > > > > >   I can still get the battery information such as level, scale, ...
> > > > > >   so, I think what I really need to do is just impelement the
> > > > > > BroadcastReceiver, and registerReceiver in the onCreate or onResume
> > > > > > methods.
> > > > > >   Is that right?
> >
> > > > > Yes, as I said, most of the information is sent as a sticky broadcast.
> >
> > > > > > 3. I do not have a real android-based phone, so I just run the
> > > > > > application on the emulator, I got the following information all the
> > > > > > time:
> > > > > > Battery status: Charging (AC)
> > > > > > Battery level: 50
> > > > > > Battery scale: 100
> > > > > > Battery health: Good
> > > > > > Battery voltage: 0 mV
> > > > > > Battery temperature: 0.0°C
> > > > > > Battery technology: Li-ion
> > > > > > I wonder how can I get different information by changing some
> > > > > > configurations of the emulator?
> >
> > > > > Sorry can't help with that.
> >
> > > > > --
> > > > > Dianne Hackborn
> > > > > Android framework engineer
> > > > > hack...@android.com
> >
> > > > > Note: please don't send private questions to me, as I don't have time 
> > > > > to
> > > > > provide private support, and so won't reply to such e-mails.  All such
> > > > > questions should be posted on public forums, where I and others can 
> > > > > see
> > > > and
> > > > > answer them.
> >
> > > --
> > > Dianne Hackborn
> > > Android framework engineer
> > > hack...@android.com
> >
> > > Note: please don't send private questions to me, as I don't have time to
> > > provide private support, and so won't reply to such e-mails.  All such
> > > questions should be posted on public forums, where I and others can see 
> > > and
> > > answer them.
> > 


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"android-framework" group.
To post to this group, send email to android-framework@googlegroups.com
To unsubscribe from this group, send email to 
android-framework+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/android-framework?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to