Как решить проблему с соотношением сторон при реализации функции «картинка в картинке»? - PullRequest
0 голосов
/ 27 февраля 2019

Я пытаюсь включить функцию PiP (картинка в картинке) в приложение.Я сталкиваюсь со следующей ошибкой:

 Caused by: java.lang.IllegalArgumentException: enterPictureInPictureMode: Aspect ratio is too extreme (must be between 0.418410 and 2.390000).

Я хотел бы знать, как решить эту проблему.Я пробовал разные методы, внося изменения в XML, а также мой файл Java.Ни одна из них не помогла мне.

Я включил Java и XML-код для большей ясности:

Java:

 Rational aspectRatio = new Rational(videoView.getWidth(), videoView.getHeight());
 pictureInPictureParamsBuilder.setAspectRatio(aspectRatio).build();
 enterPictureInPictureMode(pictureInPictureParamsBuilder.build());

XML:

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activity.courses.oustchat.VideoPipActivity">
    <VideoView
        android:id="@+id/pipvideoview"
        android:layout_width="match_parent"
        android:layout_height="400dp"
        android:layout_margin="4dp"
        android:adjustViewBounds="true"/>
</RelativeLayout>

Просьбадействительно предоставьте решение для этого.

Заранее спасибо.

1 Ответ

0 голосов
/ 27 февраля 2019

Эта ошибка возникает из-за того, что videoView.getWidth и метод .getheight дают значение больше, чем поддержка режима pip, в качестве исключения, говоря, что установленное соотношение сторон больше, чем поддержка режима pip.Давайте оставим это для Android, не устанавливая коэффициент самостоятельно

pictureInPictureParamsBuilder.build();
enterPictureInPictureMode(pictureInPictureParamsBuilder.build());

или если вы хотите установить пользовательский режим, как показано ниже, но ваше соотношение должно быть между 0,418410 и 2,390000:

Rational aspectRatio = new Rational(192, 108);
pictureInPictureParamsBuilder.setAspectRatio(aspectRatio).build();
enterPictureInPictureMode(pictureInPictureParamsBuilder.build());
...