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喇叭口的外侧两个脚,就有声音了,声音轻的话可以把喇叭贴在外壳上,形成共振(我感觉这个原理就跟人的手捏着天线可以增强接收效果一样)。另外右上角也可以调整音量。

扫描二维码关注公众号,回复: 11810277 查看本文章

如果充电宝供电,音量不能超过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

猜你喜欢

转载自blog.csdn.net/shukebeta008/article/details/105897595