Youtube API“初始化YouTube播放器时出错。”

时间:2013-03-17 06:59:15

标签: android youtube youtube-api

我正在使用Youtube API在我的应用程序上使用简单的playerView。我做了API所说的,但我不断收到“应用已停止”的消息。因为我正在使用韩国电话,所以我真的不知道确切的英语短语。希望这是英语中的正确短语。

我将Youtubeandroidplayerapi.jar放在libs中并构建路径并在库中包含不必要的组件。

这是Menu.java。

package com.hobak.sci;

import com.hobak.sci.DeveloperKey;
import com.hobak.sci.R;
import com.google.android.youtube.player.YouTubeBaseActivity;
import com.google.android.youtube.player.YouTubeInitializationResult;
import com.google.android.youtube.player.YouTubePlayer;
import com.google.android.youtube.player.YouTubePlayer.Provider;
import com.google.android.youtube.player.YouTubePlayerView;
import android.os.Bundle;

public class Menu extends YouTubeBaseActivity implements
    YouTubePlayer.OnInitializedListener {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.menu);

        YouTubePlayerView youTubeView = (YouTubePlayerView) findViewById(R.id.youtube_view);
    youTubeView.initialize(DeveloperKey.DEVELOPER_KEY, this);
    }

    @Override
    public void onInitializationSuccess(YouTubePlayer.Provider provider,
        YouTubePlayer player, boolean wasRestored) {
    if (!wasRestored) {
        player.cueVideo("2LHv1FPd1Ec");
    }
}

protected YouTubePlayer.Provider getYouTubePlayerProvider() {
    return (YouTubePlayerView) findViewById(R.id.youtube_view);
}

@Override
public void onInitializationFailure(Provider arg0,
        YouTubeInitializationResult arg1) {
    // TODO Auto-generated method stub

}

}

这是我的xml文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#FFFACD"
    android:orientation="vertical" >


  <com.google.android.youtube.player.YouTubePlayerView
    android:id="@+id/youtube_view"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" />



</LinearLayout>

这是我的logcat

03-17 15:55:51.260: E/AndroidRuntime(5277): FATAL EXCEPTION: main
03-17 15:55:51.260: E/AndroidRuntime(5277): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.hobak.sci/com.hobak.sci.Menu}: java.lang.SecurityException: Not allowed to bind to service Intent { act=com.google.android.youtube.api.service.START }
03-17 15:55:51.260: E/AndroidRuntime(5277):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1961)
03-17 15:55:51.260: E/AndroidRuntime(5277):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1986)
03-17 15:55:51.260: E/AndroidRuntime(5277):     at android.app.ActivityThread.access$600(ActivityThread.java:128)
03-17 15:55:51.260: E/AndroidRuntime(5277):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1152)
03-17 15:55:51.260: E/AndroidRuntime(5277):     at android.os.Handler.dispatchMessage(Handler.java:99)
03-17 15:55:51.260: E/AndroidRuntime(5277):     at android.os.Looper.loop(Looper.java:137)
03-17 15:55:51.260: E/AndroidRuntime(5277):     at android.app.ActivityThread.main(ActivityThread.java:4453)
03-17 15:55:51.260: E/AndroidRuntime(5277):     at java.lang.reflect.Method.invokeNative(Native Method)
03-17 15:55:51.260: E/AndroidRuntime(5277):     at java.lang.reflect.Method.invoke(Method.java:511)
03-17 15:55:51.260: E/AndroidRuntime(5277):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787)
03-17 15:55:51.260: E/AndroidRuntime(5277):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554)
03-17 15:55:51.260: E/AndroidRuntime(5277):     at dalvik.system.NativeStart.main(Native Method)
03-17 15:55:51.260: E/AndroidRuntime(5277): Caused by: java.lang.SecurityException: Not allowed to bind to service Intent { act=com.google.android.youtube.api.service.START }
03-17 15:55:51.260: E/AndroidRuntime(5277):     at android.app.ContextImpl.bindService(ContextImpl.java:1164)
03-17 15:55:51.260: E/AndroidRuntime(5277):     at android.content.ContextWrapper.bindService(ContextWrapper.java:370)
03-17 15:55:51.260: E/AndroidRuntime(5277):     at com.google.android.youtube.player.internal.r.e(Unknown Source)
03-17 15:55:51.260: E/AndroidRuntime(5277):     at com.google.android.youtube.player.YouTubePlayerView.a(Unknown Source)
03-17 15:55:51.260: E/AndroidRuntime(5277):     at com.google.android.youtube.player.YouTubeBaseActivity$a.a(Unknown Source)
03-17 15:55:51.260: E/AndroidRuntime(5277):     at com.google.android.youtube.player.YouTubePlayerView.initialize(Unknown Source)
03-17 15:55:51.260: E/AndroidRuntime(5277):     at com.hobak.sci.Menu.onCreate(Menu.java:21)
03-17 15:55:51.260: E/AndroidRuntime(5277):     at android.app.Activity.performCreate(Activity.java:4467)
03-17 15:55:51.260: E/AndroidRuntime(5277):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
03-17 15:55:51.260: E/AndroidRuntime(5277):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1925)
03-17 15:55:51.260: E/AndroidRuntime(5277):     ... 11 more

9 个答案:

答案 0 :(得分:10)

我遇到了这个问题。然后我加入了

<uses-permission android:name="android.permission.INTERNET"/>进入AndroidManifest.xml标记中的<manifest>。该应用程序运行良好。

答案 1 :(得分:5)

我通过以下步骤解决了这个问题:

  • 清理项目,然后重建项目
  • 在具有版本高于4.2.16的Youtube应用的设备中运行该应用。

答案 2 :(得分:2)

也许,它似乎是开发人员的关键问题。 位于DeveloperKey.java中的示例DEVELOPER_KEY键将不起作用。 首先,注册一个新的开发人员密钥。 (https://code.google.com/apis/console) 然后,用有效密钥替换它。

答案 3 :(得分:2)

只需将您的YouTube应用更新到手机中的最新版本,它就会完美无缺

答案 4 :(得分:1)

右键单击项目转到属性 - >在路径中构建的java-&gt; libraries-&gt;添加库并在那里添加jar文件然后它正在工作

如果你想在你的应用程序中使用youtube视频,你的设备必须包含youtube的应用程序,否则它将无法正常工作

答案 5 :(得分:0)

除了将<uses-permission android:name="android.permission.INTERNET" />添加到AndroidManifest.xml之外,您还必须在设备/模拟器上安装youtube应用。如果你想在模拟器上得到它,请加载:

https://play.google.com/store/apps/details?id=com.google.android.youtube&hl=en
(你可以使用http://apps.evozi.com/apk-downloader/?id=com.google.android.youtube

获取apk

答案 6 :(得分:0)

如果玩家在Google Glass上失败

当youtube播放器失败时,传递给失败方法的YouTubeInitializationResult arg1参数包含有关播放器失败原因的信息。我只是敬酒它,正如你在上面的代码中看到的那样。我在吐司中打印了一个SERVIVE_MISSING。我在google's developer website找到了可能的返回值列表,而SERVICE_MISSING错误的原因是设备上缺少YouTube API服务。这项服务是google与Android分发的标准YouTube应用程序的一部分,但显然尚未将其添加到玻璃上。要解决此问题,您可以侧载应用程序以获取服务。遗憾的是,无法启动YouTube应用并观看视频,因为它是针对Android电话编写的,没有语音触发/时间线卡。

它可以从here下载,或者我已将其加载到此处:com.google.android.youtube-5.2.27.apk

只需将其加载:

adb install com.google.android.youtube-5.2.27.apk

这会将youtube应用程序安装在玻璃上。现在视频应该可以工作了!

  

取自:http://www.eg.bucknell.edu/~jpk017/doku.php?id=wiki:yt

答案 7 :(得分:0)

我在发布版本中遇到了这个问题,但在将其添加到proguard

之后就开始了
-keepclassmembers class fqcn.of.javascript.interface.for.webview {
       public *;
   }

答案 8 :(得分:0)

我有同样的问题,经过搜索和谷歌搜索这么多,我得到了答案: -

           for youtube player you must have youtube app enabled and still if not work then update youtube to the latest version.

它会起作用。