非触控屏安卓设备(安卓TV)中adb shell input tap命令失效问题咨询
adb shell input tap Not Working on Non-Touchscreen Android TV Hey there, I’ve run into this exact issue with Android TVs before—they don’t handle touch events the same way touchscreen Android devices do, which is why your input tap command is falling flat. Let’s break down why this happens and the reliable workarounds you can use:
Why input tap Fails on Android TV
Android TVs are built for remote control navigation, not touch input. Most TV firmware doesn’t even listen for touch events at all—even if you’ve enabled pointer location and have precise coordinates, the system ignores the touch tap signal because it’s not expecting that input type.
Solutions to Simulate Remote Control Actions
Instead of touch taps, you need to mimic the remote control’s native key events or use mouse-based input if supported. Here are the most effective methods:
1. Use input keyevent to Mimic Remote Buttons
This is the go-to approach for Android TVs. You can send key codes that correspond to remote control actions (like D-pad navigation, select, back, etc.). Here are the most common key codes you’ll need:
- D-pad Up:
19 - D-pad Down:
20 - D-pad Left:
21 - D-pad Right:
22 - Select/OK:
23(DPAD_CENTER) or66(ENTER) - Back:
4 - Home:
3
Example workflow to navigate to a button and select it:
# Move focus up twice adb shell input keyevent 19 adb shell input keyevent 19 # Move focus right once adb shell input keyevent 22 # Tap the select button adb shell input keyevent 23
If you need a specific custom remote button’s key code, capture it with:
adb shell getevent
Run this command, then press the target button on your remote. You’ll see output like /dev/input/eventX: 0001 0066 00000001—convert the hex code 0066 to decimal (102 in this case) and use that with input keyevent.
2. Try Mouse-Based Tap (If Supported)
Some Android TVs support mouse input (even without a physical mouse connected). You can simulate a mouse click instead of a touch tap with:
adb shell input mouse tap x y
This sends a mouse click event at the specified coordinates, which might be recognized by the TV’s system if it supports mouse navigation.
3. Target UI Controls Directly with UiAutomator (Advanced)
If you need to interact with a specific UI element without relying on coordinates or navigation, use UiAutomator:
- Dump the current UI layout to get element details:
adb shell uiautomator dump /sdcard/ui_dump.xml adb pull /sdcard/ui_dump.xml - Open the XML file and find the element’s
resource-idortextattribute. - Write a simple UiAutomator script to tap the element (you’ll need to package it into a JAR, but this is the most reliable method for complex UIs).
Final Notes
Stick with input keyevent for most cases—it’s the most consistent way to interact with Android TVs via ADB. Touch taps just aren’t part of the TV’s input design, so they’ll rarely work regardless of how accurate your coordinates are.
内容的提问来源于stack exchange,提问作者Josh

