Android USB\HDMI等事件监听
来源:互联网 发布:java就业培训班 编辑:程序博客网 时间:2024/05/20 01:47
1,在system/core/init/init.c中service_start()中
创建socket:
int s = create_socket(si->name, socket_type, si->perm, si->uid, si->gid);
if (s >= 0) {
if (s >= 0) {
把创建的socket fd以环境变量的形式公布出去
publish_socket(si->name, s);
}
publish_socket(si->name, s);
}
ANDROID_SOCKET_"name"=fd
2,在system/core/include/cutils/sockets.h中
static inline int android_get_control_socket(const char *name)来根据环境变量获取前面创建的 fd
3, 由各模块调用上面的函数获取fd, 进行监听(这里以NetlinkHander为例,主要是监听USB,BATTERY,POWER,HDMI等事件)
NetlinkHandler::start()---->SocktLintener::startListener()---->android_get_control_socket().
紧接着创建一个新的纯种进行监听,SocketListener::threadStart()---->SocketListener::runListener();
4, 上面的监听线程会在收到消息后,如果不是新的设备监听请求,则调用onDataAvailable(),实际上就是NetlinkListener::onDataAvailable()--->NetlinkHandler::onEvent(),然后根据消息类型送到不同的处理模块解析处理;
5, 内核中则由lib/kobject_uevent.c中的kobject_uevent_env()实现写入消息,供上面建立的socket读取并进行分析。
- Android USB\HDMI等事件监听
- android应用中监听usb、sdcard事件
- Android监听USB插拔事件
- android学习之USB监听
- android 监听USB连接状态
- android 监听USB连接状态
- Android 5.0 源码 USB插拔事件监听(代码摘自google)
- Android 事件监听
- android 双击事件监听
- Android: 监听解锁事件
- Android 事件监听
- Android摇晃监听事件
- android事件监听机制
- Android.GridView事件监听
- Android 事件监听处理
- Android按钮事件监听
- Android.GridView事件监听
- Android.GridView事件监听
- android activity
- DAPM很好的文档,以备后用
- C++内存管理
- 创建、配置和使用自定义JSP标签
- winform实现发票打印功能
- Android USB\HDMI等事件监听
- linux下Android源代码的开发环境搭建
- pragma once 与 ifndef
- 向mysql数据库下的某个表中插入大量数据
- android-kernel 增加debug-fs调试方法
- windows下androidNDK环境配置
- VC笔记(一)
- 基于Java的图片文件格式转换和线性缩放(2)
- Android Context 详解