利用termux-api和at指令实现可视化定时自动关闭wifi和蓝牙
本文最后更新于:2022年4月3日 上午
背景
所谓需求是人类进步的阶梯。
昨天晚上也就是今天凌晨233我漫无目的地刷着youtube,享受着科学上网带来的方便。突然直接按刷到了一个ASMR的视频,我听着感觉非常舒服,不会再胡思乱想了,很快就能进入入睡状态。遂决定带着耳机睡觉。平板便亮着屏幕放一边了。
过了一会儿,我突然意识到这可不行,平板一直亮着那我一起来不就没电了!但是屏幕不亮的话浏览器又不能正常运行。所以我马上坐起来,着手写一个关屏幕脚本。以下是我在凌晨很快写出来的临时脚本。
1 |
|
好吧,这个临时脚本low爆了,但是也确实实现了功能,我一早起来屏幕是灭的,电量是充足的,youtube的视频也被定格在了2小时40几分钟。
但是它的问题很严重。
- 不能后台运行
- 只关闭了屏幕,wifi和蓝牙没有关,依然耗电。
所以我今早一起来便开始研究改进方法,希望实现优雅的定时关屏幕、关wifi、关蓝牙。
解决办法
利用termux-api这个强大的工具,上午研究它的时候发现了一些非常好玩的用法,这里举两个例子。老杜看到了不要捶我
- 提示框。一句简单的termux-dialog命令就能调出安卓自带的提示框,而且种类繁多,非常牛逼。
- 可以直接把文字用谷歌的tts
TextToSpeech
念出来,至于音色嘛,就是大家熟悉的营销号2333。
以下为珍贵的音频片段
ok,我们了解到了termux-api的强大功能,在本次实践中的一个主要动作就是确定时间,因为我要根据ASMR视频的时长来确定什么时候关闭屏幕,这里我用到了termux-api中的 termux-dialog time,一运行就会弹出系统自带的时间选择器。
选择后会返回一个json格式的数据。
我们可以利用jq
这个命令来处理json数据,以下命令就能获得返回的时间
1 |
|
获得了时间,我们得需要一个方法来让termux到了时间自动执行屏幕、wifi、蓝牙的脚本。这里直接先给出switchoff.sh
脚本。利用了svc这个安卓自带的命令来关闭wifi和蓝牙,利用input keyevent 223来熄屏幕,十分简单。
1 |
|
定时运行脚本,之前接触过crontab这个强大的命令,但是crontab适合那种需要重复执行的脚本,而我这个关屏幕只需要运行一次,不太合适。
经过我的搜索,我发现了一个完美符合我预期的命令,at
。以下给出smartswitchoff.sh
脚本。
1 |
|
以下为演示视频
视频中利用了termux widget
这个插件,将~/.shortcuts
这个文件夹下的shell脚本可以通过桌面小控件的方式放在桌面上,实现点击运行。运行后我将switchoff时间设置在了下一分钟,点击确定后,从上至下的提示文字闪过。最后到达下一分钟,wifi按钮和蓝牙按钮依次点灭。最后屏幕熄灭。一套动作行云流水,十分优雅。完了,吹过了
战术总结
前几天那个adb命令打开app那篇博客里嘲讽了一下termux,这里我对termux郑重道歉。termux绝对是安卓端最强终端!
之前我对termux不屑的原因是因为我以为在termux里不能使用安卓自带的命令。而大家也看到了,我在今天的脚本里多次用到了安卓命令,比如svc
、input keyevent
等等,而这些只需要在termux里进入root用户就可以用,简直无敌。
今天也是见证了termux-api的强大,几句命令就实现了可视化界面交互体验,有一种开发app的感觉(
给大家炫耀一下我的termux全家桶(
今天可以安心听着ASMR睡觉啦!