媒体投影的虚拟显示对象在方向更改时被破坏



我正在使用谷歌关于媒体投影API的示例项目。 我观察到的是,每次屏幕方向更改时,返回的VirtualDisplay对象为

mVirtualDisplay = mMediaProjection.createVirtualDisplay("ScreenCapture",
                mSurfaceView.getWidth(), mSurfaceView.getHeight(), mScreenDensity,
                DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR,
                mSurface, null, null);

被销毁(设置为 null (,我必须重新启动屏幕截图。我知道这可能是由于屏幕尺寸的变化而需要的,但我希望有一个办法可以避免破坏这个对象而只是更新它,以便屏幕捕获仅在按下停止按钮时停止。显然,可以在方向更改后以编程方式重新启动屏幕截图,但我宁愿不这样做。我是不是太乐观了?

因此,当配置更改时,问题出在android的默认行为上。它基本上破坏了活动及其所有字段(在本例中包括VirtualDisplay实例(。此外,在此处将 VirtualDisplay 实例保留为 UI 状态不是一种选择。所以我最终通过向我的活动添加configChanges标签来自己处理方向更改,如此处所述

<activity
    android:name=".MyActivity"
    android:configChanges="orientation|screenSize|keyboardHidden" />

这意味着方向更改时不会再破坏任何内容,但需要使用活动的onConfigurationChanged回调手动处理布局更改。

相关内容

  • 没有找到相关文章

最新更新