gpt4 book ai didi

Android WebView - Youtube 视频不在应用程序中播放

转载 作者:太空宇宙 更新时间:2023-11-03 12:31:37 26 4
gpt4 key购买 nike

我有一个使用 WebView 显示网页的 Activity 。在该页面中,有一个指向 YouTube 视频的链接(因此我无法或不需要嵌入该视频)。

问题是视频无法播放 - 当我点击播放按钮时,出现一个错误页面说“ 网页无法显示vnd.youtube 上的网页:SVf8Ghl6d8xx可能暂时停滞不前,等等等等!!!”

如果你知道我想要什么,请只回答!我几乎浏览了 stackoverflow 上的所有相关帖子,因此无需引用其他帖子/问题。

主 Activity .java

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


// add the custom view to the action bar
webView = (WebView) findViewById(R.id.webView1);
webView.getSettings().setJavaScriptEnabled(true);

if(Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR2)
webView.getSettings().setPluginState(WebSettings.PluginState.ON); //Helps flash run on a device

webView.getSettings().setBuiltInZoomControls(true);

webView.setWebViewClient(new WebViewClient ());
webView.setWebChromeClient(new WebChromeClient());
webView.getSettings().setUseWideViewPort(true);
//webView.getSettings().setUseWideViewPort(false);
webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
webView.loadUrl(url);

}

以下代码使其在 youtube 应用程序中运行,但我希望视频在我的应用程序中运行:(

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


// add the custom view to the action bar
webView = (WebView) findViewById(R.id.webView1);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setBuiltInZoomControls(true);

if(Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR2)
webView.getSettings().setPluginState(WebSettings.PluginState.ON);


webView.setWebViewClient(new WebViewClient () {
@ Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("vnd.youtube")){

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));

return true;
}
else return false;

}
});

webView.setWebChromeClient(new WebChromeClient());
webView.getSettings().setUseWideViewPort(true);
//webView.getSettings().setUseWideViewPort(false);
webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
webView.loadUrl(url);

}

最佳答案

  1. 转到 Google Developer Console 并选择或创建一个新项目。

  2. 在左侧边栏中,选择 APIs & auth 下的 APIs 并为 YouTube Data API v3 打开状态。

  3. 在左侧边栏中,选择凭据并在公共(public) API 访问下创建新 key 。

  4. 当弹出窗口要求您选择平台时,选择 Android Key。

  5. 粘贴 SHA-1 key 和项目的包名称,以分号 (;) 分隔。

  6. 点击创建。现在您应该会在仪表板上看到 API KEY。

从这里下载 YouTubeAPI jar

https://developers.google.com/youtube/android/player/downloads/

创建这样的布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<com.google.android.youtube.player.YouTubePlayerView
android:id="@+id/youtube_player"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black"
android:layout_centerInParent="true" />

</RelativeLayout>

你的 Activity 应该看起来像这样

public class CustomYouTubePlayer extends YouTubeBaseActivity implements   YouTubePlayer.OnInitializedListener{


private String API_KEY="your key";
private String VIDEO_ID;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/** attaching layout xml **/
setContentView(R.layout.youtube_player);

/** Initializing YouTube player view **/
VIDEO_ID = getIntent().getExtras().getString(FinalVariables.YOUTUBE_ID);
YouTubePlayerView youTubePlayerView = (YouTubePlayerView) findViewById(R.id.youtube_player);
youTubePlayerView.initialize(API_KEY, this);
}

@Override
public void onInitializationSuccess(Provider provider, YouTubePlayer player, boolean wasRestored) {

player.setShowFullscreenButton(false);
/** add listeners to YouTubePlayer instance **/
player.setPlayerStateChangeListener(playerStateChangeListener);
player.setPlaybackEventListener(playbackEventListener);

/** Start buffering **/
if (!wasRestored) {
player.loadVideo(VIDEO_ID);
}
}
private YouTubePlayer.PlaybackEventListener playbackEventListener = new YouTubePlayer.PlaybackEventListener() {

@Override
public void onBuffering(boolean arg0) {
}

@Override
public void onPaused() {
}

@Override
public void onPlaying() {
}

@Override
public void onSeekTo(int arg0) {
}

@Override
public void onStopped() {
}

};

private YouTubePlayer.PlayerStateChangeListener playerStateChangeListener = new YouTubePlayer.PlayerStateChangeListener() {

@Override
public void onAdStarted() {
}

@Override
public void onError(YouTubePlayer.ErrorReason arg0) {
}

@Override
public void onLoaded(String arg0) {
}

@Override
public void onLoading() {
}

@Override
public void onVideoEnded() {
finish();
}

@Override
public void onVideoStarted() {
}
};
}

只需传递视频 ID,就这么简单..

编辑

如果这是您的 YouTube 链接 https://www.youtube.com/watch?v=rql_F8H3h9E然后是您的video_id=rql_F8H3h9E从 YouTube 链接中提取您的视频 ID,并将其作为额外变量发送到此 Activity 。

关于Android WebView - Youtube 视频不在应用程序中播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32195399/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com