<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://paz00.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%98%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D1%82%D0%B0%D1%82%D1%83%D1%81%D0%B0_%D0%B7%D0%B0%D1%80%D1%8F%D0%B4%D0%B0_%D0%B1%D0%B0%D1%82%D0%B0%D1%80%D0%B5%D0%B8</id>
	<title>Изменения статуса заряда батареи - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://paz00.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%98%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D1%82%D0%B0%D1%82%D1%83%D1%81%D0%B0_%D0%B7%D0%B0%D1%80%D1%8F%D0%B4%D0%B0_%D0%B1%D0%B0%D1%82%D0%B0%D1%80%D0%B5%D0%B8"/>
	<link rel="alternate" type="text/html" href="https://paz00.ru/index.php?title=%D0%98%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D1%82%D0%B0%D1%82%D1%83%D1%81%D0%B0_%D0%B7%D0%B0%D1%80%D1%8F%D0%B4%D0%B0_%D0%B1%D0%B0%D1%82%D0%B0%D1%80%D0%B5%D0%B8&amp;action=history"/>
	<updated>2026-04-04T11:04:37Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.39.10</generator>
	<entry>
		<id>https://paz00.ru/index.php?title=%D0%98%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D1%82%D0%B0%D1%82%D1%83%D1%81%D0%B0_%D0%B7%D0%B0%D1%80%D1%8F%D0%B4%D0%B0_%D0%B1%D0%B0%D1%82%D0%B0%D1%80%D0%B5%D0%B8&amp;diff=147&amp;oldid=prev</id>
		<title>Unknown user в 08:14, 15 октября 2014</title>
		<link rel="alternate" type="text/html" href="https://paz00.ru/index.php?title=%D0%98%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D1%82%D0%B0%D1%82%D1%83%D1%81%D0%B0_%D0%B7%D0%B0%D1%80%D1%8F%D0%B4%D0%B0_%D0%B1%D0%B0%D1%82%D0%B0%D1%80%D0%B5%D0%B8&amp;diff=147&amp;oldid=prev"/>
		<updated>2014-10-15T08:14:06Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;* В реальном времени не обновляется статус батареи&lt;br /&gt;
** Статус меняется только при загрузке системы (и по не проверенной информации иногда обновляется при попытках сна)&lt;br /&gt;
*** Статус заряда батареи проживает у нас в обычном месте /sys/class/power_supply/battery, в status дело которое сейчас делает&lt;br /&gt;
например ''Charging'' или ''Discharging'', в capacity заряд в цифирях&lt;br /&gt;
*** Проживает в андроиде канитель с батареей в тут https://github.com/CyanogenMod/android_frameworks_base/blob/ics/services/jni/com_android_server_BatteryService.cpp&lt;br /&gt;
**** Что андроиду не нравится не очень понятно возможно у нас чтонить в непривычном для него формате или месте (или например power_profile.xml кривой https://github.com/rrathi/adamICS/issues/29)&lt;br /&gt;
**** Андроид чутка ругается на наш драйвер, но вроде тут все нормально у нас этого действительно нет в дровах&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
E/BatteryService(  175): usbOnlinePath not found&lt;br /&gt;
E/BatteryService(  175): batteryHealthPath not found&lt;br /&gt;
E/BatteryService(  175): batteryTemperaturePath not found&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''* Нашел вот такое упоминание о том как берется процент заряда ''On the G1, the kernel will push the &amp;quot;Remaining Battery Percentage&amp;quot; to the sysfs entries directly.''&lt;br /&gt;
**** Инфа конечно старая не факт, что так до сих пор&lt;br /&gt;
**** Еще инфо из android-porting гугло группы как андроид забирает статус батареи, видимо более актуальное т.к. похоже на правду&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Matthias Kaehlcke 	&lt;br /&gt;
Post reply&lt;br /&gt;
More message actions&lt;br /&gt;
Aug 3 (8 days ago)&lt;br /&gt;
Re: [android-porting] Android ICS - How to integrate battery status info with Android&lt;br /&gt;
Hi K.U.&lt;br /&gt;
&lt;br /&gt;
El Thu, Aug 02, 2012 at 03:32:16AM -0700 K.U. ha dit:&lt;br /&gt;
&lt;br /&gt;
&amp;gt;    I am working on an Android-ICS porting project onto a custom Android Tab,&lt;br /&gt;
&amp;gt;    which uses AM3730 (TI's ARM) processor. The device is based on the&lt;br /&gt;
&amp;gt;    BeagleBoard architecture. The device has a fuel guage (BQ27200) and a&lt;br /&gt;
&amp;gt;    charger IC (BQ24150) which communicates with a&lt;br /&gt;
&amp;gt;    MSP430 micro-controller firmware.&lt;br /&gt;
&amp;gt;    My main problem is how to display the battery status through the &amp;quot;battery&lt;br /&gt;
&amp;gt;    icon&amp;quot; on the taskbar? Also I am aware that the other battery related&lt;br /&gt;
&amp;gt;    operations/status (charging, discharging, battery low, fully charged)&lt;br /&gt;
&amp;gt;    could also be read by the Android system and act accordingly. I could not&lt;br /&gt;
&amp;gt;    find a clear set of instructions on how to integrate these features with&lt;br /&gt;
&amp;gt;    android.&lt;br /&gt;
&amp;gt;    Can some one kindly direct me to a link/site where I can find a guide for&lt;br /&gt;
&amp;gt;    this task? Or if any of you can take the time to reply this post, it will&lt;br /&gt;
&amp;gt;    be greatly appreciated.&lt;br /&gt;
&lt;br /&gt;
Android gets the battery and charger status from the power supply&lt;br /&gt;
devices registered in the kernel. whenever the status of a&lt;br /&gt;
power supply changes (charging/discharging, battery level, charger&lt;br /&gt;
plugged/unplugged, ...), the kernel sends a so called uevent&lt;br /&gt;
(userspace event). user processes can register to these uevents, which&lt;br /&gt;
is what Androids BatteryService does. when the BatteryService is&lt;br /&gt;
notified about a change in a power supply it reads the updated status&lt;br /&gt;
of the power supply from sysfs and sends out the corresponding intents&lt;br /&gt;
which cause the update of the battery icon and so on&lt;br /&gt;
&lt;br /&gt;
for the BQ27200 fuel gauge you have the bq27x00_battery driver in the&lt;br /&gt;
kernel (drivers/power/bq27x00_battery.c), which provides the&lt;br /&gt;
battery status through uevents and sysfs as outlined above. if&lt;br /&gt;
configured correctly you should see on your running system a power&lt;br /&gt;
supply of type battery in /sys/class/power_supply/ with attributes&lt;br /&gt;
like the current battery capacity or the charging status&lt;br /&gt;
&lt;br /&gt;
best regards&lt;br /&gt;
&lt;br /&gt;
-- &lt;br /&gt;
Matthias Kaehlcke&lt;br /&gt;
Embedded Linux Developer&lt;br /&gt;
Amsterdam &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''''' Надо найти я ядре девайс у которого это есть и перенести в наши дрова (drivers/power/bq27x00_battery.c походящий вроде кандидат&lt;br /&gt;
**** Поправленный nvec от ejtagle в котором вроде все работает https://github.com/DerArtem/android_kernel_toshiba_betelgeuse/blob/android-tegra-nv-3.1/drivers/staging/nvec2/nvec_power.c, нужно портировать от туда механизм поллинга&lt;br /&gt;
***** Пока найдено временное решение из android-x86 чтобы сервис батареии сам инициировал повторые запросы статуса. Патч взят отсуда  http://android-x86.git.sourceforge.net/git/gitweb.cgi?p=android-x86/x86_frameworks_base.git;a=commit;h=48f520b2fbe604c550e4fd8ca00f18e478676969&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
diff --git a/services/java/com/android/server/BatteryService.java b/services/java/com/android/server/BatteryService.java&lt;br /&gt;
index 76a4cb0..a54d7ea 100644 (file)&lt;br /&gt;
--- a/services/java/com/android/server/BatteryService.java&lt;br /&gt;
+++ b/services/java/com/android/server/BatteryService.java&lt;br /&gt;
@@ -144,8 +144,18 @@ class BatteryService extends Binder {&lt;br /&gt;
             mInvalidChargerObserver.startObserving(&amp;quot;DEVPATH=/devices/virtual/switch/invalid_charger&amp;quot;);&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
-        // set initial status&lt;br /&gt;
-        update();&lt;br /&gt;
+        // start polling&lt;br /&gt;
+        new Thread(new Runnable() {&lt;br /&gt;
+            public void run() {&lt;br /&gt;
+                while (true) {&lt;br /&gt;
+                    update();&lt;br /&gt;
+                    try {&lt;br /&gt;
+                        Thread.sleep(30);&lt;br /&gt;
+                    } catch (InterruptedException e) {&lt;br /&gt;
+                    }&lt;br /&gt;
+                }&lt;br /&gt;
+            }&lt;br /&gt;
+        }, &amp;quot;BatteryServiceUpdateThread&amp;quot;).start();&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     final boolean isPowered() {&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''' Полезный тред в котором рассказывается как это все работает http://e2e.ti.com/support/embedded/android/f/509/t/192462.aspx&lt;br /&gt;
** Найдено правильное решение на уровне драйвера в ядре&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
diff --git a/drivers/staging/nvec/nvec_power.c b/drivers/staging/nvec/nvec_power.c&lt;br /&gt;
index dfa966f..2c9dfcd 100644&lt;br /&gt;
--- a/drivers/staging/nvec/nvec_power.c&lt;br /&gt;
+++ b/drivers/staging/nvec/nvec_power.c&lt;br /&gt;
@@ -216,6 +216,8 @@ static int nvec_power_bat_notifier(struct notifier_block *nb,&lt;br /&gt;
                return NOTIFY_STOP;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
+       // FIXME Investigate when this call is really needed&lt;br /&gt;
+       power_supply_changed(&amp;amp;nvec_bat_psy);&lt;br /&gt;
        return NOTIFY_STOP;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Unknown user</name></author>
	</entry>
</feed>