Picture-inPicture проблема с отображением видео |Android - PullRequest
0 голосов
/ 25 октября 2018

Я пытаюсь работать в режиме «картинка в картинке» со встроенным exoplayer.

Я могу получить изображение «картинка в картинке», но не могу получить полное изображение видео в картинке.режим в картинке.

enter image description here

Например: красный - это видео, а когда я перехожу в режим «картинка в картинке», видна только зеленая часть видео.

Вот мой код:

 @Override
protected void onUserLeaveHint() {
    super.onUserLeaveHint();

    enterPipMode();
}

private void enterPipMode() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N
            && getPackageManager().hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE)) {            
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
           PictureInPictureParams.Builder builder = new PictureInPictureParams.Builder();

            enterPictureInPictureMode(builder.build());
        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                enterPictureInPictureMode();
            }
        }
    }
}

1 Ответ

0 голосов
/ 25 октября 2018

Вот как я реализовал PictureInPicture в своем приложении.

@Override
protected void onUserLeaveHint() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        if (!isInPictureInPictureMode()) {
            Rational rational = new Rational(250, 150); //you can use VideoView getWidth(),getHeight() here 
            builder.setAspectRatio(rational).build();
            enterPictureInPictureMode(builder.build());
        }
    }
}

Затем определите, свернул ли пользователь экран

@Override
public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode, Configuration newConfig) {
    if (isInPictureInPictureMode) {
        Toast.makeText(this, "in picture in picture mode.", Toast.LENGTH_SHORT).show();
    } else {
        Toast.makeText(this, "out of picture in picture mode.", Toast.LENGTH_SHORT).show();
    }
}

Инициализировать PictureInPitureParam.Builder в onCreate ()

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        builder = new PictureInPictureParams.Builder();
    }
...