android 耳机插拔检测(kernel)
来源:互联网 发布:mac电脑单机游戏 编辑:程序博客网 时间:2024/06/09 13:48
Android的耳机检测其实代码改动很少的,也是因为少吧,所以一直没写文档。就这么拖了将近两个月。
驱动程序有三个实现版本:
其一是
:drivers/char/micco_hsdetect.c
它通过
kobject_uevent
上报状态给用户空间。
其二是:
drivers/input/keyboard/micco_keys.c
它通过
input_report_switch
上报事件给用户空间。
其三是:
drivers/switch/switch_micco.c
注册了一个
switch_dev
,这个好像是
android
平台专用的。
参考自:
http://blog.csdn.net/absurd/archive/2009/11/01/4754912.aspx
我是用第三种方法做的。
一、在littleton.c中注册platform_device
如下:
#ifdef CONFIG_SWITCH_GPIO
static structgpio_switch_platform_data headset_switch_data =
{
.name = "h2w",
.gpio = 127,
};
static structplatform_device headset_switch_device =
{
.name = "switch-gpio",
.dev =
{
.platform_data = &headset_switch_data,
}
};
#endif
littleton_init()中注册platform_device ,包括增加的headset_switch_device。
其中gpio_switch_platform_data 的name可以随意,但必须与上层的路径相符,gpio
号为耳机检测的中断GPIO,这里的127是指PXA310的GPIO127。platform_device
的name为\drivers\switch\switch_gpio.c 中的 platform_driver的name
1
static struct platform_driver gpio_switch_driver =
{
.probe= gpio_switch_probe,
.remove = __devexit_p(gpio_switch_remove),
.driver =
{
. name = "switch-gpio",
.owner = THIS_MODULE,
},
};
注册成功后可以使用shell查看开发板中/sys/class/switch目录下多了一个文件夹h2w
H2w 的监控和消息发送有android中的headsetobserver.java实现
- android 耳机插拔检测(kernel)
- android+耳机插拔和耳机按键检测
- Android4.×耳机插拔检测
- Android4.×耳机插拔检测
- Android 4.x耳机插拔检测实现方法
- Android 4.x耳机插拔检测实现方法
- Android 4.x耳机插拔检测实现方法
- android耳机插拔事件
- android 监听耳机插拔
- android 耳机插拔流程
- Audio笔记之耳机插拔检测
- android4.x 耳机插拔检测机制
- windows7下检测耳机麦克拔插
- Audio笔记之耳机插拔检测
- Android 耳机插拔处理流程
- Android 耳机按键与拔插监听
- wangchenfeng android 监听耳机插拔
- android耳机插拔的监听
- 如何投资才能赚钱
- android 电容屏(三):驱动调试之驱动程序分析篇
- 线性时间求最大区间间隔
- hdu 3016 Man Down(线段树)
- linux中软连接和硬连接的区别
- android 耳机插拔检测(kernel)
- 问题及代码
- 根据店id取出所有收款金额(自定义DAL层类中方法)
- C语言中的预处理指令
- C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区
- 技术领域中女性较少
- Mongodb查询文档
- MySQL时间日期函数使用大全详解
- 字符串操作