【问题标题】:How to write event handler for buttons in adb shell?如何为 adb shell 中的按钮编写事件处理程序?
【发布时间】:2016-11-16 15:20:20
【问题描述】:

拥有字符设备的文件是否可以编写简单的shell脚本来处理不同的按钮事件?例如,如果按下音量降低 - 回显“低”字样,如果按下音量增大按钮 - 回显“高”。

现在我可以使用以下命令跟踪按钮按下事件:

$ cat /dev/input/event2
  ≈►   ☺ s ☺   ≈►  →╟♂ ☺ s     ·►  r±☻ ☺ r ☺   ·►  a»      ☺ r

当前输出包含有关 4 个事件的信息:

  • 音量降低(按键按下事件);
  • 音量降低(按键向上事件);
  • 音量增大(按键按下事件);
  • 提高音量(按键事件)。

每个事件由 16 个字节的数据组成。

【问题讨论】:

    标签: android linux bash


    【解决方案1】:

    你可以使用

    getevent -l
    

    并以纯文本形式获取事件,例如

    /dev/input/event1: EV_KEY       KEY_VOLUMEUP         UP                  
    /dev/input/event1: EV_SYN       SYN_REPORT           00000000            
    

    【讨论】:

    • Diego Torres Milano,感谢您提供有用的提示。应该提到的是,“getevent”实用程序可以与“-c”选项结合使用(-c:打印给定数量的事件然后退出)。
    【解决方案2】:

    感谢 Diego Torres Milano 的提示,现在我可以为我的 FM 单选按钮控制 shell 脚本编写最终解决方案了:

    #!/system/bin/sh
    
    while true
    do
        event=$(getevent -c 2)
    
        if busybox printf -- '%s' "$event" | busybox egrep -q -- "0073 00000001"
        then
            busybox printf "Volume UP\n"
            input keyevent 25
            am broadcast -a com.android.fm.player.tune.next
        fi
    
        if busybox printf -- '%s' "$event" | busybox egrep -q -- "0072 00000001"
        then
            busybox printf "Volume DOWN\n"
            input keyevent 24
            am broadcast -a com.android.fm.player.tune.prev
        fi
    done
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-02
      • 1970-01-01
      相关资源
      最近更新 更多