【问题标题】:Android VirtualDisplay resize "on flight"Android VirtualDisplay“在飞行中”调整大小
【发布时间】:2020-07-28 09:48:17
【问题描述】:

最近在项目中,我面临调整VirtualDisplay“飞行中”大小的挑战。所以用例是:

  • 开始直播
  • 在未确定的流式传输期间,可能会有特定数据表明我的流式传输功能发生了变化
  • 更新VirtualDisplay's参数而不重新创建,从而避免状态丢失

我在 VirtualDisplay resize 方法的文档中找到了,尽管它似乎对传入的新参数没有影响。为了实现我正在使用

  virtualDisplay = mDisplayManager.createVirtualDisplay("DispName",
                        getResolution().getResolutionWidth(), getResolution().getResolutionHeight(),
                        getDisplayDensity(), inputSurface, DisplayManager.VIRTUAL_DISPLAY_FLAG_PRESENTATION);

其中inputSurface 由mediaEncoder.createInputSurface() 创建并在此时正确配置。所以,问题是,我如何调整VirtualDisplay 的大小?我也没有在官方资源中找到任何示例,不胜感激!

更新 只是忘了提一下,我已经为VirtualDisplays 设置了Listener 并触发了onChange 方法,但检查实际指标是否更改显示负面结果

【问题讨论】:

    标签: android resize video-streaming android-mediaprojection android-virtualdisplay


    【解决方案1】:

    回答我自己的问题

    VirtualDisplay 的 resize 方法工作得很好,虽然这是我对如何实现非常具体的行为的误解,当只有底层布局改变它的大小时,尽管元素将它们的属性保持在较小的窗口上

    因此,如果您想获得某种 “标量” 调整大小(就像一切都变大或变小),您应该致电 resize

    但是,当您的项目需要某种调整大小并进行控制
    更大,虽然屏幕变小了
    您应该检查与VirtualDisplay 链接的具体Presentation 类的扩展,并且只需手动更新您的布局而不调整VirtualDisplay 的大小

    public void resizeView(final int newWidth, final int newHeight) {
        uiHandler.post(new Runnable() {
            @Override
            public void run() {
                try {
                    Constructor<? extends ViewGroup.LayoutParams> ctor = 
                            mainView.getLayoutParams().getClass().getDeclaredConstructor(int.class, int.class);
                    mainView.setLayoutParams(ctor.newInstance(newWidth, newHeight));
                    mainView.requestLayout();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
    

    uiHandler 即使在后台也可以简单地获得

    Handler uiHandler = new Handler(Looper.getMainLooper());
    

    我希望这对某人有用!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-24
      • 2011-08-25
      • 2012-02-20
      相关资源
      最近更新 更多