IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android11 配置开机默认横屏显示 -> 正文阅读

[移动开发]Android11 配置开机默认横屏显示

软件平台:Android11

硬件平台:Mtk8788

? ? ? ? Android系统默认是竖屏显示的,但一些品类比如平板等需要开机logo开始就横屏显示,之前在android低版本开发过,高版本再次开发了这个功能,补丁有不小出入,特此记录:

--- a/cmds/bootanimation/BootAnimation.cpp

+++ b/cmds/bootanimation/BootAnimation.cpp

@@ -387,9 +387,11 @@ status_t BootAnimation::readyToRun() {

resolution = limitSurfaceSize(resolution.width, resolution.height);

// create the native surface

sp control = session()->createSurface(String8("BootAnimation"),

- resolution.getWidth(), resolution.getHeight(), PIXEL_FORMAT_RGB_565);

+ resolution.getHeight(), resolution.getWidth(), PIXEL_FORMAT_RGB_565);

SurfaceComposerClient::Transaction t;

+ Rect destRect(resolution.getHeight(), resolution.getWidth());

+ t.setDisplayProjection(mDisplayToken, ui::ROTATION_90, destRect, destRect);

// this guest property specifies multi-display IDs to show the boot animation

// multiple ids can be set with comma (,) as separator, for example:

--- a/core/java/com/android/internal/view/RotationPolicy.java

+++ b/core/java/com/android/internal/view/RotationPolicy.java

@@ -42,7 +42,7 @@ public final class RotationPolicy {

private static final String TAG = "RotationPolicy";

private static final int CURRENT_ROTATION = -1;

- public static final int NATURAL_ROTATION = Surface.ROTATION_0;

+ public static final int NATURAL_ROTATION = Surface.ROTATION_90;

private RotationPolicy() {

}

--- a/services/core/java/com/android/server/wm/DisplayRotation.java

+++ b/services/core/java/com/android/server/wm/DisplayRotation.java

@@ -120,7 +120,7 @@ public class DisplayRotation {

* @see #updateRotationUnchecked

*/

@Surface.Rotation

- private int mRotation;

+ private int mRotation = 1;

@VisibleForTesting

int mLandscapeRotation; // default landscape

@@ -1242,7 +1242,7 @@ public class DisplayRotation {

if (preferredRotation >= 0) {

return preferredRotation;

}

- return Surface.ROTATION_0;

+ return Surface.ROTATION_90;

}

}

其次修改native层代码,frameworks/native/目录:

--- a/services/surfaceflinger/DisplayDevice.cpp

+++ b/services/surfaceflinger/DisplayDevice.cpp

@@ -91,7 +91,7 @@ DisplayDevice::DisplayDevice(DisplayDeviceCreationArgs& args)

setPowerMode(args.initialPowerMode);

// initialize the display orientation transform.

- setProjection(ui::ROTATION_0, Rect::INVALID_RECT, Rect::INVALID_RECT);

+ setProjection(ui::ROTATION_90, Rect::INVALID_RECT, Rect::INVALID_RECT);

}

DisplayDevice::~DisplayDevice() = default;

@@ -170,6 +170,9 @@ void DisplayDevice::setProjection(ui::Rotation orientation, Rect viewport, Rect

if (!frame.isValid()) {

// the destination frame can be invalid if it has never been set,

// in that case we assume the whole display frame.

+ if( displayWidth < displayHeight)

+ frame = Rect(displayHeight, displayWidth);

+ else

frame = Rect(displayWidth, displayHeight);

}

--- a/services/surfaceflinger/SurfaceFlinger.cpp

+++ b/services/surfaceflinger/SurfaceFlinger.cpp

@@ -4282,7 +4282,7 @@ void SurfaceFlinger::onInitializeDisplays() {

DisplayState::eLayerStackChanged;

d.token = token;

d.layerStack = 0;

- d.orientation = ui::ROTATION_0;

+ d.orientation = ui::ROTATION_90;

d.frame.makeInvalid();

d.viewport.makeInvalid();

d.width = 0;

增量编译,刷机验证即可。

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-03-21 21:02:21  更:2022-03-21 21:05:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 19:06:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码