如何在我的Android应用程序中播放YouTube视频?
如何在我的应用程序中播放如何在我的Android应用程序中播放YouTube视频?,android,video,youtube,playback,Android,Video,Youtube,Playback,如何在我的应用程序中播放YouTube视频?我想通过直接从YouTube流式播放视频,而不需要下载。此外,在播放视频时,我希望提供菜单选项。我不想使用默认意图播放视频。我如何才能做到这一点?这是btn点击事件 btnvideo.setOnClickListener(new OnClickListener() { public void onClick(View v) { startActivity(new Intent(Intent.ACTION_VIEW,Uri.parse("ht
YouTube
视频?我想通过直接从YouTube流式播放视频,而不需要下载。此外,在播放视频时,我希望提供菜单选项。我不想使用默认意图播放视频。我如何才能做到这一点?这是btn点击事件
btnvideo.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
startActivity(new Intent(Intent.ACTION_VIEW,Uri.parse("http://www.youtube.com/watch?v=Hxy8BZGQ5Jo")));
Log.i("Video", "Video Playing....");
}
});
这种类型在youtube的另一个页面上打开,在那里你可以显示你的视频步骤
MediaPlayer mp=new MediaPlayer();
mp.setDataSource(path);
mp.setScreenOnWhilePlaying(true);
mp.setDisplay(holder);
mp.prepare();
mp.start();
现在查看其他视频或视频id。。。你可以这样做
其中Eminemvo=频道
找到视频id后,您可以将该id放入cueVideo(“视频id”)
专门用于以更好的方式读取该视频id,并在您的项目中创建一个新的xml文件后将其作为xml[1st\u文件
]文件保存在您的桌面上,或者将该[1st\u文件
]上传到您的项目中,然后右键单击它,并使用xml\u编辑器文件打开它,在这里,您可以找到特定视频的视频id
这个答案可能真的很晚了,但它很有用
您可以使用在应用程序中播放youtube视频
一些代码片段:
要播放url中有视频id的youtube视频,只需调用openyoutubeplayepractivity
intent
Intent intent = new Intent(null, Uri.parse("ytv://"+v), this,
OpenYouTubePlayerActivity.class);
startActivity(intent);
其中v是视频id
在清单文件中添加以下权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<activity
android:name="com.keyes.youtube.OpenYouTubePlayerActivity"></activity>
并在清单文件中声明此活动:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<activity
android:name="com.keyes.youtube.OpenYouTubePlayerActivity"></activity>
代码文件
希望这对任何人都有帮助 谷歌有一个支持将视频播放功能整合到Android应用程序中的应用程序。API本身非常易于使用,并且运行良好。例如,下面是如何创建一个新的活动来使用API播放视频
Intent intent = YouTubeStandalonePlayer.createVideoIntent(this, "<<YOUTUBE_API_KEY>>", "<<Youtube Video ID>>", 0, true, false);
startActivity(intent);
Intent-Intent=YouTubeStandalonePlayer.createVideoIntent(这个,“,”,0,true,false);
星触觉(意向);
有关更多详细信息,请参阅。您可以按照中的说明使用iframe
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watchv=cxLG2wtE7TM"));
startActivity(intent);
我并没有完全按照谷歌的建议去做,但这就是我正在使用的代码,它工作得很好
public class CWebVideoView {
private String url;
private Context context;
private WebView webview;
private static final String HTML_TEMPLATE = "webvideo.html";
public CWebVideoView(Context context, WebView webview) {
this.webview = webview;
this.context = context;
webview.setBackgroundColor(0);
webview.getSettings().setJavaScriptEnabled(true);
}
public void load(String url){
this.url = url;
String data = readFromfile(HTML_TEMPLATE, context);
data = data.replace("%1", url);
webview.loadData(data, "text/html", "UTF-8");
}
public String readFromfile(String fileName, Context context) {
StringBuilder returnString = new StringBuilder();
InputStream fIn = null;
InputStreamReader isr = null;
BufferedReader input = null;
try {
fIn = context.getResources().getAssets().open(fileName, Context.MODE_WORLD_READABLE);
isr = new InputStreamReader(fIn);
input = new BufferedReader(isr);
String line = "";
while ((line = input.readLine()) != null) {
returnString.append(line);
}
} catch (Exception e) {
e.getMessage();
} finally {
try {
if (isr != null)
isr.close();
if (fIn != null)
fIn.close();
if (input != null)
input.close();
} catch (Exception e2) {
e2.getMessage();
}
}
return returnString.toString();
}
public void reload() {
if (url!=null){
load(url);
}
}
}
在/assets中,我有一个名为webvideo.html的文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<style>
iframe { border: 0; position:fixed; width:100%; height:100%; bgcolor="#000000"; }
body { margin: 0; bgcolor="#000000"; }
</style>
</head>
<body>
<iframe src="%1" frameborder="0" allowfullscreen></iframe>
</body>
</html>
我不想让YouTube应用程序出现在设备上,所以我使用了本教程:
…要在我的应用程序中生成此代码:
WebView mWebView;
@Override
public void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.video_webview);
mWebView=(WebView)findViewById(R.id.videoview);
//build your own src link with your video ID
String videoStr = "<html><body>Promo video<br><iframe width=\"420\" height=\"315\" src=\"https://www.youtube.com/embed/47yJ2XCRLZs\" frameborder=\"0\" allowfullscreen></iframe></body></html>";
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return false;
}
});
WebSettings ws = mWebView.getSettings();
ws.setJavaScriptEnabled(true);
mWebView.loadData(videoStr, "text/html", "utf-8");
}
//video_webview
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="0dp"
android:layout_marginRight="0dp"
android:background="#000000"
android:id="@+id/bmp_programme_ll"
android:orientation="vertical" >
<WebView
android:id="@+id/videoview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
WebView-mWebView;
@凌驾
创建时的公共void(Bundle savedInstanceState){
setContentView(R.layout.video_webview);
mWebView=(WebView)findViewById(R.id.videoview);
//用你的视频ID建立你自己的src链接
String videoStr=“促销视频
”;
setWebViewClient(新的WebViewClient()){
@凌驾
公共布尔值shouldOverrideUrlLoading(WebView视图,字符串url){
返回false;
}
});
WebSettings ws=mWebView.getSettings();
ws.setJavaScriptEnabled(true);
loadData(videoStr,“text/html”,“utf-8”);
}
//视频网络视图
这正是我想要的。它不是自动播放,而是我的应用程序中的视频流。值得注意的是,一些受限制的视频在嵌入时无法播放。使用YouTube Android Player API
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.andreaskonstantakos.vfy.MainActivity">
<com.google.android.youtube.player.YouTubePlayerView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="visible"
android:layout_centerHorizontal="true"
android:id="@+id/youtube_player"
android:layout_alignParentTop="true" />
<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="195dp"
android:visibility="visible"
android:id="@+id/button" />
</RelativeLayout>
和PlayerConfig.java类:
package com.example.andreaskonstantakos.vfy;
/**
* Created by Andreas Konstantakos on 13/4/2017.
*/
public class PlayerConfig {
PlayerConfig(){}
public static final String API_KEY =
"xxxxx";
}
将“HCE74CEAAE”替换为来自的视频ID。
从Console.developers.google.com获取API_密钥,并将其替换到PlayerConfig.API_密钥上。
有关更多信息,请按照以下教程逐步进行操作:
文件路径如何指向youtube视频?youtube链接播放视频的网页,而不是文件本身的链接。youtube没有任何绝对url。这是OP@MartyMiller最初关注的问题。从youtube获取流Url是另一个问题。它与youtube api有关。这取决于youtube aap,否则它会在新的webView中打开视频,我想在VideoView中播放视频,而不是在webView中。。而不是建议一些方法。plz。VideoView
需要视频的绝对URL,在YouTube的情况下,这可能是不可用的。对于任何复制和粘贴者,如果你不明白为什么这可能不起作用,newIntent中应该有一个空格。新的意图问题是这样的:“我不想用默认意图播放视频。”可能重复它2分钟的工作,从开发者控制台启用Youtube选项,下载Youtube播放器jar文件,开始使用它,它很简单。真的吗?“我不想使用默认意图播放视频。”,第二行,倒数第二行。这只是重复。是的,你正确嵌入了你的应用程序,带有webview,没有youtube api。在应用程序中加载视频的好方法感谢你JanBGreat easy solution,它不需要注册api密钥,如。为我工作!谢谢你的回答。你能放一个屏幕截图让我们也能看到代码的结果吗?如果我想使用动态视频id,那么我会得到“YouTubeAndroidPlayerAPI:Embed config在RemoteEmbeddedPlayer中不受支持。”错误,并且它不会播放我的视频。你能帮我吗。。。提前感谢。youTubePlayerView.initialize不存在,可能已删除?
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.andreaskonstantakos.vfy.MainActivity">
<com.google.android.youtube.player.YouTubePlayerView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="visible"
android:layout_centerHorizontal="true"
android:id="@+id/youtube_player"
android:layout_alignParentTop="true" />
<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="195dp"
android:visibility="visible"
android:id="@+id/button" />
</RelativeLayout>
package com.example.andreaskonstantakos.vfy;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
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.YouTubePlayerView;
public class MainActivity extends YouTubeBaseActivity {
YouTubePlayerView youTubePlayerView;
Button button;
YouTubePlayer.OnInitializedListener onInitializedListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
youTubePlayerView = (YouTubePlayerView) findViewById(R.id.youtube_player);
button = (Button) findViewById(R.id.button);
onInitializedListener = new YouTubePlayer.OnInitializedListener(){
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {
youTubePlayer.loadVideo("Hce74cEAAaE");
youTubePlayer.play();
}
@Override
public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
}
};
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
youTubePlayerView.initialize(PlayerConfig.API_KEY,onInitializedListener);
}
});
}
}
package com.example.andreaskonstantakos.vfy;
/**
* Created by Andreas Konstantakos on 13/4/2017.
*/
public class PlayerConfig {
PlayerConfig(){}
public static final String API_KEY =
"xxxxx";
}