本文主要是介绍Portapack应用开发教程(九)加入喇叭功能,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
最近主要在改进portapack硬件,我现在内置电池硬件搞定了,开关也不难,只要改一下外壳就行,接下来的工作就是加入喇叭和麦克风了。
跟一个朋友聊起,原来portapack硬件上是支持喇叭的,只是软件没开。
我找了找资料,在原作的repo里找到个issue
https://github.com/furrtek/portapack-havoc/issues/284
有个老外的评论,推荐去看看这两个代码。
firmware\application\audio.cpp
firmware\common\ak4951.cpp
我看了以后发现觉得基本有戏。
然后我就在audio.cpp里在mute和unmute函数里仿造headphone的disable和enable加入了speaker的disable和enable。
加入的时候要注意,头文件里要实现几个虚函数,这样audio.cpp才能调用到ak4951.cpp里的喇叭相关函数。
否则会提示找不到speaker_enable等函数。至于怎么加入可以参考headphone相关函数。
然后我找了个小喇叭,两线的,两头分别接到3pin喇叭口的外侧两个脚,就有声音了,声音轻的话可以把喇叭贴在外壳上,形成共振(我感觉这个原理就跟人的手捏着天线可以增强接收效果一样)。另外右上角也可以调整音量。
如果充电宝供电,音量不能超过80,音量也不能低于70否则没声音。如果电池供电音量可以到99,但是在90以上会失真。
后来我发现如果一直开着喇叭,耗电挺厉害。
所以我想了个办法,在最上面一栏里加了个图标,用这个图标来控制喇叭是否打开。
这个图标在ui_navigation里加,可以仿照stealth图标。但是要让这个ui_navigation直接操作音频是不可能的。
我又仿造antenna_bias,让他去访问portapack.cpp里的变量和函数,然后portapack.cpp又可以访问到audio.cpp,这样一个完整的链条就实现了。具体做法请看我的github repo。
演示视频:
https://www.bilibili.com/video/BV1tt4y117wM
这篇关于Portapack应用开发教程(九)加入喇叭功能的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!