错误创建YouTubePlayerView



我没有运气让youtube-api在Android上工作。我正在尝试使最低限度的工作 - 只需通过公共访问播放视频(没有OAuth)。我有Google的钥匙,并且在模拟器上安装了YouTube应用程序。我非常有信心这是正确的,因为我从YouTube API示例代码中创建了一个新的项目,并且它可以很好地工作。

当我得到我的项目时,我得到了:

E/YouTubeAndroidPlayerAPI: Error creating YouTubePlayerView
       com.google.android.youtube.player.internal.w$a: Exception thrown by invoked constructor in com.google.android.youtube.api.jar.client.RemoteEmbeddedPlayer
...
        Caused by: java.lang.reflect.InvocationTargetException
           at java.lang.reflect.Constructor.newInstance0(Native Method)
...
        Caused by: java.lang.IllegalArgumentException: The concrete class implementing IObjectWrapper must have exactly *one* declared private field for the wrapped object.  Preferably, this is an instance of the ObjectWrapper<T> class.
           at zst.a(SourceFile:76)

我的布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:orientation="vertical">
<TextView
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:textAppearance="@android:style/TextAppearance.Small"
    android:gravity="center"
    android:text="Youtube!"/>
<fragment
    android:name="com.google.android.youtube.player.YouTubePlayerFragment"
    android:id="@+id/youtube_fragment"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>
</LinearLayout>

和我的活动:

public class EducationVideoActivity extends YouTubeFailureRecoveryActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_education_youtube);
        YouTubePlayerFragment youTubePlayerFragment =
                (YouTubePlayerFragment) getFragmentManager().findFragmentById(R.id.youtube_fragment);
        youTubePlayerFragment.initialize(YoutubeKey.DEVELOPER_KEY, this);
    }
    @Override
    public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player,
                                        boolean wasRestored) {
        if (!wasRestored) {
            player.cueVideo("nCgQDjiotG0");
        }
    }
    @Override
    protected YouTubePlayer.Provider getYouTubePlayerProvider() {
        return (YouTubePlayerFragment) getFragmentManager().findFragmentById(R.id.youtube_fragment);
    }
}

我在网上尝试了其他几个示例,它们都会给出相同的错误。欢迎所有建议!

我在荣誉上遇到了一些问题。

第一次我以此方式导入youtubeandroidplayerapi.jar->右键单击project-> new-> new-> import .jar/.aar软件包中的应用程序夹 ->选择youtubeandroidplayerapi.jar.jar-jar-->完成。然后打开项目结构和依赖项选项卡添加了模块依赖关系。此Gradle完成后,在build.gradle中为compile project(':YouTubeAndroidPlayerApi')。通过这种方式,发生了一个错误创建YouTubePlayerView。

因此,我恢复了所有内容,并像这样导入了lib->复制youtubeandroidplayerapi.jar中的/app/libs文件夹 ->打开项目结构,而不是模块依赖关系,我选择了JAR依赖关系,并从libs文件夹中选择youtubeandobeandroidplayerapi.jar。在那个Gradle完成后,现在在build.gradle中为compile files('libs/YouTubeAndroidPlayerApi.jar'),一切都起作用。

正如麦克(Mike)在gradle中已经提到的那样,应为 compile files('libs/YouTubeAndroidPlayerApi.jar')而不是 compile project(':YouTubeAndroidPlayerApi')

我希望这可以帮助您。

我认为我的gradle可能是不同步的。我还删除了这条线:

compile project(':YouTubeAndroidPlayerApi')

这仍然存在:

compile files('libs/YouTubeAndroidPlayerApi.jar')

我可以发誓我没有第一行尝试了一下,但是我不能绝对确定。

相关内容

  • 没有找到相关文章

最新更新