#!/vendor/bin/sh # 获取当前正在使用的屏幕 ID current_id=$(dumpsys display | grep "mDisplayId=" | grep -oP "(?<=mDisplayId=)[0-9]+") # 将主屏幕设置为默认屏幕 settings put global display_portrait 0 # 启动 ConsumerIRService 服务,以便接收遥控器的输入事件 setprop ro.remotecontroller.modules consumerir start consumer_ir_service # 循环监听遥控器的输入事件 while true; do # 读取遥控器的输入事件,并解析出按键码 ir_code=$(getevent -t -c 1 /dev/input/event0 | grep -oP ".*?((?<=KEYCODE_)[A-Z0-9]+).*" | awk '{print $10}') # 如果按键码是 KEYCODE_TV,则切换主屏幕或副屏幕的使用状态 if [ "$ir_code" = "KEYCODE_TV" ]; then if [ "$current_id" = "0" ]; then settings put global display_portrait 1 current_id=1 else settings put global display_portrait 0 current_id=0 fi fi # 降低 CPU 占用率,避免过度消耗系统资源 sleep 0.1 done
时间: 2024-01-24 09:05:05 浏览: 28
根据您提供的脚本,我可以给出以下优化建议:
1. 使用变量存储一些常量,避免在代码中多次使用字符串常量。例如:
```
# 存储常量
EVENT_DEVICE="/dev/input/event0"
KEYCODE_TV="KEYCODE_TV"
# 获取当前正在使用的屏幕 ID
current_id=$(dumpsys display | grep "mDisplayId=" | grep -oP "(?<=mDisplayId=)[0-9]+")
# 将主屏幕设置为默认屏幕
settings put global display_portrait 0
# 启动 ConsumerIRService 服务,以便接收遥控器的输入事件
setprop ro.remotecontroller.modules consumerir
start consumer_ir_service
# 循环监听遥控器的输入事件
while true; do
# 读取遥控器的输入事件,并解析出按键码
ir_code=$(getevent -t -c 1 $EVENT_DEVICE | grep -oP ".*?((?<=KEYCODE_)[A-Z0-9]+).*" | awk '{print $10}')
# 如果按键码是 KEYCODE_TV,则切换主屏幕或副屏幕的使用状态
if [ "$ir_code" = "$KEYCODE_TV" ]; then
if [ "$current_id" = "0" ]; then
settings put global display_portrait 1
current_id=1
else
settings put global display_portrait 0
current_id=0
fi
fi
# 降低 CPU 占用率,避免过度消耗系统资源
sleep 0.1
done
```
2. 在代码中添加注释,提高代码可读性和可维护性。
3. 可以根据具体需求调整循环监听遥控器输入事件的时间间隔,如调整为 sleep 0.5,可以减少 CPU 占用率。
4. 可以使用函数封装一些重复的代码块,如获取当前屏幕 ID 的代码块。这样可以提高代码复用性和可维护性。