У меня есть приложение Qt 5.6.0 на Android с QQuickView с прозрачным фоном, нарисовавшим какой-то qml и чистый андроид SurfaceView, который должен отображать видео в фоновом режиме.Android: рисовать qml в SurfaceView с ZOrderMediaOverlay
При запуске все хорошо. Мое видео воспроизводится в фоновом режиме, а компоненты qml отображаются на переднем плане.
Моя проблема в том, что моя деятельность приостановлена, а затем возобновляется, каждый раз, когда видео отображается сверху от моего qml. После исследования, я думаю, это потому, что SurfaceView, созданный Qt для отображения qml и моего SurfaceView, созданного для отображения видео, находится в одной и той же области «z». Таким образом, порядок визуализации не определен.
Я хотел бы переместить Qt SurfaceView в область ZOrderMediaOverlay, установив для ZOrderMediaOverlay значение true, но я должен установить его при создании SurfaceView.
Есть ли способ установить свой заказ z непосредственно из C++, когда я создаю свой QQuickView? Или есть другой способ?
У меня есть пользовательская активность, которая наследуется от QtActivity, но SurfaceView еще не создан в функции onCreate. Я могу получить доступ к Qt SurfaceView, когда создаю свой SurfaceView для видео, но тот же Qt уже создан, и ZOrderMediaOverlay не имеет никакого эффекта.
Большое спасибо за вашу помощь :)
Edit: в отношении к исходному коду, просто установите флаг QQuickView в Qt :: WindowStayOnTopHint истина должна создать поверхность с ZOrderMediaOverlay установлен верно, но это не кажется работать. Поверхность видео вычерчивается над поверхностью qml после возобновления до тех пор, пока поверхность видео не будет уничтожена и не будет восстановлена.