<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[liangguangyuan的博客]]></title><description><![CDATA[android源码分析]]></description><link>https://blog.youkuaiyun.com/potato_man</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; potato_man]]></copyright><item><title><![CDATA[android 9.0 getIntProperty获取系统当前电量流程分析(一)]]></title><link>https://blog.youkuaiyun.com/potato_man/article/details/90906543</link><guid>https://blog.youkuaiyun.com/potato_man/article/details/90906543</guid><author>potato_man</author><pubDate>Tue, 20 Oct 2020 11:20:12 +0800</pubDate><description><![CDATA[上层直接获取系统电量的方法：


BatteryManager batteryManager = (BatteryManager) getSystemService(BATTERY_SERVICE);
batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY);


所以从BatteryManager.getInt...]]></description><category></category></item><item><title><![CDATA[android 9.0 getIntProperty获取系统当前电量流程分析(二)]]></title><link>https://blog.youkuaiyun.com/potato_man/article/details/91880353</link><guid>https://blog.youkuaiyun.com/potato_man/article/details/91880353</guid><author>potato_man</author><pubDate>Tue, 20 Oct 2020 11:18:21 +0800</pubDate><description><![CDATA[接着看上一篇android 9.0 getIntProperty获取系统当前电量流程分析(一)，分析getCapacity在HIDL中的实现


service.getCapacity((int result, int value) -&gt; {
                              outResult.value = result;
                   ...]]></description><category></category></item><item><title><![CDATA[上层监听Kernel上报的UEvent事件Demo]]></title><link>https://blog.youkuaiyun.com/potato_man/article/details/95492947</link><guid>https://blog.youkuaiyun.com/potato_man/article/details/95492947</guid><author>potato_man</author><pubDate>Sat, 08 Aug 2020 10:34:47 +0800</pubDate><description><![CDATA[最近的项目需要上层判断新外挂的mcu的连接状态 ，其节点自定义为/sys/class/lgy_class/lgy/lgy。

在kernel中创建节好点的时候，其实已经有了uevent事件了。



上层需要监听的是这个节点虚拟出来的





1，在自定义的NeoManagerService.java 服务中添加监听动作；


private static final String LG...]]></description><category></category></item><item><title><![CDATA[知其然也要知其所以然---Kernel上报电量UEvent事件流程分析]]></title><link>https://blog.youkuaiyun.com/potato_man/article/details/97623828</link><guid>https://blog.youkuaiyun.com/potato_man/article/details/97623828</guid><author>potato_man</author><pubDate>Sat, 08 Aug 2020 10:34:27 +0800</pubDate><description><![CDATA[1，

kernel-4.4\drivers\power\power_supply_core.c

当电量信息需要更新的时候，kernel会调用power_supply_changed_work这个工作队列，使用kobject_uevent函数往上发送uevent事件，action是KOBJ_CHANGE；


static void power_supply_changed_w...]]></description><category></category></item><item><title><![CDATA[知其然也要知其所以然---上层监听Kernel上报的UEvent事件流程分析（一）]]></title><link>https://blog.youkuaiyun.com/potato_man/article/details/95586819</link><guid>https://blog.youkuaiyun.com/potato_man/article/details/95586819</guid><author>potato_man</author><pubDate>Sat, 08 Aug 2020 10:33:01 +0800</pubDate><description><![CDATA[1，涉及到的文件frameworks：

frameworks/base/core/java/android/os/UEventObserver.java

frameworks/base/core/jni/android_os_UEventObserver.cpp

要监听kernel层上报的的uevent事件，

首先要做的是自定义一个类继承UEventObserver类并实现其抽象方...]]></description><category></category></item><item><title><![CDATA[9.0 SystemUI 状态栏 系统状态图标初始化流程]]></title><link>https://blog.youkuaiyun.com/potato_man/article/details/107338908</link><guid>https://blog.youkuaiyun.com/potato_man/article/details/107338908</guid><author>potato_man</author><pubDate>Fri, 17 Jul 2020 14:03:22 +0800</pubDate><description><![CDATA[system_icons.xml


&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/system_icons"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_vertical"&gt;
 
 ]]></description><category></category></item><item><title><![CDATA[android 9.0  systemui之通知的处理流程]]></title><link>https://blog.youkuaiyun.com/potato_man/article/details/106497524</link><guid>https://blog.youkuaiyun.com/potato_man/article/details/106497524</guid><author>potato_man</author><pubDate>Mon, 13 Jul 2020 20:41:39 +0800</pubDate><description><![CDATA[StatusBarNotification.java

Notification.java

NotificationData.java

NotificationData.Entry

通知栏图标类 StatusBarIconView



1，NotificationListener.java ---》onNotificationPosted

2，NotificationEntryManager.addNotification(sbn, rankingMap)---》addNotificationI.]]></description><category></category></item><item><title><![CDATA[SystemUI之状态栏StatusBar的加载]]></title><link>https://blog.youkuaiyun.com/potato_man/article/details/105383690</link><guid>https://blog.youkuaiyun.com/potato_man/article/details/105383690</guid><author>potato_man</author><pubDate>Tue, 21 Apr 2020 13:54:12 +0800</pubDate><description><![CDATA[一：

在Android 9.0 SystemUI的启动这篇文章中介绍到，我们要启动的服务都是在config_systemUIServiceComponents中配置的。


]]></description><category></category></item><item><title><![CDATA[android 9.0 系统铃声加载过程及添加卡二默认铃声]]></title><link>https://blog.youkuaiyun.com/potato_man/article/details/103419072</link><guid>https://blog.youkuaiyun.com/potato_man/article/details/103419072</guid><author>potato_man</author><pubDate>Mon, 09 Dec 2019 11:19:43 +0800</pubDate><description><![CDATA[1，扫描系统内部存储、外部存储的铃声

以下是部分log；从log开始跟这个流程。

2019-12-06 10:18:55.493 3256-3256/? V/MediaScannerReceiver: onReceive action = android.intent.action.MEDIA_MOUNTED
2019-12-06 10:18:55.498 3256-3256/? D/Medi...]]></description><category></category></item><item><title><![CDATA[PowerManagerService中的核心方法（三）---updateWakefulnessLocked]]></title><link>https://blog.youkuaiyun.com/potato_man/article/details/100072999</link><guid>https://blog.youkuaiyun.com/potato_man/article/details/100072999</guid><author>potato_man</author><pubDate>Mon, 26 Aug 2019 11:56:07 +0800</pubDate><description><![CDATA[updateWakefulnessLocked


更新设备的唤醒状态，根据当前的wake locks和用户活动状态决定设备是否需要开始进入屏保状态。

如果wakefullness改变，可能会修改mDirty的值。


2112      /**
2113       * Updates the wakefulness of the device.
2114       *
2115     ...]]></description><category></category></item><item><title><![CDATA[PowerManagerService中的核心方法（二）]]></title><link>https://blog.youkuaiyun.com/potato_man/article/details/99960072</link><guid>https://blog.youkuaiyun.com/potato_man/article/details/99960072</guid><author>potato_man</author><pubDate>Wed, 21 Aug 2019 17:27:48 +0800</pubDate><description><![CDATA[变量：


private int mDirty;//一个位域，指示电源状态的哪些部分已更改并需要重新计算。


132      // Dirty bit: mWakeLocks changed
133      private static final int DIRTY_WAKE_LOCKS = 1 &lt;&lt; 0;
134      // Dirty bit: mWakefuln...]]></description><category></category></item><item><title><![CDATA[PowerManagerService中的核心方法（一）]]></title><link>https://blog.youkuaiyun.com/potato_man/article/details/99621107</link><guid>https://blog.youkuaiyun.com/potato_man/article/details/99621107</guid><author>potato_man</author><pubDate>Thu, 15 Aug 2019 15:56:53 +0800</pubDate><description><![CDATA[一：


1587      /**
1588       * Updates the global power state based on dirty bits recorded in mDirty.
1589       *
1590       * This is the main function that performs power state transitions.
1591  ...]]></description><category></category></item><item><title><![CDATA[PowerManagerService 注册及初始化分析]]></title><link>https://blog.youkuaiyun.com/potato_man/article/details/97646912</link><guid>https://blog.youkuaiyun.com/potato_man/article/details/97646912</guid><author>potato_man</author><pubDate>Tue, 13 Aug 2019 15:21:11 +0800</pubDate><description><![CDATA[service的启动过程：

frameworks/base/services/java/com/android/server/SystemServer.java


303      public static void main(String[] args) {
304          new SystemServer().run();
305      }


 private void ...]]></description><category></category></item><item><title><![CDATA[9.0 添加自定义服务]]></title><link>https://blog.youkuaiyun.com/potato_man/article/details/95938408</link><guid>https://blog.youkuaiyun.com/potato_man/article/details/95938408</guid><author>potato_man</author><pubDate>Mon, 15 Jul 2019 14:59:17 +0800</pubDate><description><![CDATA[1，添加AIDL

 frameworks\base\core\java\android\os\ILgyManager.aidl



package android.os;
/** @hide */

interface ILgyManager
{
	String getVal();
    
}

2，在frameworks\base\Android.bp中添加我们的AIDL，让其编译进系...]]></description><category></category></item></channel></rss>