mik*_*ike 1 java android youtube-api android-fragments android-studio
我无法让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)
Run Code Online (Sandbox Code Playgroud)
我的布局:
<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>
Run Code Online (Sandbox Code Playgroud)
我的活动:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
我在网上尝试了其他几个示例,但它们都给出相同的错误。欢迎任何和所有建议!
小智 5
我的荣誉8出现了一些问题。
第一次以这种方式导入YouTubeAndroidPlayerApi.jar->右键单击项目中的应用程序文件夹->新建->模块->导入.JAR / .AAR包->选择YouTubeAndroidPlayerApi.jar->完成。然后打开项目结构,并在“依赖关系”选项卡中添加“模块依赖”。在此gradle完成并在build.gradle中后是compile project(':YouTubeAndroidPlayerApi')。这样,发生了创建YouTubePlayerView的错误。
因此,我还原了所有内容并导入了这样的lib->将YouTubeAndroidPlayerApi.jar复制到/ app / libs文件夹中->打开Project结构,而不是选择Module依赖关系,而是选择Jar依赖关系,然后从libs文件夹中选择YouTubeAndroidPlayerApi.jar。在完成该步骤之后,现在在build.gradle中compile files('libs/YouTubeAndroidPlayerApi.jar'),一切正常。
正如迈克已经在gradle中提到的,应compile files('libs/YouTubeAndroidPlayerApi.jar')改为compile project(':YouTubeAndroidPlayerApi')。
希望对您有所帮助。
| 归档时间: |
|
| 查看次数: |
496 次 |
| 最近记录: |