首页 > 其他分享 >Android设置DisplayViewport

Android设置DisplayViewport

时间:2024-08-12 12:23:44浏览次数:11  
标签:java server 设置 DisplayViewport viewports Android android viewport

//设置DisplayViewport
performTraversalLocked
    clearViewportsLocked();
        mViewports.clear();
    configureDisplayLocked(t, device);
        populateViewportLocked(viewportType.get(), display.getDisplayIdLocked(), device, info);
            final DisplayViewport viewport = getViewportLocked(viewportType, info.uniqueId);
                viewport = new DisplayViewport();
                mViewports.add(viewport);
            viewport.displayId = displayId;  //设置viewport.displayId
            mHandler.sendEmptyMessage(MSG_UPDATE_VIEWPORT);
@frameworks/base/services/core/java/com/android/server/display/DisplayManagerService.java
                DisplayManagerHandler::handleMessage
@frameworks/base/services/core/java/com/android/server/input/InputManagerService.java
                    case MSG_UPDATE_VIEWPORT: { mInputManagerInternal.setDisplayViewports(mTempViewports);
                        setDisplayViewportsInternal(viewports);
                            final DisplayViewport[] vArray = new DisplayViewport[viewports.size()];
@frameworks/base/services/core/jni/com_android_server_input_InputManagerService.cpp
                            nativeSetDisplayViewports(mPtr, vArray);
                                im->setDisplayViewports(env, viewportObjArray);   //NativeInputManager::setDisplayViewports
                                    for (jsize i = 0; i < length; i++) {
                                        jobject viewportObj = env->GetObjectArrayElement(viewportObjArray, i);
                                        android_hardware_display_DisplayViewport_toNative(env, viewportObj, &viewport);
                                        viewports.push_back(viewport);
@frameworks/base/services/core/java/com/android/server/wm/InputManagerCallback.java
                                    int32_t pointerDisplayId = getPointerDisplayId();
                                        if (!mService.mForceDesktopModeOnExternalDisplays) { return DEFAULT_DISPLAY; }
                                    mLocked.viewports = viewports;
                                    mLocked.pointerDisplayId = pointerDisplayId;
                                    mInputManager->getReader()->requestRefreshConfiguration(InputReaderConfiguration::CHANGE_DISPLAY_INFO);
                                        mConfigurationChangesToRefresh |= changes;
                                        mEventHub->wake();  //唤醒InputReader线程

标签:java,server,设置,DisplayViewport,viewports,Android,android,viewport
From: https://blog.csdn.net/wenwang88/article/details/141128361

相关文章

  • Android设置鼠标显示的屏幕
    @frameworks/native/services/inputflinger/reader/InputReader.cppInputReader::loopOncerefreshConfigurationLocked(changes);@frameworks/base/services/core/jni/com_android_server_input_InputManagerService.cppmPolicy->getReaderConfigurati......
  • Android跨平台开发之Dart 3.5 与 Flutter 3.24:革新跨平台应用开发
    本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点Dart3.5与Flutter3.24:革新跨平台应用开发在软件开发领域,跨平台开发框架层出不穷,但鲜有能像Flutter这样在短时间内迅速崛起,获得广泛的认可和应用。随着Dart......
  • Android Studio报错: A problem occurred starting process command ,CreateProcess er
    AndroidStudio报错:Aproblemoccurredstartingprocesscommand,CreateProcesserror=2,系统找不到指定的文件一、遇到问题二、解决问题重新下载了22.0.7026061和22.1.7171670只在cmake.dir中修改了路径(ndk.dir中修改了路径[未尝试])clean+SyncProject,OK了!......
  • Android studio报错 Caused by: org.gradle.api.internal.plugins.PluginApplicationE
    Androidstudio报错Causedby:org.gradle.api.internal.plugins.PluginApplicationExceptionAndroidstudio运行报错:Causedby:org.gradle.api.internal.plugins.PluginApplicationException:Failedtoapplyplugin[id‘com.android.application’]解决方法:在项......
  • crontab 设置周期性被执行的任务的工具
    1.1crontab服务管理crontab服务管理是Unix和类Unix系统(如Linux和macOS)中用于设置周期性被执行的任务的工具。crontab服务管理是"crontable"(cron表格)的缩写,它允许用户为任务安排在未来某个时间点执行,也可以定期重复执行。1.2crontab定时任务设置1)基本语法c......
  • Android网页投屏控制从入门到放弃
    背景业务需要采集在app上执行任务的整个过程,原始方案相对复杂,修改需要协调多方人员,因而考虑是否有更轻量级的方案。原始需求:记录完成任务的每一步操作(点击、滑动、输入等)记录操作前后的截图和布局xml基于Adb的方案最容易考虑到的方案是就是通过adb去实现,要获取到当前页面......
  • 鸿蒙HarmonyOS NEXT开发:触摸热区设置(触摸交互控制)
    触摸热区设置适用于支持通用点击事件、通用触摸事件、通用手势处理的组件。说明:从APIVersion8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。responseRegionresponseRegion(value:Array<Rectangle>|Rectangle)设置一个或多个触摸热区。......
  • Android Studio开发学习(八、蓝牙设备连接)
    引言        上篇我们介绍了整体蓝牙模块的基本写法AndroidStudio开发学习(七、蓝牙模块java)-CSDN博客,当然我们检测到蓝牙设备肯定会连接蓝牙,那么如何实现蓝牙连接呢,这篇博客将实现这个功能。 设备连接        connectDevice 方法用于在后台线程中尝试连......
  • ubuntu20.04中文界面设置
    1,进入ubuntu界面,首先要做的是更换下载源。打开Software&Updates,选择UbuntuSoftware菜单,在Downloadfrom处选择“阿里云”下载源(xxxx.aliyun.com)2,然后更新系统中可用软件包的信息,以便后续包含中文语言包的信息。3.打开设置,找到地区和语言(Region&Language),选择"Manageinsta......
  • RouterOS设置IPV6并解决部分网页打开慢和无法打开问题
    目前ADSL各大运营商已完成IPv6的部署,很多网站和应用也开始部署IPv6,早先尝试过启用IPv6,但是出现部分网站打不开的情况,一直未找到原因,最近终于发现了问题所在,终于能正常使用IPv6了。WinBox下启用IPv6的步骤:1、启用IPv6软件包:System=>Packages,将ipv6设置为enable2、获取IP......