首页 > 系统相关 >基于ADB Shell 实现的 Android TV、电视盒子万能遥控器 — ADB Remote ATV

基于ADB Shell 实现的 Android TV、电视盒子万能遥控器 — ADB Remote ATV

时间:2024-05-22 20:10:17浏览次数:27  
标签:shell github ATV Shell ADB https com KEYCODE

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
  • 从带有LAUNCHERactivity中找到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

鸣谢

ADBlibhttps://github.com/cgutman/AdbLib

ADBKeyboardhttps://github.com/senzhk/ADBKeyBoard?tab=readme-ov-file

圆形菜单按键https://github.com/D10NGYANG/DL10RoundMenuView

数字进度条https://github.com/daimajia/NumberProgressBar

标签:shell,github,ATV,Shell,ADB,https,com,KEYCODE
From: https://www.cnblogs.com/sw-code/p/18206967

相关文章

  • shell(一)
    shell(一)单选题1、在bash中,快捷键【Ctrl+Z】的作用是什么?A、中止前台任务B、给当前文件加上.eofC、将前台任务转入后台D、注销当前用户2、使用sed命令删除文件file中的所有文本行开头的空格,下列命令正确的是。A、sed-r's/^\s+//g'fileB、.sed-r'/^./s*///g'file......
  • Shell阶段04 shell流程之case语句, 服务启动停止脚本(rsync, nginx), shell加锁机制
    1.流程控制语句之case语句case主要作用是对程序的选择,循环等操作#语法:case变量in变量值1)命令序列;;#命令序列结束符变量值2)命令序列;;变量值3)命令序列;;变量值N)命令序列......
  • powershell7升级笔记
    https://learn.microsoft.com/zh-cn/powershell/scripting/install/installing-powershell-on-windows?view=powershell-7.3#msi安装powershell7法一:推荐MSI安装方式,全打钩,可以自动配置环境变量和右键菜单https://learn.microsoft.com/zh-cn/powershell/scripting/install/i......
  • 在 Windows 上运行,如何以管理员身份运行你的命令提示符或 PowerShell
    在Windows上以管理员身份运行命令提示符或PowerShell是非常简单的过程。以下是具体步骤:以管理员身份运行命令提示符:在开始菜单搜索框中输入cmd,然后从搜索结果中找到并点击命令提示符。右键点击命令提示符图标,然后在弹出的菜单中选择以管理员身份运行。以管理员身份......
  • shell脚本测试
    1、$#:表示执行脚本传入参数的个数2、$*:表示执行脚本传入参数的列表(不包括$0)3、$$:表示进程的id;Shell本身的PID(ProcessID,即脚本运行的当前进程ID号)4、$!:Shell最后运行的后台Process的PID(后台运行的最后一个进程的进程ID号)5、$@:表示获取执行脚本传入的所有参数6、$0:表示执行......
  • Shell编程之免交互
    目录1.HereDocument免交互2.HereDocument常规用法(1)免交互执行命令(2)免交互创建并编辑文件内容(3)tee3.Expect免交互4.编写expect免交互脚本步骤5.read1.HereDocument免交互使用I/O重定向的方式将命令列表提供给交互式程序标准输入的一种替代品命令<<标记...内容 #标记之......
  • PowerShell脚本,可以用于自动加入或退出域:BAT批处理脚本,可以用于自动加入或退出域:
    PowerShell中创建网页版的自动加入或退出域脚本,您可以使用PowerShellWebAccess(PWA)功能。PWA允许您在Web浏览器中通过安全的HTTPS连接远程运行PowerShell命令,并可与Windows身份验证一起使用。以下是一个示例脚本,可用于创建PWA网页版的自动加入或退出域:powershellCopyCode......
  • 【工具使用】【Shell脚本】【gitlab】下拉所有的仓库代码
    1 前言电脑重置了或者新的项目代码,仓库里二三十个,一个一个拉属实有点拉跨,今儿空了整了个脚本,可以拉下所有的仓库代码。2 前置需要装一个解析json的,windows的话可以直接下载:下载,mac的话可以再官网下载:官网地址。然后加入到PATH下,效果如下:git上新建个access_token,下......
  • adb
    Android调试桥接器,简称adb(Androiddebugbridge)列出所有已连接的设备命令:adbdevices运行指定的设备的shell命令:adb-sserialNumbershell从本地主机拷贝文件到远程主机命令:adb-sserialNumberpushC:\Users\coolkit\Desktop\新建文件夹\test.txt/data从远程......
  • SHELL编程
    Shell是一种用户与操作系统内核进行交互的界面。它是命令行解释器,用户通过输入命令,Shell解释并执行这些命令,从而操作系统中的各种功能得以实现。脚本需要以#!/bin/bash开头,并赋予执行权限脚本的执行方式:赋予脚本执行权限chmodu+xhello.sh,然后通过相对路径./hello.sh或通......