ADB Remote ATV Android TV 的遙控器,基於 ADB Shell 命令 ADB Remote ATV 是一個 Android TV 的遙控器,基於 ADB Shell 命令,泛用性更高。 下麵的 shell 命令,是軟體的基本原理,通過 shell 命令可模擬物理遙控器的基本按 ...
ADB Remote ATV
Android TV 的遙控器,基於 ADB Shell 命令
ADB Remote ATV 是一個 Android TV 的遙控器,基於 ADB Shell 命令,泛用性更高。
下麵的 shell 命令,是軟體的基本原理,通過 shell 命令可模擬物理遙控器的基本按鍵,此外還可以快捷啟動指定APP、藉助手機軟鍵盤輸入中/英字元等。
# 輸入事件
adb shell input text <string> # 向設備輸入字元
adb shell input keyevent <key_code> # 向設備輸入按鍵事件
# 啟動軟體
adb shell am start <package/activity> # 啟動設備上的軟體
shell ime set <app> # 切換輸入法
shell settings get secure default_input_method # 獲取當前輸入法
軟體功能
按鍵
對於的 shell 命令如下:
adb shell input keyevent <key_code> # 向設備輸入按鍵事件
其中的 keycode如下表:
功能 | 字元常量 | 數字鍵值 |
---|---|---|
返回鍵 | KEYCODE_BACK | 4 |
按鍵Home | KEYCODE_HOME | 3 |
菜單鍵 | KEYCODE_MENU | 82 |
揚聲器靜音鍵 | KEYCODE_VOLUME_MUTE | 164 |
音量增加鍵 | KEYCODE_VOLUME_UP | 24 |
音量減小鍵 | KEYCODE_VOLUME_DOWN | 25 |
導航鍵 向上 | KEYCODE_DPAD_UP | 19 |
導航鍵 向下 | KEYCODE_DPAD_DOWN | 20 |
導航鍵 向左 | KEYCODE_DPAD_LEFT | 21 |
導航鍵 向右 | KEYCODE_DPAD_RIGHT | 22 |
導航鍵 確定鍵 | KEYCODE_DPAD_CENTER | 23 |
數字按鍵 | KEYCODE_0 - KEYCODE_9 | 7 - 16 |
退格鍵 | KEYCODE_DEL | 67 |
TV 鍵 | KEYCODE_TV | 170 |
電源鍵 | KEYCODE_TV_POWER | 177 |
多媒體鍵 播放/暫停 | KEYCODE_MEDIA_PLAY_PAUSE | 85 |
多媒體鍵 快進 | KEYCODE_MEDIA_FAST_FORWARD | 95 |
多媒體鍵 快退 | KEYCODE_MEDIA_REWIND | 89 |
多媒體鍵 上一首 | KEYCODE_MEDIA_PREVIOUS | 88 |
多媒體鍵 下一首 | KEYCODE_MEDIA_NEXT | 87 |
字元輸入
支持中/英字元,藉助手機軟鍵盤將字元輸入到 Android TV 中。註意中文字元需要ADBKeyboard支持。
英文字元的 shell 命令如下:
shell input text <string> # 向設備輸入按鍵事件
中文字元的 shell 命令如下,需要ADBKeyboard的支持:
shell am start -a android.intent.action.VIEW -d <string>
切換輸入法命令如下:
shell ime set <app>
# 例如
shell ime set com.android.adbkeyboard/.AdbIME # 切換到ADBKeyboard
獲取當前輸入法:
shell settings get secure default_input_method
快捷啟動
下圖是一些可快速啟動的軟體
對應的 shell 命令如下:
shell am start <package/activity> # 向設備輸入按鍵事件
# 例如
shell am start com.github.tvbox.osc/.ui.activity.HomeActivity # 啟動TVBox
快捷啟動軟體可從軟體倉庫中添加,倉庫從線上地址中解析,該 json 文件為項目根目錄中的apps.json
。例如
[
{
"name": "TVBox",
"icon": "https://raw.githubusercontent.com/SX-Code/ADBRemoteATV/main/icons/tvbox.png",
"url": "com.github.tvbox.osc/.ui.activity.HomeActivity"
},
{
"name": "TVBox UI美化版",
"icon": "https://raw.githubusercontent.com/SX-Code/ADBRemoteATV/main/icons/tvbox.png",
"url": "com.github.tvbox.osc.tk/com.github.tvbox.osc.ui.activity.HomeActivity"
},
]
其中:
name
:為該軟體的名稱icon
:為該軟體的圖標,便於展示url
:為該軟體的啟動路徑。格式參考com.github.tvbox.osc/.ui.activity.HomeActivity
如何獲取一個 APP 的啟動路徑,可從該軟體的 AndroidManifest.xml 文件中獲取,下麵是一個示例文件,
- 從
manifest
標簽中找到package
屬性,為啟動路徑的包 package - 從帶有
LAUNCHER
的activity
中找到android:name
屬性,為啟動路徑的 activity package/activity
組合起來就是啟動命令的路徑參數。
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:compileSdkVersion="33"
android:compileSdkVersionCodename="13"
package="tech.simha.androidtvremote"
platformBuildVersionCode="33" platformBuildVersionName="13">
<application
android:appComponentFactory="androidx.core.app.CoreComponentFactory"
android:hardwareAccelerated="true"
android:icon="@mipmap/launcher_icon"
android:label="Remote ATV"
android:name="android.app.Application">
<activity
android:exported="true"
android:hardwareAccelerated="true"
android:launchMode="singleTop"
android:name="tech.simha.androidtvremote.MainActivity"
android:screenOrientation="portrait"
android:theme="@style/LaunchTheme"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
軟體界面
項目地址
Gitee:https://gitee.com/SX-Code/ADBRemoteATV
Github: https://github.com/SX-Code/ADBRemoteATV
鳴謝
ADBlib:https://github.com/cgutman/AdbLib
ADBKeyboard:https://github.com/senzhk/ADBKeyBoard?tab=readme-ov-file
圓形菜單按鍵:https://github.com/D10NGYANG/DL10RoundMenuView
數字進度條:https://github.com/daimajia/NumberProgressBar
本文來自博客園,作者:sw-code,轉載請註明原文鏈接:https://www.cnblogs.com/sw-code/p/18206967