如何在我的应用中播放YouTube
个视频?我希望play video
直接从YouTube流式传输而不下载。此外,在播放视频时,我想提供菜单选项。我不想使用默认意图播放视频。我怎么能这样做?
答案 0 :(得分:58)
这是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,您可以在其中显示您的视频
答案 1 :(得分:22)
答案 2 :(得分:15)
步骤
使用菜单选项为您的播放器(全屏)屏幕创建一个新活动。 在不同的线程中运行mediaplayer和UI。
播放媒体 - 一般来说播放音频/视频都有android中的mediaplayer api。 FILE_PATH是文件的路径 - 可能是url(youtube)流或本地文件路径
MediaPlayer mp = new MediaPlayer(); mp.setDataSource(FILE_PATH); mp.prepare(); mp.start();
同时检查:Android YouTube app Play Video Intent 已经详细讨论了这个问题。
答案 3 :(得分: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>
MainActivity.java:
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);
}
});
}
}
和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";
}
将“Hce74cEAAaE”替换为https://www.youtube.com/watch?v=Hce74cEAAaE的视频ID。 从Console.developers.google.com获取API_KEY,并将其替换为PlayerConfig.API_KEY。 有关任何进一步的信息,您可以按照以下教程一步一步: https://www.youtube.com/watch?v=3LiubyYpEUk
答案 4 :(得分:5)
您可以查看可以找到{-3}}的Android-Youtube-Player应用。
在此示例应用中,YouTube视频在视频内而非网页视图中播放。
答案 5 :(得分:2)
这个答案可能真的很晚,但它很有用。
您可以使用android-youtube-player在应用中播放YouTube视频。
部分代码段:
要播放网址中包含视频ID的YouTube视频,您只需调用OpenYouTubePlayerActivity
意图
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>
可以从this代码文件的第一部分获取更多信息。
希望能帮助任何人!
答案 6 :(得分:2)
Google有一个YouTube Android Player API,可让您将视频播放功能整合到Android应用中。 API本身非常易于使用且运行良好。例如,以下是如何使用API创建新活动来播放视频。
Intent intent = YouTubeStandalonePlayer.createVideoIntent(this, "<<YOUTUBE_API_KEY>>", "<<Youtube Video ID>>", 0, true, false);
startActivity(intent);
有关详细信息,请参阅this。
答案 7 :(得分:2)
您可以按https://developers.google.com/youtube/iframe_api_reference
中所述使用iframe我没有完全按照谷歌的建议,但这是我正在使用的代码,它工作正常
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>
现在我在主要布局中定义了一个webview
<WebView
android:id="@+id/video"
android:visibility="gone"
android:background="#000000"
android:layout_centerInParent="true"
android:layout_width="match_parent"
android:layout_height="match_parent" />
我在我的活动中使用CWebVideoView
videoView = (WebView) view.findViewById(R.id.video);
videoView.setVisibility(View.VISIBLE);
cWebVideoView = new CWebVideoView(context, videoView);
cWebVideoView.load(url);
答案 8 :(得分:2)
我不想在设备上显示YouTube应用,因此我使用了本教程:
http://www.viralandroid.com/2015/09/how-to-embed-youtube-video-in-android-webview.html
...在我的应用中生成此代码:
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>
这就是我想要的方式。它没有自动播放,但视频流在我的应用中。值得注意的是,一些受限制的视频在嵌入时不会播放。
答案 9 :(得分:1)
MediaPlayer mp=new MediaPlayer();
mp.setDataSource(path);
mp.setScreenOnWhilePlaying(true);
mp.setDisplay(holder);
mp.prepare();
mp.start();
答案 10 :(得分:1)
您可以在Android应用中使用this项目播放任何管视频。 现在对于其他视频或视频ID ...你可以这样做 https://gdata.youtube.com/feeds/api/users/eminemvevo/uploads/ 其中 eminemvevo =频道。
找到视频ID后,您可以将该ID放入cueVideo("video_id")
src -> com -> examples -> youtubeapidemo -> PlayerViewDemoActivity
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player , boolean wasRestored) {
if (!wasRestored) {
player.cueVideo("wKJ9KzGQq0w");
}
}
专门用于以更好的方式{* 3}}读取video_id,并在创建新的 Xml文件后,将其作为桌面上的xml [1st_file
]文件在您的project
中或在项目中上传[1st_file
]个已保存的文件,然后右键单击该文件,然后使用xml_editor文件打开它,您将在此处找到特定视频的视频ID。
答案 11 :(得分:-4)
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watchv=cxLG2wtE7TM"));
startActivity(intent);