前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利用termux-api和at指令实现可视化定时自动关闭wifi和蓝牙 - wuuconix's blog

利用termux-api和at指令实现可视化定时自动关闭wifi和蓝牙 - wuuconix's blog

作者头像
wuuconix
发布2023-01-30 15:07:39
1.6K0
发布2023-01-30 15:07:39
举报
文章被收录于专栏:wuuconixwuuconixwuuconix

背景

所谓需求是人类进步的阶梯。

昨天晚上也就是今天凌晨233我漫无目的地刷着youtube,享受着科学上网带来的方便。突然直接按刷到了一个ASMR的视频,我听着感觉非常舒服,不会再胡思乱想了,很快就能进入入睡状态。遂决定带着耳机睡觉。平板便亮着屏幕放一边了。

过了一会儿,我突然意识到这可不行,平板一直亮着那我一起来不就没电了!但是屏幕不亮的话浏览器又不能正常运行。所以我马上坐起来,着手写一个关屏幕脚本。以下是我在凌晨很快写出来的临时脚本。

12

sleep 10000 #睡眠10000s,因为那个视频大概3个小时sudo input keyevent 223

好吧,这个临时脚本low爆了,但是也确实实现了功能,我一早起来屏幕是灭的,电量是充足的,youtube的视频也被定格在了2小时40几分钟。

但是它的问题很严重。

  1. 不能后台运行
  2. 只关闭了屏幕,wifi和蓝牙没有关,依然耗电。

所以我今早一起来便开始研究改进方法,希望实现优雅的定时关屏幕、关wifi、关蓝牙。

解决办法

利用termux-api这个强大的工具,上午研究它的时候发现了一些非常好玩的用法,这里举两个例子。老杜看到了不要捶我

  1. 提示框。一句简单的termux-dialog命令就能调出安卓自带的提示框,而且种类繁多,非常牛逼。
termux-dialog
termux-dialog
老杜是以下那一种?
老杜是以下那一种?
  1. 可以直接把文字用谷歌的tts TextToSpeech念出来,至于音色嘛,就是大家熟悉的营销号2333。
termux-tts-speak
termux-tts-speak

以下为珍贵的音频片段

ok,我们了解到了termux-api的强大功能,在本次实践中的一个主要动作就是确定时间,因为我要根据ASMR视频的时长来确定什么时候关闭屏幕,这里我用到了termux-api中的 termux-dialog time,一运行就会弹出系统自带的时间选择器。

时间选择器
时间选择器

选择后会返回一个json格式的数据。

json
json

我们可以利用jq这个命令来处理json数据,以下命令就能获得返回的时间

1

termux-dialog time | jq .text

time
time

获得了时间,我们得需要一个方法来让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里不能使用安卓自带的命令。而大家也看到了,我在今天的脚本里多次用到了安卓命令,比如svcinput keyevent等等,而这些只需要在termux里进入root用户就可以用,简直无敌。

今天也是见证了termux-api的强大,几句命令就实现了可视化界面交互体验,有一种开发app的感觉(

给大家炫耀一下我的termux全家桶(

termux全家桶
termux全家桶

今天可以安心听着ASMR睡觉啦!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021年8月9日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 解决办法
  • 战术总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档