当前位置: 首页 > news >正文

rk3568 android12 hdmi、耳机、喇叭音频切换

文章目录

  • 前言
  • 一、耳机extcon状态的上报处理
    • 1.1、驱动
    • 1.2、封装切换接口
  • 二、hdmi音频extcon状态的上报处理
    • 2.1、驱动
    • 2.2、 封装切换接口
  • 三、喇叭状态的处理
    • 3.1、驱动
    • 3.2、 封装切换接口
  • 四、驱动创建切换音频的文件节点
    • 4.1、添加驱动
    • 4.2、切换音频驱动代码实现
    • 4.3、通过命令对切换音频设备输出
  • 五、APK操作文件节点进行音频切换
    • 5.1、activity_main.xml
    • 5.2、MainActivity.java
    • 5.3、Apk对切换音频设备输出


前言

1、系统存在音频的优先级:耳机<一 hdmi <一 喇叭,插入耳机之后只能从耳机上输出音频
2、耳机、hdmi都是通过extcon子系统进状态的上报,喇叭只有当耳机、hdmi状态处于断开状态是才声音
从上面的两个现象上总结,我们可以通过extcon子系统对耳机和hdmi的状态进行手动切换,系统层检测到extcon子系统上报的设备状态进行判断,自动去切换音频的路由。从而达到从不同设备中输出声音。


一、耳机extcon状态的上报处理

1.1、驱动

kernel-4.19/drivers/headset_observe/rk_headset.c

1.2、封装切换接口

diff --git a/drivers/headset_observe/rk_headset<

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • k8s(六)---pod
  • 【Material-UI】Checkbox 组件中的 Label Placement 设置详解
  • 基于SpringBoot+Vue的校园失物招领系统(带1w+文档)
  • 【产品经理】产品经理的产出有哪些?产品方案解决方案有哪些?
  • 零基础5分钟上手谷歌云GCP核心云开发技能 - 搭建和维护高可用数据库集群
  • 【JavaScript】数组四大方法命名 得push pop shift unshift的原因 和功能
  • cookie与session的区别+springboot使用
  • i2c讲解以及zyqn中的使用
  • vue的diff算法的【双端比较】策略
  • C++中如果函数a的参数是class v,class z是v的子类,可否将z的对象当参数传给函数a,可以
  • SystemUI plugin 开发
  • 2024年中职语文统编教材线上培训答案
  • 多线程 02:线程实现,创建线程的三种方式,通过多线程下载图片案例分析异同(Thread,Runnable,Callable)
  • python 文件打开、读、关闭练习
  • 【物联网】微信小程序ios如何自动打开蓝牙
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • docker容器内的网络抓包
  • ES6简单总结(搭配简单的讲解和小案例)
  • HTML中设置input等文本框为不可操作
  • JavaScript实现分页效果
  • JAVA多线程机制解析-volatilesynchronized
  • jquery cookie
  • pdf文件如何在线转换为jpg图片
  • python3 使用 asyncio 代替线程
  • SpriteKit 技巧之添加背景图片
  • Vue.js-Day01
  • 前端性能优化--懒加载和预加载
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 阿里云ACE认证学习知识点梳理
  • ​2021半年盘点,不想你错过的重磅新书
  • #如何使用 Qt 5.6 在 Android 上启用 NFC
  • $.each()与$(selector).each()
  • (10)STL算法之搜索(二) 二分查找
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (分类)KNN算法- 参数调优
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (附源码)ssm高校实验室 毕业设计 800008
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (六)c52学习之旅-独立按键
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (十三)MipMap
  • (算法)区间调度问题
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • . Flume面试题
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .Net 路由处理厉害了
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • .net 使用ajax控件后如何调用前端脚本