Termux Api

时间:2025-01-30 09:27:32

Termux-Api

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

安装Termux-Api

pkg install termux-api

Termux:API用法

获取设备电池信息
命令:termux-battery-status
返回结果:

{
  "health": "GOOD", // 电池健康状态 
  "percentage": 94, // 当前电量百分比
  "plugged": "UNPLUGGED", // 是否已插入电源
  "status": "DISCHARGING", // 是否正在充电
  "temperature": 33.0, // 电池温度
  "current": 252000 // 电池当前放电电流,电位微安,如果设备当前正在充电,则该值是负数
}

设置屏幕亮度
命令:termux-brightness brightness
权限:.WRITE_SETTINGS
入参:

参数 说明 默认值 可选
brightness 亮度值 - 0-255

获取通话记录列表
命令:termux-call-log -l limit -o offset
权限:.READ_CALL_LOG
入参

参数 说明 默认值 可选
-l limit 每次获取条数 10
-o offset 从第几条开始获取 0

返回结果:

[
  {
    "name":"名称",
    "phone_number":"号码",
    "date":"通话时间",
    "duration":"通话时长"
  }
  ...
]

获取相机信息
命令:termux-camera-info
返回结果:

[
  {
    "id": "0",
    "facing": "back",
    "jpeg_output_sizes": [
      {
        "width": 4080,
        "height": 3072
      },
      ...
    ],
    "focal_lengths": [
      7.590000152587891
    ],
    "auto_exposure_modes": [
      "CONTROL_AE_MODE_OFF",
      "CONTROL_AE_MODE_ON",
      "CONTROL_AE_MODE_ON_AUTO_FLASH",
      "CONTROL_AE_MODE_ON_ALWAYS_FLASH"
    ],
    "physical_size": {
      "width": 11.423999786376953,
      "height": 8.60159969329834
    },
    "capabilities": [
      "backward_compatible",
      "constrained_high_speed_video",
      "raw",
      "yuv_reprocessing",
      "private_reprocessing",
      "read_sensor_settings",
      "manual_sensor",
      "burst_capture",
      "manual_post_processing"
    ]
  },
  ...
]

调用摄像头拍照
命令:termux-camera-photo -c camera-id filename
权限:
入参

参数 说明 默认值 可选
-c camera-id ermux-camera-info输出的id 0
filename 文件保存的路径 -

获取粘贴板数据
命令:termux-clipboard-get

权限:读取粘贴板权限

出参:直接输出粘贴板内容

设置粘贴板数据
命令termux-clipboard-set text

入参

参数 说明 默认值 可选
text 要复制到粘贴板的内容 -

获取联系人列表
命令:termux-contact-list
权限:.READ_CONTACTS
返回结果:

[
  {
    "name":"名称",
    "nuumber":"号码"
  }
  ...
]

显示弹窗
命令

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Ⓜ️s” 日期弹窗的输出格式 -
-m 输入框弹窗多行输入,不能和-n共用 -
-n 输入框弹窗输入数字,不能和-m共用 -
-p 输入框弹窗输入密码 -

出参

{
  "code":-1,
  "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
权限:无

参数 说明 默认值 可选
frequency 以赫兹为单位的 IR 载波频率。 -

延迟或定时运行Termux脚本
命令:termux-job-scheduler
权限:无

获取当前位置
命令: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

入参

参数 说明 默认值 可选
info 查看当前播放信息 - -
play 暂停后继续播放 - -
play 文件路径 播放指定的文件 - -
pause 暂停 - -
stop 停止 - -

媒体扫描
命令:termux-media-scan -r 目录 -v
入参

参数 说明 默认值 可选
-r 目录 要扫描的目录 -
-v 详细扫描 -

录音
命令

termux-microphone-record -d -f <file> -l <limit> -e <encoder> -b <bitrate> -r <rate> -c <count> -i -q

权限:.RECORD_AUDIO
入参

参数 说明 默认值 可选
-d 使用默认值录音 - -
-f 文件 录音保存文件 - -
-l 时长限制 录音时长限制,单位:秒,0表示不限制 0 -
-e 格式 指定录音格式 (aac, amr_wb, amr_nb) - -
-b 比特率 指定录音比特率 (单位 kbps) - -
-r 频率 指定录音频率 (单位 Hz) - -
-c 声道数 指定录音声道数 (1, 2, …) - -
-i 获取当前录音信息 - -
-q 退出录音 - -
返回结果:

{
  "isRecording":true,
  "outputFile":"录音文件"
}

发送通知
命令: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
入参

参数 说明 默认值 可选
id 要移除的通知id,使用termux-notification发送通知时定义的id -

获取传感器信息
命令

termux-sensor -h -a -l -s ",,," -d ms -n num

入参

参数 说明 默认值 可选
-h 显示帮助信息 - -
-a 显示全部传感器信息和实时数据(警告:可能对电池有影响)
-l 显示可用的传感器列表
-s “,” 要监听的传感器,以逗号分割
-d ms 接收传感器数据之前延迟,单位:ms
-n num 接收传感器数据次数,最小值为1。continuous:续续接收 continuous
-c 释放被占用的传感器

返回结果:

{
  "sensors":[
    "可用的传感器列表",
    ...
  ]
}

分享
命令: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
权限:.READ_CONTACTS

入参

参数 说明 默认值 可选
-d 显示创建短信的日期
-l limit 每页显示多少条数据 10
-n 显示号码 0
-o offset 从第几个后开始获取
-t type 要显示的短信类型 inbox all

返回结果:

[
  {
    "threadid":186,
    "type":"inbox",
    "read":true,
    "number":"号码",
    "received":"接收时间",
    "body":"短信内容"
  }
]

发送短信
命令:termux-sms-send -n ",,," text
权限:.SEND_SMS

入参

参数 说明 默认值 可选
-n “,” 要接收短信的号码,以逗号分割
text 要发送的短信内容

选择文件
命令:termux-storage-get filename

入参

参数 说明 默认值 可选
filename 要写入的文件 -

拨打电话
命令termux-telephony-call number
权限:.CALL_PHONE

入参

参数 说明 默认值 可选
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"
}

显示一个Toast
命令termux-toast -h -b -c -g -s text

入参

参数 说明 默认值 可选
-h 显示帮助信息 - -
-b 背景色 gray
-c 前景色 white
-g 位置 middle top, middle, bottom
-s 短时显示 -
text 要显示的内容 -

打开/关闭手电筒
命令termux-torch status

入参

参数 说明 默认值 可选
status 状态 - on, off

获取语音引擎信息
命令:termux-tts-engines

返回结果:

[
  {
    "name":"包名",
    "label":"名称"
    "default":true
  },
  ...
]

朗读文本
命令

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 要朗读的文本 -

USB设备列表
命令termux-usb -l -r -e command

依赖包
要正常使用该功能,需要安装libusb和clang包,可使用apt install libusb clang安装
权限:USB权限

入参

参数 说明 默认值 可选
-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 设置锁屏壁纸

获取当前WiFi连接信息
命令:termux-wifi-connectioninfo

返回结果:

{
  "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"
}

打开/关闭WiFi
命令termux-wifi-enable status

入参

参数 说明 默认值 可选
status 要更改的wifi状态 true, false

扫描可用WiFi
命令:termux-wifi-scaninfo
权限:定位权限
返回结果:

[
  {
    "bssid": "68:8b:0f:f6:6f:96",
    "frequency_mhz": 2412,
    "rssi": -50,
    "ssid": "CMCC-nJtm",
    "timestamp": 584216631835,
    "channel_bandwidth_mhz": "20"
  },
  ...
]