#!/system/bin/sh # 获取当前活跃窗口所在的显示器 ID get_display_id() { local focus=$(dumpsys window | grep "mCurrentFocus" | tail -n 1 | awk '{print $NF}' | cut -d'}' -f1) local displays=$(dumpsys window | grep display | grep 'imeInputTarget') local display_id=$(echo "$displays" | grep "$focus" | cut -d'#' -f2 | awk '{print $1}') local activity=$(echo "$displays" | grep "$focus" | cut -d'#' -f2 | awk '{print $NF}' | cut -d'}' -f1) echo "$display_id $activity" } # 获取当前活跃窗口所在的显示器 ID display_id=$(get_display_id) # 判断窗口所在的显示器 if [ "$display_id" = "0" ]; then echo "该窗口在 display#0 上" elif [ "$display_id" = "2" ]; then echo "该窗口在 display#2 上" else echo "该窗口不在 display#0 或 display#2 上" fi 优化一下
时间: 2024-03-02 20:48:38 浏览: 24
可以将获取当前活跃窗口所在的显示器 ID 和判断窗口所在的显示器的代码写成一个函数,这样可以让代码更加简洁和易读。同时,可以使用case语句来替代多个if语句,使代码更加优雅。
优化后的代码如下:
```
#!/system/bin/sh
# 获取当前活跃窗口所在的显示器 ID
get_display_id() {
local focus=$(dumpsys window | grep "mCurrentFocus" | tail -n 1 | awk '{print $NF}' | cut -d'}' -f1)
local displays=$(dumpsys window | grep display | grep 'imeInputTarget')
local display_id=$(echo "$displays" | grep "$focus" | cut -d'#' -f2 | awk '{print $1}')
local activity=$(echo "$displays" | grep "$focus" | cut -d'#' -f2 | awk '{print $NF}' | cut -d'}' -f1)
echo "$display_id $activity"
}
# 判断窗口所在的显示器
display_id=$(get_display_id)
case "$display_id" in
"0") echo "该窗口在 display#0 上" ;;
"2") echo "该窗口在 display#2 上" ;;
*) echo "该窗口不在 display#0 或 display#2 上" ;;
esac
```
这样,代码更加简洁和易读,同时也保持了原有的功能。