各位兄弟,有个疑问,在Andoid里面除了xxx.rc里面启动服务外,其他服务是怎么启动的?主要说的是SystemServer.java文件ServerThread里面的,比方说电源管理,越详细越好,谢谢!
------解决方案--------------------
------解决方案--------------------
调用底层的库吧,c写的
------解决方案--------------------
好像要在framwork层实现
------解决方案--------------------
不懂,看源码有这么些内容
1.在ServerThread类的run中,把电源服务类BatteryService添加到服务管理器中。
Slog.i(TAG, "Battery Service");
battery = new BatteryService(context);
ServiceManager.addService("battery", battery);
2.BatteryService类主要有以下几个方法
2.1 isPowered,判断是否插入交流电源或者usb,执行充电处理
2.2 getBatteryLevel取得电量,0-100
2.3 shutdownIfNoPower,没电时关机
2.4 shutdownIfOverTemp,温度过高时关机,>68.0摄氏度
2.5 update,更新
2.6 sendIntent,广播电池状态
2.7 getIcon,取得状态图标
------解决方案--------------------
rc里的服务一般是底层的服务,调用一些bin或者sh的文件来执行。
还有一种系统服务是java文件实现的。一般在framwork/base/下会有service的代码。
网上应该有很多类似的资料,有同事很早就做过类似的开发了。
不过电源的管理范围很大,不知道楼主是要实现什么功能。是做省电方面的管理还是只是读取电池数据?
------解决方案--------------------
------解决方案--------------------
上层应用(.java)->
JNI调用(.cpp)->
*.conf->
.c->kernel驱动
以上是简略图,呵,大部分应用和底层驱动的链接是这种模式,具体情况具体分析
------解决方案--------------------