Android系统 开机启动默认旋转主屏幕方向问题 --(三)

之前两篇文章写到对系统显示界面进行旋转操作的问题:
Android系统 开机启动默认旋转主屏幕方向问题 --(一)
Android系统 开机启动默认旋转主屏幕方向问题 --(二)

本篇文章提供另一种旋转系统显示界面的操作,相比于之前的方法不需要考虑屏幕旋转后TP触摸错乱的问题

方法思路:

以shell脚本的方式实现旋转操作,原理是通过在系统中添加服务,让其在开机过程中执行服务中的命令行,从而达到旋转的目的。

具体步骤(以rk3568_android11为例):

  1. 写一个执行旋转操作的shell脚本 convert_display.sh
#!/system/bin/sh
log -t RkFaceKey "=== : start convert display script success"
#旋转屏幕方向(0,1,2,3对应旋转角度0,90,180,270)
content insert --uri content://settings/system --bind name:s:user_rotation --bind value:i:3 
  1. 在device.mk文件中将convert_display.sh脚本 copy到系统/system/bin/路径下:
diff --git a/device.mk b/device.mk
index 4d72fd1..acef215 100644
--- a/device.mk
+++ b/device.mk
@@ -108,5 +108,8 @@ PRODUCT_PACKAGES += \
 PRODUCT_COPY_FILES += \
 	external/camera_engine_rkaiq/rkisp2x_tuner/reset_camera.sh:$(TARGET_COPY_OUT_VENDOR)/etc/camera/reset_camera.sh
 
+PRODUCT_COPY_FILES += \
+    $(LOCAL_PATH)/convert_display.sh:/system/bin/convert_display.sh
+
 #For fota support
  1. 在init.rk356x.rc文件中给予convert_display.sh相对应的权限,以及添加convert_display服务,让其在系统启动时执行一次。
diff --git a/init.rk356x.rc b/init.rk356x.rc
index 7eb8eeb..0dd22bd 100644
--- a/init.rk356x.rc
+++ b/init.rk356x.rc
@@ -29,5 +29,16 @@ on init
     chown system system /sys/class/devfreq/dmc/system_status
     chmod 0666 /sys/class/devfreq/dmc/system_status
 
+    chown system system /system/bin/convert_display.sh
+    chmod 0666 /system/bin/convert_display.sh
+
+service convert_display /system/bin/convert_display.sh
+    seclabel u:r:shell:s0
+    disabled
+    oneshot
+
+on property:sys.boot_completed=1
+    start convert_display
+
 on property:cts_gts.status=true
     setprop vendor.hwc.compose_policy 2

注:此方法实测只针对系统launch启动后界面的旋转显示;如果要系统整体实现旋转,kernel与uboot开机logo图片(bmp格式)以及开机动画需要手动替换成相对应方向,这样整个系统从开机logo到系统界面就可以达到系统旋转的效果。

猜你喜欢

转载自blog.csdn.net/weixin_45639314/article/details/130109268