【问题标题】:NativeScript android BetterVideoPlayer implementNativeScript android BetterVideoPlayer 实现
【发布时间】:2019-05-27 10:39:52
【问题描述】:

我正在尝试为 NativeScript Android 实现 BetterVideoPlayer (implementation '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>

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

【问题讨论】:

  • 我想知道你为什么将你的播放器添加到FrameLayout,它的工作方式与其他 NativeScript 布局有点不同。
  • 感谢您的回复。我试图直接添加它,但也没有工作。因此,我尝试从演示中进行操作,但没有任何效果。
  • Github 上有插件吗?
  • 其实不是,我是直接使用nativescript angular项目。如果你愿意,我可以快速创建。
  • @Manoj,我为您的测试创建了一个 git 存储库。你可以从这里看看:github.com/jibon57/BetterVideoPlayersrc/app/item/items.component.html src/app/item/items.component.ts src/app/item/items.component.ts src/app/item/betterVideoPlayer.ts

标签: android nativescript angular2-nativescript


【解决方案1】:

BetterVideoPlayer 在onFinishInflate() 中创建实际的媒体播放器,该方法仅在通过 Android XML 启动 View 元素时调用,像您在 {N} 中所做的编程创建不会触发此方法。因此,您可以简单地执行this.mediaPlayer.onFinishInflate(); 来强制创建媒体播放器,它应该可以工作,一旦我这样做了,我就可以在设备上观看视频了。

【讨论】:

  • 我无法使用setCaptions 方法添加字幕。我收到错误。你能再看看回购吗?谢谢
  • 我收到此错误:System.err: Error: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.halilibo.bettervideoplayer.subtitle.CaptionsView.setCaptionsSource(android.net.Uri, com.halilibo.bettervideoplayer.subtitle.CaptionsView$CMime)' on a null object reference
  • 我没有在你的代码中看到 setCaptionsSource 调用,你更新了 github 了吗?
  • 是的,我已经这样做了:github.com/jibon57/BetterVideoPlayer/commit/…
  • 我正在使用来自this commit&的版本:1.2.alpha1
猜你喜欢
  • 1970-01-01
  • 2019-06-19
  • 1970-01-01
  • 2020-01-16
  • 1970-01-01
  • 1970-01-01
  • 2018-02-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多