欢迎来到gary的位于博客园的(没太多技术含量的)博客

Android与电视盒,电脑投屏、技术工具、遥控器之外的操作方式等

本文又臭又长,内容较杂,请善用目录链接

这篇文章不针对Android设备型号,所讲内容(胡乱记录)大部分已测试适用于Android 4.4或以上电视盒子。(不过,别玩太多,没多大用,有用的是祝大家买到的是一个性价比高又有足够好的配套工具使用的TV盒子(当前有了没有?),不用像本文这样浪费时间弄那么多麻烦玩意。)

这篇文章不针对盒子型号,我手上目前有的设备有两个:

  1. 一个Android 8的,官方固件带root的盒子。ARM64v8。两个USB口,一个是USB 3.0。网线口。16G。

  2. 买某服务配送的电视盒子,设计给仅观看它们的某些节目用的,Android 4.4,32位ARM7,性能就那样1G运存,ROM空间倒是可以在root后装点东西进去。带有网线口和Wifi(有些盒子对热点参数很挑剔,否则Wifi很慢)、两个USB口。

电视盒子如果装Android手机的App,都可以装也95%可以运行,但实际发现可能是因为没有针对电视硬件优化过的原因,会比手机上使用卡,而且许多App放视频的时候无法硬解占CPU 99%,而且因屏幕方向不同,显示尺寸策略不同,有些用起来有点怪。

因此有人说,目前买智能电视盒子不太值,不如买个手机USB转HDMI。

或者使用手机与智能电视局域网投屏也不错,这个目前也有许多App实现了。

实际测试一些大站的TV App比手机App能看的视频少(发现一些普通人上传的视频不让电视看),买剧更贵。

本篇默认读者有一定的技术,写得较简略,且有点乱,因此不适合完全不懂的人阅读。如果你只是个用户消费者,这篇大部分内容不适合你看。我自己是常在Linux上以adb shell操作Android设备的,因此本篇会带有许多命令操作内容

这里记录下(有root后)安装一些技术人喜欢用的工具类App,开源方案为主,及Android电视与电脑(Linux为主)配合的一些方法,包括有电脑控制电视、电脑向电视投屏、手机控制电视等奇技淫巧。也有少量提及家庭媒体相关的App。

弄的过程中鼠标键盘还是需要准备的,无线的最好,毕竟在客厅电视前。USB插口设计给插U盘放电影,但也可以插鼠标键盘。

exFat及NTFS注意:买回来发现这个Android 8 盒子是不支持读取exFat的U盘的。而附赠的旧盒子竟然支持~。经查那些制造商没有给ms钱,也(暂时)没有采用其他第三方技术,就很可能不会支持这两个文件系统。于是把exFat的U盘格成了Fat32。

Fat32只是在Windows下格式化时被限制在<32G,所以找个Linux格式化一下就可以最多支持8T。单个文件最大4G无法突破。

解决时间无法自动同步问题

较新版本Android默认估计采用了遥远处我们正常无法连接的NTP服务器来同步时间。而如果手动设置时间,关掉自动同步,有些盒子断电后时间复原。

用下面命令设置让它用国内的NTP服务器

settings put global ntp_server ntp1.aliyun.com

使用App来开关网络adb

如果进系统设置里开关adb麻烦,可以用一些App

com.matoski.adbm(或com.github.sryze.wirebug,或siir.es.adbWireless

终端模拟器与开机脚本

已有远程adb,但再装个终端App也无妨

安装SSH server,以及在SSH中开关adb

(除以下笨方案外,Termux及其包中也提供有sshd)

adb没有密码,一直开着不够安全。

装一个可以设置密码的SSH server(这里用了net.xnano.android.sshserver)。在SSH登录上去后可以再用命令去开关adb

# 关闭adbd
setprop service.adb.tcp.port -1
killall  adbd

# 打开adbd
setprop service.adb.tcp.port 5555 (也可以换个非标准端口,防恶意扫描)
killall  adbd
adbd & 

可与此SSH服务器配合的bash脚本:

TV_IP=
TV_SSH_USER=
TV_SSH_PASSWORD=

function ssh_cmd() {
    local PID

    local AS
    local USER PASS IP PORT
    AS=$1
    IP=$2;  PORT=$3;  USER=$4;  PASS=$5;  shift;shift;shift;shift;shift

    sshpass -p "$PASS"  ssh   ${USER}@${IP} -p $PORT -tt  << EOF &
su  -c "$@" $AS
EOF

PID=$!
sleep 5
kill $PID
}
function tv_cmd() {
    local AS=$1
    shift
    ssh_cmd $AS $TV_IP 2222 $TV_SSH_USER $TV_SSH_PASSWORD "$@"
}

# 例:

# 要打开某url
tv_cmd "shell" am start -a android.intent.action.VIEW -d <URL>

# 允许adb
tv_cmd "root" "setprop service.adb.tcp.port 5555; killall  adbd; nohup adbd >/dev/null 2>&1  ; sleep 1"

# 关闭adb
tv_cmd "root" "setprop service.adb.tcp.port -1; killall  adbd"

手动添加IPv6地址和路由

正常情况下不用手动的,有时特殊情况下才需要。

把以下内容放到/data/data/com.termux/files/home/.termux/boot/目录里

#!/data/data/com.termux/files/usr/bin/bash

ipv6prefix="2xxx:xxxx:xxxx:xxxx/64"

generate_random_lan_ip6_local() {
    local r1 r2 r3 r4 r5 r6 r7 r8 r9
#         r1=$( printf "%x" $(($RANDOM%240+16)) )
    r2=$( printf "%x" $(($RANDOM%240+16)) )
    r3=$( printf "%x" $(($RANDOM%240+16)) )
    r4=$( printf "%x" $(($RANDOM%240+16)) )
    r5=$( printf "%x" $(($RANDOM%240+16)) )
    r6=$( printf "%x" $(($RANDOM%240+16)) )
    r7=$( printf "%x" $(($RANDOM%240+16)) )
    r8=$( printf "%x" $(($RANDOM%240+16)) )
    r9=$( printf "%x" $(($RANDOM%240+16)) )
    echo "$r2$r3:$r4$r5:$r6$r7:$r8$r9"
}

myipv6="${ipv6prefix%::*}:$(generate_random_lan_ip6_local)"
echo "Generated my random ipv6 $myipv6"

echo "Going to add random ipv6 addr to your host..."
su -c "ip -6 a add $myipv6/64 dev eth0"

su -c "ip -6 route add ::1 dev"
su -c "ip -6 route add $ipv6prefix::/64 dev eth0"
su -c "ip -6 route add fe80::/64 dev eth0"
su -c "ip -6 route add default via fe80::1 dev eth0"

F-Droid客户端(旧界面版)

装个第三方的老界面版本的eu.bubu1.fdroidclassic。官方的App对一些旧盒子来说吃不消。

禁用原来的源后添加清华源(目前测试不能用https)

http://mirrors.tuna.tsinghua.edu.cn/fdroid/repo/  
http://mirrors.tuna.tsinghua.edu.cn/fdroid/archive

指纹填

43238D512C1E5EB2D6569F4A3AFBF5523418B82E0A3ED1552770ABB9A9C9CCAB

控制哪个app禁止或可以上网

AFWall+(dev.ukanth.ufirewall)不错

Android 4 的得找旧版本2.9.9

盒子基本技术型设置和安装TV上的工具App

安装一个适合Android TV的桌面Launcher

这里安装的是当贝桌面(2.1.3.1)

> 如果将来某处不幸无法回到当贝桌面了,也可以用 > > ``` > am start -n com.dangbei.tvlauncher/com.dangbei.tvlauncher.IndexActivity > ``` > > 命令运行当贝。

(这一个可选)然后装一个com.twsitedapps.homemanager,用以选择默认的桌面Launcher。

可随时用

am start -n com.twsitedapps.homemanager/.QuickSelectActivity

来调用它的home launcher选择菜单

am start -n com.twsitedapps.homemanager/.HomeManagerActivity

来打开它的App主页面。

除了当贝桌面外,还要有一个可以显示小部件(Widgets)(前提是ROM支持,实测附赠的Android 4.4盒子不支持),又可以用遥控器方向键操作的Home Launcher。TV Launcher才是最适合做主要Launcher的,但它们一般不支持Widgets,因此两种Launcher需要共存。(待续)

使菜单键可用

如果你的盒子是附赠的,原厂设置了菜单键为打开它的入口App,菜单键原有的功效都失效。

如果你暂时不用它原定的视频节目功能了,可以将它的默认App直接禁用掉。查得它原厂默认入口App的包名后

pm block 包名
pm disable 包名
pm disable-user 包名

(这个过程也可以装com.dkanada.openapk后点鼠标搞定)

尝试清除附赠盒子的一些厂家的预装App(失败~)

发现附赠的盒子厂家设置了保护,干掉一些原厂App后,会自动恢复原厂ROM。所以,只禁用掉一个入口App就好了,其他给它留着吧

适当压低CPU/GPU频率改善发热

有些盒子的散热真的做的不好,如果你还没有买风扇,可以暂时适当降频

#!/data/data/com.termux/files/usr/bin/bash

BASEPATH="/sys/devices/system/cpu"                                                                      

for ((i=0; i<=3; i++))
do                                                                  

        su -c "echo conservative > $BASEPATH/cpu${i}/cpufreq/scaling_governor"
        su -c "echo 50 > $BASEPATH/cpu${i}/cpufreq/conservative/down_threshold"
        su -c "echo 99 > $BASEPATH/cpu${i}/cpufreq/conservative/up_threshold"
done      

限制后台以解决卡顿(和发热)

还是iOS好。Android要做几样不同的步骤来限制那些App。

既然是TV Box,肯定要安装些视频网站的App,那些难免会不守道德偷偷占你后台。

关闭通知权限

系统设置->应用->通知。把那些大站的App的通知权限都关掉。

取消APP后台运行权限

管理权限(包括隐藏权限)的工具有:

  • AppOpsX
  • Permission Manager X
  • BackgroundRestrictor (这个只管理RUN_IN_BACKGROUND一个权限)
  • App Manager
  • ADBungFu

ADBungFu是个名字个界面都有点奇怪但功能似乎很强大的东西,它与其他不同,可以按照权限来列出App,让你针对性的关。关了大站App的相关后台权限

如果是用命令:

cmd appops set <package_name> RUN_IN_BACKGROUND ignore
cmd appops set <package_name> RUN_ANY_IN_BACKGROUND ignore
cmd appops set <package_name> START_FOREGROUND ignore
cmd appops set <package_name> INSTANT_APP_START_FOREGROUND ignore

在系统开发者选项中限制后台

你会发现以上都不够。所以Android在这方面确实还有欠缺。

进去开发者模式菜单->后台进程限制,设置允许后台数量2个左右好了。

这一项最好你都做完了盒子该做的配置再搞

杀后台和冻结

用SuperFreezZ杀后台,可以结合KeyMapper添加一个遥控器快捷键。

杀后台的App不止这一个,而其他的必须都手动加入杀的列表,SuperFreezZ可以设置成用户新安装的App自动加入到杀的列表中(这样我们要手动把一些信得过的App加入到白名单)。

装了又好大半年用不上的App可以用App Manager完全禁用掉。

家庭媒体(略写)

播放器

  • Kodi这个播放器具足了服务端和客户端的功能,nfs、smb、ftp、http这些局域网媒体协议都支持。

最后支持Android 4 的是16版本

  • VLC。大家都知道。

  • DLNA(upnp)播放端(接收端)。F-Droid上就有几个支持这个功能的小App

接收投屏的App

  • 乐播投屏

用电视看小说

用遥控器翻页,不用低头,不用固定坐在桌子前,对一些人来说还保护眼睛。

其他应该还有更好的App,比如一些支持朗读(TTS,Text to Speech文字转语音)的

投屏及投声音(Linux为主,部分适用Windows)

这里讲的是电脑向电视投屏(的笨方案),如果是手机(不管是iOS还是Android)向电视,外面已经有很多方案了

将Linux所放音频投放到Android

不是投放音频文件,而是实时投放Linux正在播放的音频

TCP传输原始音频流播放

使用Pulseaudio的模块将Linux作为简单原始音频的tcp服务器。这个方案音频延迟很小基本没有

pactl load-module module-simple-protocol-tcp rate=48000 format=s16le channels=1 source=0 record=true 

默认端口为4711,channel=1为单声道,rate=48000占网速约100KB/s。

如果要停止,则

pactl unload-module module-simple-protocol-tcp

此命令的技术文档位于freedesktop页面

Android端使用Simple Protocol Player NG(fr.jakse.raphael.simpleprotocolplayer),输入Linux的IP和其他少量参数后接收播放

这个方法还可以把Android手机当电脑的无线耳机使用。前提是手机支持锁屏幕后Wifi不休眠

利用Apple AirPlay协议

苹果的AirPlay协议可投屏幕也可投音频,苹果用户很熟悉。

其之中单独播放音频的AirTunes协议使用UDP。

Android有一些App支持接收AirPlay的投放,如“乐播投屏”(版本8.x)。

用Avahi Disvovery(avahi-discover命令,位于包python3-avahi-gtk中)可以看到局域网内的“乐播投屏”在广播_airplay._tcpAirTunes Remote Audio

PulseAudio的名为RAOP(Remote Audio Output Protocol)的模块实现了音频AirTunes投放,其对应模块有module-raop-sinkmodule-raop-discover

PulseAudio所实现的RAOP需要在“PulseAudio属性"(paprefs命令)中的"Network Access"中勾选"Make discoverable Apple AirTunes sound devices available locally”启用。

另外Linux上需要有Avahi,用systemd先启动它

sudo systemctl start avahi-daemon.service

可能还要重启一下PulseAudio

pulseaudio -k

若要将单独一个Linux程序的音频投出去,在PulseAudio的“音量控制”(pavucontrol命令)中“回放”中将此程序的音频输出设置为找到的AirTunes。

待续

将Windows所放音频投放到Android

Linux整个屏幕音视投屏到Android

现有的各种现成投屏方案对Linux支持不够好,自己弄的方法有:

  • (推荐)流媒体方案(以下会有几种方案,其中推荐的是OBS Studio + RTSP + VLC,此方案也适用于Windows)

  • VNC方案可以用(VNC本身无声音),如果调低分辨率,放普通视频勉强可以(还要配合上面那个投放音频的方法一起用),画面变化大时占约1400KB/s网速

  • 通过Airplay投单张图片可以看看 https://github.com/openairplay/open-airplay

流媒体投频方案

流媒体直播屏幕的方案优点不用说,缺点有:

  • 占用电脑CPU稍高

  • 有明显的直播延迟,至少3秒

流媒体实时录屏方案一:OBS Studio (及推流)

OBS Studio的界面操作是比较明了易懂的。多显示器的可以选择仅录一个屏幕。

  • 添加“屏幕采集”作为视频源

  • 在“设置”的“音频”中选中一个电脑输出音频

  • OBS Studio中设置视频录制参数:

    OBS Studio中“设置”的”输出“中,若调整”输出模式“为”高级“,可以选择的编码器(在我的Linux笔记本上)有:

    • x264

      能够使用电脑的多核CPU,但总体占用CPU量大,因此发热不小(这里为4核)

      CBR 200Kbps足够

    • FFMPEG VAAPI (使用了我的Intel集显,Codec为H.264)

      总体CPU占用不算很大,但需要的码率比x264高

      CBR 3000Kbps够

  • 流视频服务器(或推流到服务器):

    • 方案一:推流到Nginx RTMP服务器(服务器搭建见另节):

      • “设置”的”推流“的”服务“选”自定义“,服务器填rtmp://127.0.0.1/stream(此处的这个stream是串流名称,若要改,需要在nginx那边做对应设置才允许推流),串流密钥可留空

      • 点击”开始推流“

      • 播放那端的设备上打开URL rtmp://电脑IP/stream(这是串流名称)/串流密钥(密钥空则可省)

    • 方案二:使用RTSP服务器插件(插件安装见另节):

      • “工具”->“RTSP服务器"->”启动“

      • 播放那端的设备上打开URL rtsp://电脑IP:端口/live(这是串流名称)

    以上视频服务器选一种方案使用即可。建议RTSP。

流媒体实时录屏方案二:Gnome Network Display

这是一种Miracast协议(又叫Wi-Fi Display)的实现,软件正在实验阶段的,项目目前属于Gnome。

按照说明中的testing purposes的方法,可以录屏的同时作为RTSP流服务器,声音可以通过pulseaudio的一些操作开启。不过试验结果是较卡。

流服务器方案一:OBS Studio的RTSP流服务器插件安装

RTSP(实时串流协议,Real Time Streaming Protocol)默认使用端口554。这是个Netscape交由IETF标准化的协议。

一位国人做的 GitHub - iamscottxu/obs-rtspserver: RTSP server plugin for obs-studio 十分实用,安装只要下载文件放入OBS插件对应位置(测试环境Linux 64位,obs-rtspserver 1.3.0)。

安装好OBS插件后,“工具”->“RTSP服务器"打开其操作界面,应当改一下使用的端口。

流服务器方案二:搭建Nginx RTMP module

RTMP(实时消息协议,Real-Time Messaging Protocol)这个协议默认使用端口1935,最初本是Macromedia Flash所用(Macromedia Flash Communications Server MX)。

OBS推流及播放器的访问都是在RTMP服务器的1935端口。Linux上的RTMP服务器一般是使用Nginx服务器配合模块nginx-rtmp-module

如果发行版中没有nginx-rtmp-module的包,可以使用Docker Hub上的镜像,如

docker pull alfg/nginx-rtmp
docker run -it -p 1935:1935 -p 8080:80 --rm alfg/nginx-rtmp

(实际测试中80端口未用上,不映射它也可以)

播放端软件

可使用VLC,这里用了VLC-Android-1.5.2播放RTSP流(如果使用RTMP协议则要更高的版本的VLC)。

VLC在界面中输入rtsp地址有可能会播放失败,然而使用adb直接打开rtsp地址则能播放:

am start -a android.intent.action.VIEW -d rtsp://xxxxx

经试验RTMP有时会有音视频不同步的问题,RTSP则没有。

Linux VNC投画面

这部分只有画面不含声音,可以配合另节的是个仅投音频的方法。

电脑端的以当前屏幕内容作为源的VNC服务器可以用:

  • vino (Gnome)(经试验,密码验证及加密传输无法使用,只能无密)

  • krfb (KDE)(如果是多显示器,只能显示主屏幕)

  • rfb

虚拟一个第二屏幕,并当作VNC服务器:

  • VirtScreen

下面只讲一讲vino在非Gnome桌面的操作,因为非Gnome无GUI。另外两个有GUI

vino在非Gnome桌面的操作

安装vino后,如果用的不是Gnome桌面,则要通过命令启用(并且它的vino二进制程序未必在$PATH的路径里)和操作。

  • 查看vino的设置

     gsettings list-recursively org.gnome.Vino
    
  • 修改设置

    修改为仅观看模式,不允许电视操作电脑

     gsettings set org.gnome.Vino view-only true
    

    (可选) 改为不需要弹出确认就可以观看

     gsettings set org.gnome.Vino prompt-enabled false
    

    还可以把密码去掉,加密也免掉,以提高流畅度

     org.gnome.Vino prompt-enabled false
     org.gnome.Vino require-encryption false
     org.gnome.Vino use-alternative-port false
     org.gnome.Vino disable-background false
     org.gnome.Vino disable-xdamage false
     org.gnome.Vino alternative-port uint16 5900
     org.gnome.Vino icon-visibility 'client'
     org.gnome.Vino authentication-methods ['none']
     org.gnome.Vino network-interface ''
     org.gnome.Vino notify-on-connect true
     org.gnome.Vino mailto ''
     org.gnome.Vino lock-screen-on-disconnect false
     org.gnome.Vino use-upnp false
     org.gnome.Vino vnc-password 'keyring'
     org.gnome.Vino view-only true
    

    对应的设置文档可查阅这个页面

启动vino: /usr/lib/vino/vino-server。即可以用Android上的VNC客户端来连接。

Android端的VNC客户端

可以用

操作Android设备(电视)的奇怪技巧

毕竟是TV盒子,不可能一直接着键盘鼠标,遥控器也很费力。并且有些盒子直接砍掉了一些Android设置界面。

自定义遥控器动作或快捷键

Keyboard/Button Mapper可以用来启动App或其他动作,毕竟遥控器有些按钮没有。

在我的Android 4.4盒子上未成功,ROM中砍掉了功能,因此无法在Key Mapper中录制trigger

在电脑上查看和操作Android屏幕

Android 4

  • Vysor

    通过adb。Android端安装App,使用PC端的客户端就可以用局域网adb。

  • 电脑端的AndroidScreencast(开源, java)

    通过USB调试接口(也就是adb)通信,不过这个很卡

Android >= 5

有一个著名的由Genymotion开源的scrcpy,是通过adb传画面和远控的。有人做了个加强版guiscrcpy。

这个时候,你可能还需要一个 Keyboard Switcher com.kunzisoft.keyboard.switcher,它可以显示一个浮动小图标,可以用鼠标来点击切换Android输入法

浮动工具

许多电视盒子ROM状态栏通知面板桌面小部件的功能都没有,所以找一些浮动在屏幕上的小工具

  • Resource Monitor Mini CPU、内存(文本)。CPU可以在屏幕边缘以细线条显示,占地方少又清晰。

  • com.pies3nscy.cpuindicator 浮动CPU、内存百分数圈

  • com.toolbox.shortcuts 可以选择几个App的浮动的应用启动器,可伸缩,挺适合用鼠标

  • jc.floating.monitor 浮动网速显示(文字)

    这个要从命令直接开启浮动显示的话使用(root):

    am startservice jc.floating.monitor/.NetworkMonitor
    
  • Tinycore 在以屏幕边缘以条状显示一项(可以是CPU、内存、温度),无文字

  • Cpu Temperature 仅以文字简单地浮动显示一个温度

  • com.ccs.floating_info 浮动的可伸缩的最近几个App、内存监视、网络监视。纯文字,且占面积有点大

  • Transparent CPU Monitor(skynet.transparentcpumonitor) CPU、GPU、内存

    这个显示的图表有点巨大。它本身就占了一定CPU。它可以自定义各个参数的读取路径,这在其他App读不出时有点用

KDE Connect在另一个Android手机(或电脑)上用键盘控制电视

手机(也有电脑版的)和电视上装上同一个App,配对。

  1. 在电视盒上选择KDE Connect输入法

    并在它的键盘弹出时,点下面的设置,去掉“只有在输入时接收远程按键”

  2. 手机设置为控制端,不当受控端

    在手机配对后,插件页面,去掉所有,只留下“电视遥控”和“远程输入”两个

    手机上可以安装Hacker's KeyboardBeHe Keyboard,这两个键盘能提供比一般手机输入法更多的按键,如ctrl、tab、alt、方向键、更方便的常用符号等等。

远程键盘输入法

  1. WiFi键盘 com.volosyukivan

  2. ADB键盘 com.android.adbkeyboard

  3. Telnet键盘 de.onyxbits.remotekeyboard.

有些电视盒子没有提供打开输入法设置界面的入口。打开的命令是:

am start -a android.settings.INPUT_METHOD_SETTINGS

如果也被砍了,那就用命令

  • 列出输入法

    ime list -a (多)
    ime list -s (少)
    
  • 启用输入法

    ime enable xxxxx/xxxxx
    
  • 选择输入法

    ime set xxxxx/xxxxx
    

或者用Keyboard Switcher com.kunzisoft.keyboard.switcher

安装后就可以用

am start -n com.kunzisoft.keyboard.switcher/.KeyboardManagerActivity

来直接打开输入法切换框。这个App也支持显示一个浮动按钮来打开。

局域网传文本的App

Kouchat是可以在局域网内传文字信息,不需要服务器,自动发现。所以,用来从手机或电脑传一个URL到电视点开是可以。Kouchat有Android版和PC java版。

只不过,许多家大的视频网站的Android TV版的App竟然没有注册自己成为URL scheme的打开方式。

找一些盒子固件隐藏的App入口

de.szalkowski.activitylauncher查看和调用所有App之下的活动(其实这没太多必要)

一点常用的adb命令

  • adb启动App

    am start -n 包名/活动
    

    你需要知道App的包名和主活动的名称

  • adb打开网址

    am start -a android.intent.action.VIEW -d http://xxxxxxx
    
  • adb输入文本

    input text hello
    
  • adb模拟按键/输入

    input keyevent <keycode>
    

    参考https://developer.android.com/reference/android/view/KeyEvent

    input keyevent <keycode>
    3    HOME 键 (一些遥控器的”本地“)
    4    返回键
    19  KEYCODE_DPAD_UP 導航鍵 向上 19 (遥控器方向键)
    20  KEYCODE_DPAD_DOWN 導航鍵 向下 20
    21  KEYCODE_DPAD_LEFT 導航鍵 向左 21
    22  KEYCODE_DPAD_RIGHT 導航鍵 向右 22 
    23  遥控器“OK”.  Directional Pad Center key. 
    24    增加音量
    25    降低音量
    26    电源键
    64    打开浏览器
    66  ENTER
    67  Backspace key.KEYCODE_DEL  遥控器”交换“
    82    菜单键
    83  KEYCODE_NOTIFICATION
    85    播放/暂停
    86    停止播放
    87    播放下一首
    88    播放上一首
    92  PAGE UP
    93  PAGE DOWN
    111  ESCAPE
    126    恢复播放
    127    暂停播放
    166  频道+(换台)
    167  频道-
    168  ZOOM_IN
    169  ZOOM_OUT
    176    打开系统设置
    183  遥控器红键(直播)
    184  遥控器绿键(回看)
    185  遥控器黄键(点播)
    186  遥控器蓝键(信息)
    187    切换应用
    223    系统休眠
    224    点亮屏幕
    226 KEYCODE_MEDIA_TOP_MENU 226
    229  KEYCODE_LAST_CHANNEL  Last Channel key. Goes to the last viewed channel.
    284  KEYCODE_ALL_APPS  284
    

其中一个旧Android 4.4 TV盒子root过程

这一段旧旧盒子的,估计一般人不用看了。仅这一段,下文主要针对Android 8及以上

root过程因机而异。此处主要为自己的记录,看客也可以参考

这个买某服务配送的盒子root不需要拆机、不需要TTL线,不需要任何USB或刷机

  1. 按照网上查的方式打开网络adb。过程略

  2. adb connect <ip>连上后,直接使用adb root取得root权限。看来它的ROM是留了这个后门的。

  3. 安装root管理的App,给其他App可申请root权限

    此方法不适合 Android >= 5

    1. 准备好superuser.apk(我用的是com.koushikdutta.superuser源代码
    2. adb shell mount -o rw,remount /system
    3. 解压superuser.apk,把assets/armeabi/su/system/xbin/su,并chmod 755 /system/xbin/su
    4. 安装superuser.apk
    5. 复制/data/app/下的superuser.apk/system/app/
    6. 使/system/xbin/su --daemon &成为开机自动运行的一条命令。我找了一个原厂家的启动shell脚本文件,加在尾部。
    7. 重启
posted @ 2019-12-09 18:06  garywill  阅读(2813)  评论(0编辑  收藏  举报
gary的位于博客园的博客