Реализация NativeScript для Android BetterVideoPlayer - PullRequest
1 голос
/ 27 мая 2019

Я пытаюсь реализовать BetterVideoPlayer (implementation 'com.github.halilozercan:BetterVideoPlayer:1.2.alpha1') для NativeScript Android.Итак, в проекте Angular я создал отдельный компонент, подобный этому:

import { View } from "tns-core-modules/ui/core/view";

declare var com, android;

export class BetterPlayer extends View {

    public mediaPlayer;

    public createNativeView(): any {

        const nativeView = new android.widget.FrameLayout(this._context);

        nativeView.addView(this._openVideo());

        // or return this._openVideo(); // still not working..

        return nativeView;
    }



    public _openVideo() {
        let url = android.net.Uri.parse("http://jzvd.nathen.cn/c6e3dc12a1154626b3476d9bf3bd7266/6b56c5f0dc31428083757a45764763b0-5287d2089db37e62345123a1be272f8b.mp4");

        this.mediaPlayer = new com.halilibo.bettervideoplayer.BetterVideoPlayer(this._context);

        console.dir(this.mediaPlayer);

        this.mediaPlayer.setSource(url);
        this.mediaPlayer.setAutoPlay(true);
        this.mediaPlayer.setHideControlsOnPlay(true);

        return this.mediaPlayer;
    }
}

Затем из компонента, который я зарегистрировал, используя registerElement

registerElement("BetterPlayer", () => BetterPlayer);

HTML:

<BetterPlayer height="200"></BetterPlayer>

Но проблема в том, что он не показывает игрока.Только показывая черную область.В чем я ошибся?Пожалуйста, дайте мне совет.Заранее спасибо.

1 Ответ

1 голос
/ 27 мая 2019

BetterVideoPlayer создает настоящий медиаплеер в onFinishInflate(), это метод, вызываемый только тогда, когда элемент View инициируется через Android XML, программное создание, как вы делаете в {N}, не вызовет этот метод.Так что вы можете просто сделать this.mediaPlayer.onFinishInflate();, чтобы принудительно создать медиаплеер, и он должен работать, я смог посмотреть видео на устройстве, как только сделал это.

...