(摘) Termux-Api

声明:内容源自网络,版权归原作者所有。若有侵权请在网页聊天中联系我

Termux-Api 是一个Termux的插件,它通过app与命令行配合,与手机硬件完成一些交互。比如读取通话记录,发送短信,拨打电话,录音,开关Wifi等。让Termux玩出更多功能。

  1. 安装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。

为了实现功能,它需要手机上众多的权限(好怕怕)。

  1. 安装命令

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” },