How to Realize Android Vertical Screen Display on the Embedded i.MX8MP Platform of Forlinx

The default display orientation for the Android interface on the Forlinx Embedded i.MX8MP platform is landscape, but some products may require a portrait display. To address this requirement, Forlinx Embedded provides the following methods for modification:

How to Realize Android Vertical Screen Display on the Embedded i.MX8MP Platform of Forlinx

The Android system controls the screen orientation through the persist.vendor.orientation property, which can have values of 0, 90, 180, or 270.

Configuration path: frameworks/native/services/su**ceflinger/Su**ceFlinger.cpp

Modify in processDisplayHotplugEventsLocked:

Su**ceFlinger::processDisplayHotplugEventsLocked() {
             continue;
         } 
                        +       /* Rotate desktop */
+       char rotationvalue[PROPERTY_VALUE_MAX] = "";;
+       property_get("persist.vendor.orientation", rotationvalue, "-1");
+       int rotation = atoi(rotationvalue);
+       ALOGI("Primary Display Orientation is set to rotation %2d.", rotation);
+       switch (rotation) {
+               case 0:
+                       internalDisplayOrientation = ui::ROTATION_0;
+                       break;
+               case 90:
+                       internalDisplayOrientation = ui::ROTATION_90;
+                       break;
+               case 180:
+                       internalDisplayOrientation = ui::ROTATION_180;
+                       break;
+               case 270:
+                       internalDisplayOrientation = ui::ROTATION_270;
+                       break;
+               default:
+                       break;
+       }
+ const DisplayId displayId = info->id;
         const auto it = mPhysicalDisplayTokens.find(displayId);

After modification, you need to add the relevant configuration in the environment variable.

Path: device/nxp/imx8m/evk_8mp/system.prop

persist.sys.timezone=Asia/Shanghai
 persist.sys.language=zh
 persist.sys.country=CN 
+persist.vendor.orientation=90

Rotate 90 degrees here to write 90, 180 degrees to write 180, 270 degrees to write 270.

If you encounter a failure to set the value of a property:

Add the followings in device/nxp/imx8m/sepolicy/property_contexts;

+persist.vendor.orientation     u:object_r:debug_prop:s0
 vendor.wc_transport.                u:object_r:vendor_wc_prop:s0
 persist.vendor.usb.config           u:object_r:vendor_usb_config_prop:s0
 vendor.usb.config                   u:object_r:vendor_usb_config_prop:s0