Android FM 外部短天线支持(ez fm)

Android FM 外部播放功能(EZ FM),使用外部短天线搜台,默认FM是不支持外部功放播放功能的,因为硬件上需要FM天线低噪放大器的支持。

硬件原理

原理图:

默认使用耳机当做天线。

如果硬件上支持天线低噪放大器,原理图:


查找FM的代码,分析如何打开这个功能,因为在MTK平台只需要在projectconfig.mk中打开:MTK_FM_SHORT_ANTENNA_SUPPORT=yes就打开这个功能,在FM驱动中使能天线就可以了。

软件流程

展讯9820w配置方法肯定是不一样的,通过查找代码分析:

1、FM的APP使用到了FMPlay

Z:\project\hk811\idh.code\packages\apps\FMPlayer\src\com\thunderst\radio\FMPlay.java


2、FM的APP使用到了FMplayService

Z:\project\hk811\idh.code\packages\apps\FMPlayer\src\com\thunderst\radio\FMplayService.java


检索ro.device.support.antenna



所以可以大概领悟到,ro.device.support.antenna貌似是支持短天线的配置。

检索其他项目有没有使用该功能的项目:



仿照sp9820a_1c10_native.mk在sp9820w_6c10.mk增加ro.device.support.antenna=true

然后全部编译,下载开机,发现FM可以不插耳机打开,但是搜索不到电台,所以该功能已经是打开了的。下一步就是找到FM驱动在切换天线的位置增加是能操作。

在FMplayService.java中有切换天线的服务:


继续寻找


3、framework 层

Z:\project\hk811\idh.code\frameworks\base\core\java\android\hardware\fm\FmManager.java



4、找到JNI层的代码。

frameworks/base/core/jni/fm/android_hardware_fm.cpp


Z:\project\hk811\idh.code\frameworks\base\core\jni\fm\KTFmImpl.cpp



Z:\project\hk811\idh.code\device\sprd\scx35l\sp9820w_6c10\BoardConfig.mk


5.HAL层代码:

Z:\project\hk811\idh.code\vendor\sprd\partner\trout\libfm\Android.mk

Z:\project\hk811\idh.code\vendor\sprd\partner\trout\libfm\libfm_trout.c






6、下面进入内核层

Z:\project\hk811\idh.code\kernel\arch\arm\configs\sp9820w_6c10_defconfig


查找dts对FM配置:


在Z:\project\hk811\idh.code\kernel\drivers\media\radio\sprd2331\fmdrv_ops.c



在probe中申请gpio:


测试成功可以控制天线使能,插拔耳机FM都可以播放正常。拔掉耳机FM搜索台正常。

可以同步查看串口log查看系统状态。












  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值