我正在尝试为NativeScript Android实现BetterVideoPlayerimplementation 'com.github.halilozercan:BetterVideoPlayer:1.2.alpha1')。因此,在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>


但是问题是,它没有显示播放器。仅显示黑色区域。我在哪里弄错了?请给我建议。提前致谢。

最佳答案

BetterVideoPlayer在onFinishInflate()处创建实际的媒体播放器,该方法仅在通过Android XML初始化View元素时才调用,像在{N}中一样进行程序化创建不会触发此方法。因此,您只需执行this.mediaPlayer.onFinishInflate();即可强制创建媒体播放器,并且该播放器应该可以正常工作,我可以在设备上观看视频。

关于android - NativeScript android BetterVideoPlayer实现,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56324452/

10-12 00:26
查看更多