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