今天跟大家唠唠我这几天折腾的“妻子的电话最新版本”这事儿,说起来也是有点好笑,程序员的浪漫,有时候可能就是折腾一些看起来没啥用的东西。
事情是这样的,我老婆经常忘记把手机放哪儿,有时候着急出门就找不到,扯着嗓子喊我帮忙找。喊多了,我就想,能不能搞个小玩意,让她一按按钮,手机就响,省得她天天河东狮吼。
说干就干,我寻思着这玩意儿不难,主要分两部分:一部分是手机上的APP,负责接收指令然后让手机响;另一部分是个小硬件,上面有个按钮,按下就给手机APP发指令。
第一步:APP开发
这部分我熟,毕竟是老本行。打开Android Studio,新建个工程。一开始我想用最简单的Service来监听,后来一想,这玩意儿得常驻后台,还是用个前台服务,搞个通知栏图标,免得被系统杀掉。
APP的核心功能就是接收指令,然后播放铃声。指令这块,我打算用最简单的HTTP请求,硬件那边按下按钮就往手机发个POST请求。铃声这块,直接用MediaPlayer放个默认铃声得了,简单粗暴。
小编温馨提醒:本站只提供游戏介绍,下载游戏推荐89游戏,89游戏提供真人恋爱/绅士游戏/3A单机游戏大全,点我立即前往》》》绅士游戏下载专区
代码写起来也快,大概花了半天时间,APP基本功能就搞定了。能接收指令,能响铃,还能设置静音模式下是否响铃。
第二步:硬件制作
这部分对我来说就是个挑战了,毕竟我不是搞硬件的。还好现在开源硬件那么多,Arduino Nano啥的,随便买一块就能用。
我买了个Arduino Nano,一个按钮,一个WiFi模块(ESP8266),还有一些杜邦线。硬件连接很简单,按钮一端接Arduino的一个数字IO口,另一端接地;WiFi模块按照网上的教程接
接下来就是写Arduino的代码了。这部分我参考了很多网上的资料,主要就是让Arduino连接WiFi,然后监听按钮的按下事件,按下就发送HTTP POST请求到手机APP的IP地址。
代码写起来有点费劲,毕竟我对Arduino不熟,各种库函数都要查。不过好在网上资料多,抄抄改改,也搞定了。
第三步:联调测试
硬件和软件都搞定了,接下来就是联调测试了。我先把APP装到老婆手机上,然后把硬件接上电源。
按下按钮,手机没反应。我擦,啥情况?赶紧打开logcat,看看APP收没收到请求。结果发现,APP根本没收到请求。
我开始排查问题。检查WiFi模块是否连接上WiFi,结果发现连接正常。然后检查APP的IP地址是否正确,也确认没问题。
我发现是防火墙的问题!手机上的防火墙把HTTP请求给拦截了。我赶紧在防火墙里把APP加入白名单,重新测试,终于成功了!
按下按钮,手机响了!我老婆听到手机响,一脸懵逼,问我这是啥玩意儿。我给她解释了一遍,她乐得合不拢嘴,说我真棒。
第四步:优化改进
虽然基本功能实现了,但我还是觉得有点粗糙。是铃声太单调了,能不能自定义铃声?是硬件太大了,能不能做小一点?
我开始研究自定义铃声。Android APP自定义铃声挺简单的,就是把铃声文件放到指定目录下,然后在APP里选择就行了。我花了点时间,把自定义铃声功能加了进去。
硬件这块,我打算换个更小的开发板,比如ESP32-C3 Mini。这个板子体积更小,功能也更强,而且价格也不贵。
我还想加个外壳,让硬件看起来更精致一点。不过3D打印我不太会,只能先用纸壳凑合一下了。
总结
这回折腾“妻子的电话最新版本”,虽然看起来没啥用,但确实让我学到了不少东西。不仅巩固了Android开发的知识,还接触了硬件开发,感觉挺有意思的。
最重要的是,老婆很开心,这就足够了。以后我会继续折腾一些小玩意,让生活更有乐趣。
下次有机会,再跟大家分享我的其他实践记录。