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

基于ADB Shell 实现的 Android TV、电视盒子万能遥控器 — ADB Remote ATV的更多相关文章

  1. Android TV 电视调试和遥控器事件监听

    Android TV 真机调试 要进行Android TV开发免不了要进行真机调试. 1.确定电视盒子和开发机器在同一局域网中 2.打开电视盒子的adb允许调试开关 3.进入adb所在文件夹进行adb ...

  2. 使用adb shell dumpsys检测Android的Activity任务栈

    谈起Android程序开发,就需要了解其四个主要的部件:Activity.Service.ContentProvider. BroadcastReceiver.而其中Activity是唯一直接控制程序 ...

  3. Android手机、电视(盒子) 打开ADB调试 一览表

    手机.电视(盒子) 打开ADB调试 一览表 一.手机打开ADB调试方法 序号 名称 描述 方式 1 华为手机 EMUI 1.设置 ->关于手机-> 版本号 点击(4~5次)2.返回设置 - ...

  4. ubuntu 使用adb shell命令识别android设备

    ubuntu 使用adb shell命令配置 在ubuntu下使用adb 命令识别Android设备需配置adb_usb.ini 文件 文件路径:  ~/.android/ ,若不存在创建该文件. a ...

  5. 安卓TV开发(三) 移动智能设备之实现主流TV电视盒子焦点可控UI

    前言:移动智能设备的发展,推动了安卓另一个领域,包括智能电视和智能家居,以及可穿戴设备的大量使用,但是这些设备上的开发并不是和传统手机开发一样,特别是焦点控制和用户操作体验上有很大的区别,本系列博文主 ...

  6. 【开源项目】电视盒子好用又强大的APP: TVRemoteIME

    TVRemoteIME 电视盒子的远程输入法应用,可跨屏远程输入.跨屏远程控制盒子.远程文件管理.HTTP/RTMP/MMS网络视频直播.ED2K/种子文件的视频文件边下边播 应用的诞生 自从家里有电 ...

  7. 电视盒子好用又强大的跨屏远程输入法 TVRemoteIME

    应用包下载地址: https://github.com/kingthy/TVRemoteIME/raw/master/released/IMEService-release.apk TVRemoteI ...

  8. Android系统在超级终端下必会的命令大全(adb shell命令大全)

    . 显示系统中全部Android平台: android list targets . 显示系统中全部AVD(模拟器): android list avd . 创建AVD(模拟器): android c ...

  9. Android adb shell命令大全

    1. 显示系统中全部Android平台: android list targets 2. 显示系统中全部AVD(模拟器): android list avd 3. 创建AVD(模拟器): androi ...

  10. Android成长记(1)-----android环境搭建与adb shell 命令

    整理一下学习android一步一步存下来的自己总结或是从网上摘抄的比较不错的文档,电脑要上交了,最舍不得的就是自己积累的这么点东西了,所以决定发布到黎梓小站,以供大家一起学习以及自己日后忘记了也有地方 ...

随机推荐

  1. 记录C++,读文件返回base64数据

    读文件返回base64函数: void CZZUser::hidFileToBase(const char* filePath) { // 文件 转 base64 // 计算文件长度 unsigned ...

  2. 推荐几款Vue后台管理系统的框架,以便备用

    推荐几款Vue后台管理系统的框架,以便备用 Vue.js 是一个目前比较流行的前端框架,在业界也算很有名气,今天这里为大家罗列一下基于Vue的后端管理的框架. 使用这些框架你会发现它包括了我们常用的路 ...

  3. TortoiseGit安装、配置(Git 小乌龟安装)

    1 TortoiseGit简介 tortoiseGit是一个开放的git版本控制系统的源客户端,支持Winxp/vista/win7.该软件功能和git一样 不同的是:git是命令行操作模式,tort ...

  4. pypinyin 获取拼音,作为智能设备的唤醒比对结果

    from pypinyin import lazy_pinyin,TONE,TONE2,TONE3,NORMAL a = "小七同学" b = "小琦同学" c ...

  5. 《Effective C#》系列之(零)——概要

    把全书的内容讲述完整可能需要很长时间,我可以先回答主要目录和核心的内容.如果您有任何特定问题或需要更详细的解释,请告诉我. <Effective C#>一书共包含50条C#编程建议,以下是 ...

  6. vuex合作怎么用仓库

  7. SRE技术保障平台-盯屏中心TAC: 混合云一站式告警运维平台

    简介: SRE技术保障平台-盯屏中心TAC: 混合云一站式告警运维平台 1.目标定位 1.1背景 告警管控平台种类繁多 告警出现后未及时发现处理最终导致故障产生 专有云监控能力拉起依赖版本升级,操作复 ...

  8. 用手机写代码:基于 Serverless 的在线编程能力探索

    ​简介:Serverless 架构的按量付费模式,可以在保证在线编程功能性能的前提下,进一步降低成本.本文将会以阿里云函数计算为例,通过 Serverless 架构实现一个 Python 语言的在线编 ...

  9. [Go] 浅谈 Golang struct 与 PHP class 的相似

    Golang 中的 struct 与 PHP 的 class 在使用方式上差不多. struct 中的成员可以类比 class 中的属性,struct 中的成员函数可以类比 class 中的方法. 对 ...

  10. 前端如何操作动态渲染的多个checkbox列表单选

    input[type=checkbox]:after{     content:"";     display:inline-block;     width:16px;      ...