将youtube集成到片段
我的Activity扩展了另一个活动,并由导航抽屉组成,其中每个项目打开一个新片段。我想将Youtube集成到其中一个片段中。以前,我使用YouTubePlayerView将Youtube集成到活动中,但这里是我在网上搜索并找到YouTubePlayerFragment将youtube集成到片段中。但是,当我在搜索教程我发现,即使使用YouTubePlayerFragment,我们正在展开YouTubeBaseActivity。这些都是例子.. http://android-coding.blogspot.in/2013/04/example-to-use-youtubeplayerfragment-of.html http://android-er.blogspot.in/2013/06/example-to-use-youtubeplayerfragment-of.html将youtube集成到片段
我无法理解如何使用YouTubePlayerFragment这样,我的类扩展片段,而不是YouTubeBaseActivity这在我的项目中是必需的。您可以在下面看到我的课程扩展了另一项活动,并由第五个选项打开YouTube Fragment的导航抽屉组成。我想在此片段内播放Youtube视频..我将简要介绍我的课程 -
public class LandingActivity extends BaseGActivity {
.
.
.
.
public void selectDrawerItem(int position) {
Bundle args = new Bundle();
switch (position) {
case 0:
currentFragment = new HomeFragment_();
args.putString(G.General.MEDIA_TYPE_KEY, G.General.MEDIA_TYPE_ALL);
GApplication.getInstance().stopGPlayer();
break;
case 1:
currentFragment = new HomeFragment_();
args.putString(G.General.MEDIA_TYPE_KEY, G.General.MEDIA_TYPE_PHOTO);
GApplication.getInstance().stopGPlayer();
break;
//
case 2:
currentFragment = new HomeFragment_();
args.putString(G.General.MEDIA_TYPE_KEY, G.General.MEDIA_TYPE_AUDIO);
GApplication.getInstance().stopGPlayer();
break;
case 3:
currentFragment = new HomeFragment_();
args.putString(G.General.MEDIA_TYPE_KEY, G.General.MEDIA_TYPE_VIDEO);
GApplication.getInstance().stopGPlayer();
break;
case 4:
currentFragment = new HomeFragment_();
args.putString(G.General.MEDIA_TYPE_KEY, G.General.MEDIA_TYPE_MEME);
GApplication.getInstance().stopGPlayer();
break;
case 5:
currentFragment = new YoutubeFragment();
default:
currentFragment = new HomeFragment_();
args.putString(G.General.MEDIA_TYPE_KEY, G.General.MEDIA_TYPE_ALL);
GApplication.getInstance().stopGPlayer();
break;
}
currentFragment.setArguments(args);
FragmentManager frgManager = getFragmentManager();
frgManager.beginTransaction().replace(R.id.content_frame, currentFragment)
.commit();
mDrawerList.setItemChecked(position, true);
setTitle(dataList.get(position).getItemName());
mDrawerLayout.closeDrawers();
}
public class YoutubeFragment extends Fragment implements YouTubePlayer.OnInitializedListener{
private FragmentActivity myContext;
private YouTubePlayer YPlayer;
private static final String YoutubeDeveloperKey = "xyz";
private static final int RECOVERY_DIALOG_REQUEST = 1;
@Override
public void onAttach(Activity activity) {
if (activity instanceof FragmentActivity) {
myContext = (FragmentActivity) activity;
}
super.onAttach(activity);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.activity_you_tube_api, container, false);
YouTubePlayerView youTubeView = (YouTubePlayerView) rootView.findViewById(R.id.youtube_view);
youTubeView.initialize(YoutubeDeveloperKey, (YouTubePlayer.OnInitializedListener) myContext);
return rootView;
}
@Override
public void onInitializationFailure(YouTubePlayer.Provider provider,
YouTubeInitializationResult errorReason) {
if (errorReason.isUserRecoverableError()) {
errorReason.getErrorDialog(this, RECOVERY_DIALOG_REQUEST).show();
} else {
String errorMessage = String.format(
"There was an error initializing the YouTubePlayer",
errorReason.toString());
Toast.makeText(this, errorMessage, Toast.LENGTH_LONG).show();
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == RECOVERY_DIALOG_REQUEST)
{
getYouTubePlayerProvider().initialize(YoutubeDeveloperKey, this);
}
}
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider,
YouTubePlayer player, boolean wasRestored) {
if (!wasRestored) {
YPlayer = player;
YPlayer.setFullscreen(true);
YPlayer.loadVideo("2zNSgSzhBfM");
YPlayer.play();
}
}
}
YouTubeFrag ment.java
public class YoutubeFragment extends Fragment implements
YouTubePlayer.OnInitializedListener {
private FragmentActivity myContext;
private YouTubePlayer YPlayer;
private static final String YoutubeDeveloperKey = "xyz";
private static final int RECOVERY_DIALOG_REQUEST = 1;
@Override
public void onAttach(Activity activity) {
if (activity instanceof FragmentActivity) {
myContext = (FragmentActivity) activity;
}
super.onAttach(activity);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.activity_you_tube_api, container, false);
YouTubePlayerSupportFragment youTubePlayerFragment = YouTubePlayerSupportFragment.newInstance();
youTubePlayerFragment.initialize("DEVELOPER_KEY", new YouTubePlayer.OnInitializedListener() {
});
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
transaction.add(R.id.youtube_fragment, youTubePlayerFragment).commit();
return rootView;
}
@Override
public void onInitializationSuccess (YouTubePlayer.Provider provider, YouTubePlayer
youTubePlayer,boolean b){
if (!b) {
YPlayer = youTubePlayer;
YPlayer.setFullscreen(true);
YPlayer.loadVideo("2zNSgSzhBfM");
YPlayer.play();
}
}
@Override
public void onInitializationFailure (YouTubePlayer.Provider
provider, YouTubeInitializationResult youTubeInitializationResult){
}
}
布局
<?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">
<fragment
android:name="com.google.android.youtube.player.YouTubePlayerSupportFragment"
android:id="@+id/youtube_fragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
错误 -
Error:(64, 101) error: <anonymous com.pc.gi.ui.fragment.YoutubeFragment$1> is not abstract and does not override abstract method onInitializationFailure(Provider,YouTubeInitializationResult) in OnInitializedListener
首先拓展业务正常
class YourActivity extends Activity...
在版式文件
把下面的线
<fragment
android:name="com.google.android.youtube.player.YouTubePlayerSupportFragment"
android:id="@+id/youtube_fragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
然后在您的活动中,您可以在您的Fragment的onCreareView方法中使用下面的行创建它的实例。
YouTubePlayerSupportFragment youTubePlayerFragment = (YouTubePlayerSupportFragment) getActivity().getSupportFragmentManager()
.findFragmentById(R.id.youtube_fragment);
,或者你可以声明在XML一个FrameLayout里,然后开始在你的onCreateView
YouTubePlayerSupportFragment youTubePlayerFragment = YouTubePlayerSupportFragment.newInstance();
youTubePlayerFragment.initialize("DEVELOPER_KEY", new OnInitializedListener() {
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player, boolean wasRestored) {
if (!wasRestored) {
YPlayer = player;
YPlayer.setFullscreen(true);
YPlayer.loadVideo("2zNSgSzhBfM");
YPlayer.play();
}
}
@Override
public void onInitializationFailure(Provider arg0, YouTubeInitializationResult arg1) {
// TODO Auto-generated method stub
}
});
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
transaction.add(R.id.youtube_fragment, youTubePlayerFragment).commit();
事情的关键使用YouTubeSupportFragment
低于线
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<FrameLayout
android:id="@+id/youtube_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerHorizontal="true"
android:visibility="visible" />
</RelativeLayout>
代码下面是使用YouTubePlayerSupportFragment
而不是YouTubePlayerFragment
。
希望这会有所帮助。
这是你的片段
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.google.android.youtube.player.YouTubeInitializationResult;
import com.google.android.youtube.player.YouTubePlayer;
import com.google.android.youtube.player.YouTubePlayer.OnInitializedListener;
import com.google.android.youtube.player.YouTubePlayer.Provider;
import com.google.android.youtube.player.YouTubePlayerSupportFragment;
import com.ismart.omanapp.R;
public class YoutubeFragment extends Fragment {
private FragmentActivity myContext;
private YouTubePlayer YPlayer;
private static final String YoutubeDeveloperKey = "xyz";
private static final int RECOVERY_DIALOG_REQUEST = 1;
@Override
public void onAttach(Activity activity) {
if (activity instanceof FragmentActivity) {
myContext = (FragmentActivity) activity;
}
super.onAttach(activity);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.activity_you_tube_api, container, false);
YouTubePlayerSupportFragment youTubePlayerFragment = YouTubePlayerSupportFragment.newInstance();
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
transaction.add(R.id.youtube_fragment, youTubePlayerFragment).commit();
youTubePlayerFragment.initialize("DEVELOPER_KEY", new OnInitializedListener() {
@Override
public void onInitializationSuccess(Provider arg0, YouTubePlayer youTubePlayer, boolean b) {
if (!b) {
YPlayer = youTubePlayer;
YPlayer.setFullscreen(true);
YPlayer.loadVideo("2zNSgSzhBfM");
YPlayer.play();
}
}
@Override
public void onInitializationFailure(Provider arg0, YouTubeInitializationResult arg1) {
// TODO Auto-generated method stub
}
});
}
}
嗨..我想播放youtube视频里面片段..我的活动由导航抽屉上我想要的是当我点击第五项时,它会打开一个播放YouTube视频的片段。如果我将这段代码放入活动中,它会在点击导航抽屉中的第五项时播放YouTube视频。或者它只会在活动内部开始播放YouTube视频?我应该在扩展片段的类中放置哪些代码?请再次阅读我的问题..thanku你的时间.. – 2014-10-20 06:30:39
其实你想在你的片段YoutubeFragment。你需要使用'getChildFragmentManager()'而不是'getSupportedFragmentManager();' – Sunny 2014-10-20 10:00:16
你应该使用我的第二种方法。即创建一个xml文件并在其中放置一个frameLayout,并使用我在上面的代码片段onCreateView中编写的代码。 – Sunny 2014-10-20 10:03:28
我最近实施了我的应用程序YouTube视频播放器。我第一次尝试使用YoutubePlayerFragment,但它的API有点不切实际,它没有提供非常“流畅”的用户体验......所以我尝试了YouTube的iframe API(https://developers.google.com/youtube/iframe_api_reference )在WebView中。 Android WebView不支持所有的HTML5功能,所以你需要自己做一些东西......但是这个(https://code.google.com/p/html5webview/)是一个很好的开始。最终结果是值得的。 – 2014-10-20 12:43:20
试试这个:http://*.com/questions/34803095/android-studio-google-map-api-with-fragments – 2017-03-31 02:34:26