在安卓手机上添加一言组件
突发奇想想给手机加个一言组件.搜索了一下 F-droid 和 github,现成的几个软件都不太满意.
发现手机上装的快捷方式 app(包名为 com.syyf.quickpay)支持在桌面上添加文本组件,还能用 shell 命令修改文本内容.我有一计.jpg
使用以下指令可修改此部件: am broadcast -a appwidget.action.update_text --ei widget_id 7 --es text '文本内容' --ei tvSize 16 com.syyf.quickpay
自定义中添加一个 shell 命令,在文本组件的关联任务中设置一下,就可以通过点击来刷新一言了.
接下来的问题就是如何获取一段句子.shuf
和 perl
在安卓里没有,但是 awk
是有的.面向 AI 编程后可以得到:
awk 'BEGIN { srand() } rand() < 1/NR { line=$0 } END { print line }' filename
可以随机抽取文件中的一行内容.那么如果我的文字带有换行呢?
把换行用 \n
代替.
awk 'BEGIN{ srand() } rand() < 1/NR { line=$0 } END { gsub(/\\n/, "\n", line); printf line}' filename
这样就行了.
创建目录 /sdcard/hitokoto/
,在里面放点 txt 文件即可随机抽取.用 termux 测试了一下效果还行.
使用以下指令可修改此部件:
am broadcast -a appwidget.action.update_text --ei widget_id 7 --es text '文本内容' --ei tvSize 16 com.syyf.quickpay
把抽取的一言套到修改文件的代码里,保存成一个快捷方式:
am broadcast -a appwidget.action.update_text --ei widget_id 7 --es text "$(awk 'BEGIN { srand() } rand() < 1/NR { line=$0 } END { gsub(/\\n/,"\n",line); print line }' /sdcard/hitokoto/*.txt)" --ei tvSize 16 com.syyf.quickpay
即可实现点击文本框时刷新一言.
Hitokoto - 一言 提供了在线接口和可供下载的 json 文件.