You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android getevent与sendevent:树莓派控制安卓电视盒技术问询

树莓派通过ADB使用sendevent控制安卓电视盒指南

1. 获取sendevent可用命令的方法

在未root的安卓电视盒上,确实没法直接访问/dev/input/eventxx文件读取按键映射,只能通过录制getevent输出来获取对应按键的sendevent命令,具体操作:

  • 先在树莓派上连接电视盒:adb connect [电视盒IP地址]
  • 启动事件录制:adb shell getevent
  • 此时操作电视盒的物理按键(比如方向键、确认键),终端会实时输出该按键对应的事件数据,示例输出:
    /dev/input/event1: 0001 0066 00000001
    /dev/input/event1: 0000 0000 00000000
    /dev/input/event1: 0001 0066 00000000
    /dev/input/event1: 0000 0000 00000000
    
  • 按Ctrl+C停止录制,把这些输出内容保存下来,就是你需要的按键事件模板

输出字段说明:

  • /dev/input/event1:事件对应的输入设备路径
  • 0001:事件类型(这里是按键事件)
  • 0066:具体按键的编码
  • 00000001/00000000:按键状态(1=按下,0=松开)
  • 最后一行的0000 0000 00000000是同步事件,必须保留,用来通知系统事件完成

2. 发送sendevent的格式与延时处理

命令格式

sendevent的标准格式如下,参数之间用空格分隔:

adb shell sendevent <设备路径> <类型码> <按键码> <状态码>

注意所有十六进制的码可以直接用数字(比如0001写成1也能生效,不过保留原格式更不容易出错)

延时的作用与添加位置

安卓系统需要识别“按下-松开”的完整按键动作,所以在按下事件和松开事件之间必须加延时,一般0.1秒(100ms)就足够让系统识别,用adb shell sleep 0.1实现。

完整示例

以录制到的“方向上”按键为例,对应的sendevent命令序列:

# 发送按键按下事件
adb shell sendevent /dev/input/event1 0001 0066 1
# 延时100ms,模拟真实按键按下时长
adb shell sleep 0.1
# 发送按键松开事件
adb shell sendevent /dev/input/event1 0001 0066 0
# 延时后发送同步事件
adb shell sleep 0.1
adb shell sendevent /dev/input/event1 0000 0000 0

你可以把常用的按键事件写成shell脚本,比如tv_control.sh,方便快速调用:

#!/bin/bash

# 定义方向上按键的事件函数
press_up() {
    adb shell sendevent /dev/input/event1 0001 0066 1
    adb shell sleep 0.1
    adb shell sendevent /dev/input/event1 0001 0066 0
    adb shell sleep 0.1
    adb shell sendevent /dev/input/event1 0000 0000 0
}

# 调用函数执行按键操作
press_up

给脚本添加执行权限:chmod +x tv_control.sh,运行./tv_control.sh即可触发方向上按键。

内容的提问来源于stack exchange,提问作者kapios

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 20:10:36