【问题标题】:Media Projection's VirtualDisplay object is destroyed on orientation changeMedia Projection 的 VirtualDisplay 对象在方向改变时被破坏
【发布时间】:2018-01-22 14:37:56
【问题描述】:

我在 Media Projection API 上使用谷歌的 sample project。我观察到的是,每次屏幕方向更改时,VirtualDisplay 对象返回为

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

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

【问题讨论】:

    标签: android screen-capture screen-recording android-mediaprojection


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-24
      • 1970-01-01
      • 2010-12-25
      • 1970-01-01
      • 2018-02-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多