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

Orange Pi Zero3 Android TV、电视盒子万能遥控器

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_BACK4
按键HomeKEYCODE_HOME3
菜单键KEYCODE_MENU82
扬声器静音键KEYCODE_VOLUME_MUTE164
音量增加键KEYCODE_VOLUME_UP24
音量减小键KEYCODE_VOLUME_DOWN25
导航键 向上KEYCODE_DPAD_UP19
导航键 向下KEYCODE_DPAD_DOWN20
导航键 向左KEYCODE_DPAD_LEFT21
导航键 向右KEYCODE_DPAD_RIGHT22
导航键 确定键KEYCODE_DPAD_CENTER23
数字按键KEYCODE_0 - KEYCODE_97 - 16
退格键KEYCODE_DEL67
TV 键KEYCODE_TV170
电源键KEYCODE_TV_POWER177
多媒体键 播放/暂停KEYCODE_MEDIA_PLAY_PAUSE85
多媒体键 快进KEYCODE_MEDIA_FAST_FORWARD95
多媒体键 快退KEYCODE_MEDIA_REWIND89
多媒体键 上一首KEYCODE_MEDIA_PREVIOUS88
多媒体键 下一首KEYCODE_MEDIA_NEXT87

字符输入

支持中/英字符,借助手机软键盘将字符输入到 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

  • 35
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android ADB ShellAndroid Debug Bridge的缩写,旨在提供与Android设备之间的连接和调试,是Android开发的重要工具之一。使用ADB Shell可以直接在手机上执行Linux命令,而无需连接到PC上进行操作。 常用的ADB Shell命令有: 1. adb shell ls:列出当前目录下所有文件和文件夹; 2. adb shell ps:查看当前正在运行的进程; 3. adb shell cd:进入指定目录; 4. adb shell pwd:显示当前所在的目录; 5. adb shell rm:删除指定文件或目录; 6. adb shell mkdir:创建目录; 7. adb shell mv:移动或重命名文件或目录; 8. adb shell top:查看系统状态和资源情况。 此外,ADB Shell还可以用于发送广播、启动Activity、查看日志等操作,具有丰富的功能。需要注意的是,使用ADB Shell需要先将Android设备连接到PC并开启USB调试模式,否则无法正常执行命令。 总之,ADB ShellAndroid开发和调试必须要掌握的工具之一,对于改善开发体验和提高开发效率会起到至关重要的作用。 ### 回答2: Android adb shell指令是在Android开发中非常常用的一种工具。它可以连接到Android设备并对设备进行控制和管理。在使用这些指令前,需要先保证已经安装了Android SDK,并且将其添加到了系统的PATH中。 其中,adb shell命令是进入设备命令控制台的主要指令,可以通过这个命令进入设备的内部命令行环境,从而实现一些需要在命令行环境中操作的任务。比如: 1. 查看设备的文件系统:可以通过adb shell命令进入设备的内部命令行环境,并使用ls命令、cat命令、cd命令等来查看、打印、切换设备的文件系统。 2. 安装和卸载应用程序:可以通过adb install命令来将apk包安装到设备上,并使用adb uninstall命令卸载应用程序。 3. 查看设备的IP地址:可以通过adb shell ip命令来查看设备的IP地址和MAC地址。 4. 启动Activity:可以通过adb shell am命令启动Activity,从而实现模拟用户点击和操作的功能。 5. 清除应用数据:可以使用adb shell pm命令清除应用程序的数据,来实现数据清除的功能。 此外,还有一些其他的adb shell指令,比如adb shell dumpsys命令可以获取设备的系统信息、adb shell screencap命令可以截取设备的屏幕、adb shell input命令可以模拟用户操作输入等等。这些指令都能够提高开发效率,让开发者更方便地管理和调试Android设备。 ### 回答3: Android的开发者工具软件包中,有一个重要的组件——adbAndroid Debug Bridge),它被设计为一种模拟器上的调试工具,同时它也能够工作在真实的Android设备上。 adb是一个命令行工具,可以提供许多实用的功能,包括文件上传下载、设备状态监测、安装和卸载应用、执行Shell命令等等。 其中,adb shell指令是adb中最强大的一项指令,它可以帮助我们直接在设备上执行命令,操作设备上的文件、目录和进程等等。以下是几个常用的adb shell指令: 1. ls ls指令用来列出当前目录下的文件和文件夹,常用参数有: ls -a :列出目录下所有文件和文件夹,包括隐藏文件 ls -l :以详细的形式列出目录下的所有文件和文件夹,包括文件的属性和权限 2. cd cd指令用来进入指定的目录,可以使用绝对路径或相对路径: cd /sdcard :进入sdcard目录 cd .. :返回上一级目录 3. mkdir mkdir指令用来创建文件夹,使用方式: mkdir FolderName :创建名为FolderName的文件夹 4. rm rm指令用来删除文件或文件夹,使用方式: rm FileName :删除指定的文件 rm -r Folder :删除整个文件夹及其内容 5. ps ps指令用来列出设备上正在运行的进程,使用方式: ps :列出所有进程 ps | grep Keyword :列出包含关键字“Keyword”的进程 以上只是adb shell指令的部分功能,还有许多高级操作需要深入研究和学习。总之,adb shell指令在Android开发和调试中非常实用,可以提高效率和便捷性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值