android 耳机.pdf

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
android 耳机

Android 耳机系统综述 本文为本人随笔所写,欢迎转载。由于个人的见识和能力有限,不能面面俱到,也可能存在 谬误,敬请各位指出,本人的邮箱是hyouyan@126.com,博客是 在 Android 中其实并没有耳机系统这个称呼,只是我为了方便解释而加的。在整个 android 系统中,跟耳机相关的部分有: Linux 驱动:主要完成耳机的插入的检测,hook 键的检测,其中hook 键包括长按 和短按。 在frameworks 中的耳机的观察的文件(HeadsetObserver.java ),这个文件主要是检 测耳机是否插入和名字,并把相关的内容通过Intent 广播出去。 跟音频相关,改变音频输出的路径(这边涉及到播放音乐和电话部分)。 跟事件的处理相关,这部分主要体现hook 的功能,主要是接听电话,挂断电话等。 事件的处理又分为linux 的事件处理和android 上的事件处理。 我将分块叙述,由于各种原因,我在这不便把源代码公布,如果你需要的我的帮助,可 以发邮件给我,也可以在我blog 上留言,谢谢! Linux驱动 首先要定义一个 switch_dev (struct switch_dev sdev; )并把它初始化,如( = ……);然后注册一个switch device: ret = switch_dev_register(switch_data-sdev); if (ret 0) { goto err_switch_dev_register; } switch_dev_register 这个函数在switch_class.c 中实现 int switch_dev_register(struct switch_dev *sdev) { int ret; if (!switch_class) { ret = create_switch_class(); if (ret 0) return ret; } sdev-index = atomic_inc_return(device_count); sdev-dev = device_create(switch_class, NULL, MKDEV(0, sdev-index), NULL, sdev-name); if (IS_ERR(sdev-dev)) return PTR_ERR(sdev-dev); ret = device_create_file(sdev-dev, dev_attr_state); if (ret 0) goto err_create_file_1; ret = device_create_file(sdev-dev, dev_attr_name); if (ret 0) goto err_create_file_2; dev_set_drvdata(sdev-dev, sdev); sdev-state = 0; return 0; err_create_file_2: device_remove_file(sdev-dev, dev_attr_state); err_create_file_1: device_destroy(switch_class, MKDEV(0, sdev-index)); printk(KERN

文档评论(0)

xxj1658888 + 关注
实名认证
内容提供者

教师资格证持证人

该用户很懒,什么也没介绍

领域认证该用户于2024年04月12日上传了教师资格证

1亿VIP精品文档

相关文档