Termux-Api 是一个Termux的插件,它通过app与命令行配合,与手机硬件完成一些交互。比如读取通话记录,发送短信,拨打电话,录音,开关Wifi等。让Termux玩出更多功能。
- 安装app
在F-Droid中下载:https://f-droid.org/packages/com.termux.window/ (注意不需要下载F-Droid,它相当于一个应用市场。直接下载下方的APP即可:https://f-droid.org/repo/com.termux.window_14.apk) 当前版本0.14。
为了实现功能,它需要手机上众多的权限(好怕怕)。
- 安装命令
apt install termux-api 或 pkg install termux-api
命令安装在 /data/data/com.termux/files/usr/bin 目录中,功能丰富。
https://zhuanlan.zhihu.com/p/381044910
termux-audio-info
termux-backup
termux-battery-status
termux-brightness
termux-call-log
termux-camera-info
termux-camera-photo
termux-change-repo
termux-chroot
termux-clipboard-get
termux-clipboard-set
termux-contact-list
termux-dialog
termux-download
termux-fingerprint
termux-fix-shebang
termux-info
termux-infrared-frequencies
termux-infrared-transmit
termux-job-scheduler
termux-keystore
termux-location
termux-media-player
termux-media-scan
termux-microphone-record
termux-nfc
termux-notification
termux-notification-list
termux-notification-remove
termux-open
termux-open-url
termux-reload-settings
termux-reset
termux-restore
termux-sensor
termux-setup-storage
termux-share
termux-sms-inbox
termux-sms-list
termux-sms-send
termux-speech-to-text
termux-storage-get
termux-telephony-call
termux-telephony-cellinfo
termux-telephony-deviceinfo
termux-toast
termux-torch
termux-tts-engines
termux-tts-speak
termux-usb
termux-vibrate
termux-volume
termux-wake-lock
termux-wake-unlock
termux-wallpaper
termux-wifi-connectioninfo
termux-wifi-enable
termux-wifi-scaninfo
termux-battery-status 获取设备电池信息
{
"health": "GOOD", // 电池健康状态
"percentage": 94, // 当前电量百分比
"plugged": "UNPLUGGED", // 是否已插入电源 PLUGGED_AC 插入电源
"status": "DISCHARGING", // 是否正在充电 CHARGING 充电中
"temperature": 33.0, // 电池温度
"current": 252000 //
}
termux-brightness brightness 设置屏幕亮度
brightness 0-255
termux-call-log -l limit -o offset 获取通话记录列表
-l limit 每次获取条数 默认10 可选参数
-o offset 从第几条开始获取 默认0 可选参数
[
{
"name":"名称",
"phone_number":"号码",
"date":"通话时间",
"duration":"通话时长"
}
...
]
termux-camera-info 获取相机信息
termux-camera-photo -c camera-id filename 调用摄像头拍照
-c camera-id ermux-camera-info输出的id 默认0 可选参数 (在我的手机中,0为后置摄像头,1为前置摄像头)
filename 文件保存的路径 必选参数
拍照没有任何声音反馈。
termux-clipboard-get 获取粘贴板数据
termux-clipboard-set text 设置粘贴板数据
termux-contact-list 获取联系人列表
[
{
"name":"名称",
"nuumber":"号码"
}
...
]
termux-dialog 显示弹窗
termux-dialog confirm -t title -i hint
termux-dialog checkbox -t title -v ",,,"
termux-dialog counter -t title -r min,max,start
termux-dialog date -t title -d "dd-MM-yyyy k:m:s"
termux-dialog radio -t title -v ",,,"
termux-dialog sheet -t title -v ",,,"
termux-dialog spinner -t title -i hint
termux-dialog speech -t title -i hint
termux-dialog text -t title -i hint -m -n -p
termux-dialog time -t title
-t title 弹窗标题
-i hint 弹窗内容
-v ",,," 以逗号分割的选项列表
-r min,max,start 时数弹窗的数值 min:最小值 max:最大值 start:初始值
-d "dd-MM-yyyy k:m:s" 日期弹窗的输出格式
-m 输入框弹窗多行输入,不能和-n共用
-n 输入框弹窗输入数字,不能和-m共用
-p 输入框弹窗输入密码
返回
{
"code":0,
"text":"值",
"values":""
}
termux-download -d description -t title -p path url 使用系统下载管理器下载资源
-d description 下载通知的描述
-t title 下载通知的标题
-p path 下载文件要保存的路径
url 要下载的url
termux-fingerprint 使用指纹传感器校验身份
{
"errors":[],
"failed_attempts":0,
"auth_result":"AUTH_RESULT_SUCCESS"
}
termux-infrared-frequencies 查询红外发射器支持的载波频率
[
{
"min": 30000,
"max": 30000
},
...
]
termux-infrared-transmit -f frequency 发送红外信号
以赫兹为单位的 IR 载波频率
termux-job-scheduler 延迟或定时运行Termux脚本
可选项 | 功能 |
---|---|
-p/–pending | 列出待处理的任务并退出 |
–cancel-all | 取消所有待处理的任务并退出 |
–cancel | 取消指定ID的任务并退出 |
-s/–script path | 调用脚本的路径 |
–job-id int | 任务ID(会覆盖之前任何拥有相同ID的任务) |
–period-ms int | 设定任务大约每隔多少ms执行一次(默认为0,表示只执行一次)。注意:从Android N开始,最小时间为900,000ms (15分钟)。 |
–network text | 仅当所选网络可用时运行(默认为any): [any, unmetered, cellular, not_roaming, none] |
–battery-not-low boolean | 仅当电池电量充足时运行,默认为true(Android O及以后) |
–storage-not-low boolean | 仅当存储空间充足时运行,默认为false(Android O及以后) |
–charging boolean | 仅当接通电源时运行,默认为false |
–persisted boolean | 重启后任务是否保留,默认为false |
–trigger-content-uri text | (Android N及以后) |
–trigger-content-flag int | 默认为1(Android N及以后) |
termux-location -p gps/network/passive -r once/last/updates 获取当前位置
-p gps/network/passive 获取位置的方式 gps 可选参数
-r once/last/updates 获取时机(once:一次 last:上次 updates:更新) 默认once
{
"latitude": 33,
"longitude": 114,
"altitude": 102,
"accuracy": 90,
"vertical_accuracy": 961,
"bearing": 0.0,
"speed": 0.0,
"elapsedMs": 38,
"provider": "gps"
}
播放媒体文件
termux-media-player info
termux-media-player play
termux-media-player play <file>
termux-media-player pause
termux-media-player stop
termux-media-scan -r 目录 -v 媒体扫描
-r 目录 要扫描的目录
-v 详细扫描
termux-microphone-record -d -f -l -e -b -r -c -i -q 录音
-d 使用默认值录音
-f 文件 录音保存文件
-l 时长限制 录音时长限制,单位:秒,0表示不限制
-e 格式 指定录音格式 (aac, amr_wb, amr_nb)
-b 比特率 指定录音比特率 (单位 kbps)
-r 频率 指定录音频率 (单位 Hz)
-c 声道数 指定录音声道数 (1, 2, ...)
-i 获取当前录音信息
-q 退出录音
termux-notification 发送通知
--action action 点击通知时执行的动作
--alert-once 通知被编辑时不要再次提醒
--button1 text 在通知的第一个按钮上显示的文本
--button1-action action 点击第一个按钮要执行的动作
--button2 text 在通知的第二个按钮上显示的文本
--button2-action action 点击第二个按钮要执行的动作
--button3 text 在通知的第三个按钮上显示的文本
--button3-action action 点击第三个按钮要执行的动作
-c/--content content 要在通知中显示的内容,优先级高于标准输入
--group group 通知分组
-h/--help 显示帮助信息
--help-actions 显示动作定义帮助信息
-i/--id id 通知id,同一id的通知两次发送时之前的将被替换
--image-path path 通知中要显示的图片绝对路径
--led-color rrggbb 呼吸灯颜色
--led-off milliseconds 呼吸灯呼吸时关闭时长 800
--led-on milliseconds 呼吸灯呼吸时打开时长 800
--on-delete action 通知被清理时执行的动作
--ongoing 发送持久化通知
--priority prio 通知优先级 - high/low/max/min/default
--sound 通知铃声
-t/--title title 通知标题 - -
--vibrate pattern 通知振动,时长以逗号分割 ,500,800,500,900 - -
--type type 通知类型 default/media
--media-next 通知类型为media时,显示下一曲按钮
--media-pause 通知类型为media时,显示暂停按钮 - -
--media-play 通知类型为media时,显示播放按钮 - -
--media-previous 通知类型为media时,显示上一曲按钮
termux-notification-remove id 移除通知
termux-sensor -h -a -l -s “,,,” -d ms -n num 获取传感器信息
-a 显示全部传感器信息和实时数据(警告:可能对电池有影响)
-l 显示可用的传感器列表
-s ",,," 要监听的传感器,以逗号分割
-d ms 接收传感器数据之前延迟,单位:ms
-n num 接收传感器数据次数,最小值为1。
continuous:续续接收 continuous
-c 释放被占用的传感器
{
"sensors": [
"Elliptic Proximity",
"pedometer Wakeup", // 计步器唤醒
"pedometer Non-wakeup", // 计步器 非唤醒
"pedometer Wakeup",
"pedometer Non-wakeup",
"stationary_detect_wakeup", // 静止_检测_唤醒
"stationary_detect",
"sns_smd Wakeup",
"ccd_tilt Wakeup",
"Rotation Vector Non-wakeup", // 旋转矢量
"oem9_raiseCAM Wakeup",
"oem9_raiseCAM Non-wakeup",
"orientation Non-wakeup", // 方向
"oem5 Wakeup",
"oem5 Non-wakeup",
"NonUi Wakeup",
"NonUi Non-wakeup",
"pickup Wakeup",
"pickup Non-wakeup",
"oem13_light_smd Wakeup",
"oem13_light_smd Non-wakeup",
"3d_signature Wakeup",
"3d_signature Non-wakeup",
"motion_detect_wakeup",
"motion_detect",
"ak0991x Magnetometer-Uncalibrated Non-wakeup",
"ak0991x Magnetometer Non-wakeup", 地磁感应?
"eqm_wakeup",
"eqm",
"linear_acceleration",
"har_wakeup",
"har",
"gravity Non-wakeup",
"Game Rotation Vector Non-wakeup",
"lsm6dso Gyroscope Non-wakeup",
"Aod Wakeup",
"Aod Non-wakeup",
"device_orient Wakeup",
"device_orient Non-wakeup",
"dbtap Wakeup",
"dbtap Non-wakeup",
"lsm6dso Wakeup",
"lsm6dso Non-wakeup",
"sns_geomag_rv Non-wakeup",
"dual_als Ambient Light Sensor Wakeup",
"dual_als Ambient Light Sensor Non-wakeup",
"bosch_bmp285 Pressure Sensor Non-wakeup",
"tsl2560 Wakeup",
"tsl2560 Non-wakeup",
"lsm6dso Accelerometer-Uncalibrated Non-wakeup",
"lsm6dso Gyroscope-Uncalibrated Non-wakeup",
"fod Wakeup",
"fod Non-wakeup",
"lsm6dso Accelerometer Non-wakeup",
"Touch Sensor"
]
}
termux-sensor -s "Rotation Vector" 角度传感器数据
{
"Game Rotation Vector Non-wakeup": {
"values": [
0.010926156304776669,
0.002207772806286812,
-0.02074624039232731,
0.9997226595878601
]
}
}
termux-sensor "orientation" 方向传感器
{
"orientation Non-wakeup": {
"values": [
351.484375, //角度
-1.109375,
-0.390625
]
}
}
termux-sensor -s "ak0991x Magnetometer-Uncalibrated" 地磁感应?
{
"ak0991x Magnetometer-Uncalibrated Non-wakeup": {
"values": [
-66.86250305175781,
109.38750457763672, // 当我把磁铁放近时,它的值达到200以上。
-118.9312515258789,
-78.36000061035156,
152.16000366210938,
-88.19999694824219
]
}
}
{
"ak0991x Magnetometer Non-wakeup": {
"values": [
13.537500381469727,
-25.350000381469727,
-29.437501907348633
]
}
}
线性加速器
{
"linear_acceleration": {
"values": [
-0.001542210578918457,
-2.1982192993164062E-4,
0.0018968582153320312
]
}
}
重力传感器
{
"gravity Non-wakeup": {
"values": [
0.31680336594581604,
0.2980765700340271,
9.796998977661133
]
}
}
游戏旋转矢量
{
"Game Rotation Vector Non-wakeup": {
"values": [
0.016912467777729034,
-0.022994782775640488,
-0.17011407017707825,
0.9850108623504639
]
}
}
陀螺仪
{
"lsm6dso Gyroscope Non-wakeup": {
"values": [
7.635590736754239E-5,
-3.8177953683771193E-4,
5.344913806766272E-4
]
}
}
手机横屏1/竖屏0
{
"device_orient Non-wakeup": {
"values": [
0
]
}
}
环境光传感器
{
"dual_als Ambient Light Sensor Wakeup": {
"values": [
206.32875061035156
]
}
}
气压传感器
{
"bosch_bmp285 Pressure Sensor Non-wakeup": {
"values": [
951.1624755859375
]
}
}
未校准加速器
{
"lsm6dso Accelerometer-Uncalibrated Non-wakeup": {
"values": [
0.6735795736312866,
0.12203395366668701,
9.820443153381348,
0,
0,
0
]
}
}
未校准的陀螺仪
{
"lsm6dso Gyroscope-Uncalibrated Non-wakeup": {
"values": [
-7.635590736754239E-5,
-0.0016034740256145597,
-0.007101099472492933,
-1.0758292773971334E-4,
-0.0020321274641901255,
-0.0074532171711325645
]
}
}
termux-share -a action -c content-type -d -t title file 分享
-a action 分享内容要执行的动作类型 view edit/send/view
-c content-type 分享的数据类型 从文件后缀猜测,如果数据是从标准输入来的,默认为 ✅
-d 如果选择一个则分享到默认的接收器而不显示接收器列表 - ✅
-t title 分享的标题 分享的文件名 ✅
termux-sms-list -d -l limit -n -o offset -t type 获取短信列表
-d 显示创建短信的日期
-l limit 每页显示多少条数据 10
-n 显示号码 0
-o offset 从第几个后开始获取
-t type 要显示的短信类型 inbox all|inbox|sent|draft|outbox
[
{
"threadid":186,
"type":"inbox",
"read":true,
"number":"号码",
"received":"接收时间",
"body":"短信内容"
}
]
termux-sms-send -n “,,,” text 发送短信
-n ",,," 要接收短信的号码,以逗号分割
text 要发送的短信内容
termux-storage-get filename 选择文件
filename 要写入的文件
termux-telephony-call number 拨打电话
termux-telephony-cellinfo 从设备上获取有关所有侦听到的小区广播(包括主要和相邻小区)的信息。
{
"type":"类型",
"registered":true,
"asu":40,
"dbm":-97,
"level":2,
"ci":1936181100,
"pci":120,
"tac":61292,
"mcc":460,
"mnc":1
}
termux-telephony-deviceinfo 获取通讯设备信息
{
"data_enabled": "true", // 移动数据是否允许
"data_activity": "none",
"data_state": "connected",
"device_id": null,
"device_software_version": null,
"phone_count": 2,
"phone_type": "gsm",
"network_operator": "46001",
"network_operator_name": "中国联通",
"network_country_iso": "cn",
"network_type": "lte",
"network_roaming": false,
"sim_country_iso": "cn",
"sim_operator": "46001",
"sim_operator_name": "中国联通",
"sim_serial_number": null,
"sim_subscriber_id": null,
"sim_state": "ready"
}
termux-toast -h -b -c -g -s text 弹出消息
-h 显示帮助信息 - -
-b 背景色 gray ✅
-c 前景色 white ✅
-g 位置 middle top, middle, bottom
-s 短时显示 - ✅
text 要显示的内容 - ❌
termux-torch status 打开/关闭手电筒 on, off
termux-tts-engines 获取语音引擎信息
termux-tts-speak -e engine -l language -n region -v variant -r rate -s stream text 朗读文本
-e engine 要使用的语音引擎 - termux-tts-engines输出的引擎
-l language 要朗读的语言 - -
-n region 要朗读语言所在区域 - -
-v variant 要朗读语言的变体 - -
-p pitch 朗读的声调 1.0 -
-r rate 朗读的语速 1.0 -
-s stream 音频流 NOTIFICATION ALARM, MUSIC, NOTIFICATION, RING, SYSTEM, VOICE_CALL
text 要朗读的文本 - ❌
termux-usb -l -r -e command USB设备列表
要正常使用该功能,需要安装libusb和clang包,可使用apt install libusb clang安装
-l 列表所有可用的USB设备 - -
-r 如果没有权限弹出权限请求弹窗 - -
-e command 使用引用设备的文件描述符作为其参数执行指定的命令
termux-vibrate -d duration -f 振动
-d duration 振动时长 1000 ✅
-f 在静音模式下强制振动
termux-volume stream volume 获取/设置音量
stream 要改变的音量 - alarm, music, notification, ring, system, call
volume 音量
[
{
"stream": "call",
"volume": 11,
"max_volume": 11
},
{
"stream": "system",
"volume": 0,
"max_volume": 15
},
{
"stream": "ring",
"volume": 10,
"max_volume": 15
},
{
"stream": "music",
"volume": 50,
"max_volume": 150
},
{
"stream": "alarm",
"volume": 8,
"max_volume": 15
},
{
"stream": "notification",
"volume": 10,
"max_volume": 15
}
]
termux-wallpaper -f file -u url -l 更改桌面壁纸
-f file 使用文件设置桌面壁纸
-u url 使用网络资源设置桌面壁纸
-l 设置锁屏壁纸
termux-wifi-connectioninfo 获取当前WiFi连接信息
{
"bssid": "02:00:00:00:00:00",
"frequency_mhz": 5745,
"ip": "192.168.31.251",
"link_speed_mbps": 260,
"mac_address": "02:00:00:00:00:00",
"network_id": -1,
"rssi": -68,
"ssid": "<unknown ssid>",
"ssid_hidden": true,
"supplicant_state": "COMPLETED"
}
termux-wifi-enable status 打开/关闭WiFi true, false
termux-wifi-scaninfo 扫描可用WiFi
termux-notification-list 获取消息
在经过授权后,可以获取到弹出消息。比如微信支付的弹出消息。
但在我的应用中需要获取付款方留言,似乎还没有办法做到。
{ “id”: -656511598, “tag”: “”, “key”: “0|com.tencent.mm|-656511598|null|10273”, “group”: “”, “packageName”: “com.tencent.mm”, “title”: “微信支付”, “content”: “二维码赞赏到账0.01元”, “when”: “2021-12-22 15:39:49” },