我收到此错误Fatal Exception: java.lang.IllegalStateException
This YouTubePlayer has been released,但未release()明确调用.这是崩溃发生的代码段:
if(youtubePlayer != null){
time = youtubePlayer.getCurrentTimeMillis();//exception may occur
}
Run Code Online (Sandbox Code Playgroud)
有可能检查那youtubePlayer是released吗?有没有回调?谢谢.
我试图将YouTube Android API包装为React Native的UI组件.我已成功完成Android配置(获取onInitializationSuccess),但我无法弄清楚如何将YouTubePlayerView恢复到我的React Native应用程序.
根据文档,如果您无法扩展YouTubeBaseActivity,他们建议您使用YouTubePlayerFragment.由于Android上的React Native不使用基于XML的布局,因此我尝试以编程方式创建视图.但是,当我返回包装视图(我尝试作为FrameLayout,但不确定这是否是正确的选择)我创建它不会在应用程序上呈现任何内容.
我现在想要保持它非常简单,这里是必要的代码:
YouTubeManager.java
public class YouTubeManager extends SimpleViewManager<FrameLayout> implements YouTubePlayer.OnInitializedListener {
// ...
@Override
protected FrameLayout createViewInstance(ThemedReactContext reactContext) {
this.reactContext = reactContext;
FrameLayout view = new FrameLayout(reactContext);
view.setId(View.generateViewId());
FragmentManager fragmentManager = activity.getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
YouTubePlayerFragment fragment = new YouTubePlayerFragment();
fragmentTransaction.add(view.getId(), fragment);
fragmentTransaction.commit();
fragment.initialize("SECRET_KEY", this);
return view;
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
YouTube.js
class YouTube extends Component {
render () {
return <YouTubeAndroid {...this.props}/>;
}
};
var iface = {
name : 'YouTube',
propTypes …Run Code Online (Sandbox Code Playgroud) 我试图解决这个问题,通过互联网搜索,没有找到真正的答案.
我正在开发一款需要YouTube播放器的应用.这个玩家是YouTubePlayerSupportFragment因为它在一个支持片段中(所以它也是嵌套的).初始设置后,我意识到无论何时旋转手机,视频都会停止播放,必须重新启动.这显然不是我想要的.
然后我发现了一些SO答案(就像这样),人们说Activity需要处理配置更改,所以我android:configChanges="keyboardHidden|orientation|screenSize"在清单中添加了Activity.这解决了这个问题,视频现在即使在方向改变时也能继续播放,全屏旋转看起来并不难看.很酷,我说,只是意识到这大大困扰了应用程序的其他部分,因为配置现在正在所有视图到位后更新.这意味着如果我的手机处于纵向模式并且我将其旋转到横向,则使用的布局仍然是纵向布局.
我找到了解决方案,建议调用setContentView(...)Activity onConfigurationChanged(...)并重新填充片段中的视图,但这似乎是一个相当麻烦的解决方案,因为它不仅仅是我需要的简单内容设置,需要保留片段(例如滚动)在...中的位置RecyclerView.setRetainInstance(true)在这种情况下,内置功能不起作用,因为视图也可以使用它重新创建,但是在onCreateView(...)调用时配置仍然是旧的.
如果我可以捕获configChanges事件,如果用户只在该屏幕(片段)上,但在其他任何地方保留Activity娱乐,那将是很好的.
不建议使用更多活动,由于UI/UX原因,我无法为此屏幕和应用程序的其余部分使用单独的活动.
youtube android android-fragments android-orientation android-youtube-api
我已经阅读了从YouTube视频中全屏离开的所有内容都是通过按回来,但在我Activity看来它不是这样的,但我喜欢它.
我给你发了代码:
public class MainActivity extends YouTubeFailureRecoveryActivity {
public static String prefix = "https://gdata.youtube.com/feeds/api/playlists/";
public static String sufix = "?v=2&alt=jsonc";
private String myPlayList = "PLZGKlf2ZwY7ua0C2oeUaXQKeLKNGy3mkh";
private VideosListFragment videosFragment;
// The next video to play
private Video actualVideo;
// This is the handler that receives the response when the YouTube read
private Handler responseHandler;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
videosFragment = (VideosListFragment) getFragmentManager().findFragmentById(R.id.videosListView);
getUserYouTubeFeed();
}
@Override
public …Run Code Online (Sandbox Code Playgroud) 我想在我的Android应用程序中播放管视频
我在例如"service_missing"之类的youtube初始化时遇到异常.
我写下面的代码,
package com.example.youtubedemo;
import android.os.Bundle;
import android.view.Menu;
import android.widget.Toast;
import com.google.android.youtube.player.*;
import com.google.android.youtube.player.YouTubePlayer.OnInitializedListener;
import com.google.android.youtube.player.YouTubePlayer.Provider;
public class MainActivity extends YouTubeBaseActivity implements OnInitializedListener{
static private final String DEVELOPER_KEY = "MY API KEY";
static private final String VIDEO = https://www.youtube.com/watch?v=d6XXgeAkBfQ&list=PLWz5rJ2EKKc9Wam5jE-9oY8l6RpeAx-XM";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
YouTubePlayerView youTubeView = (YouTubePlayerView)
findViewById(R.id.youtube_view);
youTubeView.initialize(DEVELOPER_KEY, MainActivity.this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return …Run Code Online (Sandbox Code Playgroud) 我想使用API中的YouTubePlayerFragment在片段中加载YoutubePlayer
我的片段的.xml文件是:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- VIDEO CONTENT -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:paddingLeft="@dimen/layout_horizontal_margin"
android:paddingRight="@dimen/layout_horizontal_margin"
android:paddingTop="@dimen/layout_vertical_margin"
android:paddingBottom="@dimen/layout_vertical_margin" >
<fragment
android:name="com.google.android.youtube.player.YouTubePlayerFragment"
android:id="@+id/youtubeplayer_fragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
<!-- LYRIC CONTENT -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="2" >
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="@drawable/af_background"
android:layout_centerInParent="true" />
<!-- TEXT STRUCTURE -->
<LinearLayout
android:orientation="vertical"
android:id="@+id/lyric_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerHorizontal="true" >
<LinearLayout
android:id="@+id/start_layout"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_gravity="center_horizontal"
android:layout_centerInParent="true">
<TextView
android:id="@+id/text_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginTop="@dimen/lyric_margin_top"
android:gravity="center"
android:text="@string/textTitle2"
android:textSize="@dimen/lyric_size"
android:textIsSelectable="false"/>
</LinearLayout>
</LinearLayout>
<!-- …Run Code Online (Sandbox Code Playgroud) 我正在使用YouTube Data API v3创建Android应用.到目前为止一直很好,直到我意识到很多视频都没有播放.
我得到"来自持有人的内容因版权原因在您所在的国家/地区被屏蔽"....
我用谷歌搜索,似乎解决这个问题的方法是使用版本3的YouTube.Search.List对象并设置:
search.setVideoSyndicated("true");
Run Code Online (Sandbox Code Playgroud)
不幸的是,这太过限制了.所有Vevo视频和谁知道结果中还有什么消失,即使这些视频播放正常.
我已经知道search.setVideoEmbeddable("true")这不是这个等式中感兴趣的变量.
现在我应该补充一下,我已经倾注了文档并最终找到了这个:
...说:
检索视频以便在移动设备上播放
要确保API响应仅包含适合在移动设备上播放的视频,请将fields参数设置为以下值.请注意,必须转义参数值中显示的哈希字符(#)(%23).
fields=entry[link/@rel='http://gdata.youtube.com/schemas/2007%23mobile']
Run Code Online (Sandbox Code Playgroud)
如果您正在为移动设备开发应用程序,则可能还需要在API请求中指定移动投影.
....
好吧......所以尽管这只适用于API版本2.0(?)我想,"嘿......我是一个好奇的家伙......"我创建了以下测试URL并通过Firefox运行它查看XML有效负载.
嗯......这确实有效.请注意,"/ mobile /"在文档中称为"投影",通常在公共端点中为"/ api /".
现在,当我说"这确实有用"时,这意味着我恢复了XML,确实过滤掉了"因版权原因阻止"播放错误的视频.
然而,搜索P!NK或Rihanna或(在此处插入流行艺术家du jour)会产生AWFUL结果.
我的头痛恶化:YouTube的官方移动Android应用程序确实显示YouTube Vevo的内容,因为当我没有设置联合到真,并且他们没有显示我的国家因版权原因而被阻止的所有无数视频.
现在我在美国大苹果公司,所以我们不要把"你们国家"的东西用来暗示我在一些不幸的城堡里.
因此,简而言之,在尝试创建可接受的移动用户体验或我遗漏某些内容时,YouTube数据API中存在一些问题.我希望它是后者,有人可以告诉我如何使用YT Data API v3来获取Vevo(宝宝)并且因为版权原因(洗澡水)结果丢失了6个"在你的国家被阻止".
这个问题似乎是长期存在的,但也是一个"利基"领域,谷歌会告诉他们的API开发者社区使用联合属性来删除其合作伙伴的所有内容,例如Vevo似乎希望他们的内容在移动.Android的播放器API会显示这些广告,因此它毕竟是货币化的收入来源.
这里的任何人都可以告诉我这个等式中我缺少什么,或者这只是谷歌中没有人知道或认为足够优先来补救的东西?我是API的第3版的新手,所以也许我只是不知道关键的东西.
我有一个带有CardViews的RecyclerView.我希望每个CardView都有自己的YouTubePlayerFragment.即使它们不能同时处于活动状态,我甚至无法在任何CardView中实例化YouTubePlayerFragment,而是在RecyclerView中实现第一个.当点击卡上应该设置YouTubePlayerFragment的按钮时,它总是在第一张卡上设置,即使我点击了第二张卡.我正在尝试做什么?
以下是代码的相关部分:
CardView XML中片段的持有者:(直接在xml中使用片段给出了二进制XML异常,可能是由于片段中某个片段内的片段)
<FrameLayout
android:id="@+id/youtube_holder"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:layout_alignLeft="@+id/layout_video_thumbnail"
android:layout_alignStart="@+id/layout_video_thumbnail"
android:layout_alignRight="@+id/layout_video_thumbnail"
android:layout_alignEnd="@+id/layout_video_thumbnail"
android:visibility="visible"/>
Run Code Online (Sandbox Code Playgroud)
ViewHolder:
public class VideoViewHolder extends RecyclerView.ViewHolder {
protected FrameLayout containerYouTubePlayer;
protected TextView textViewTitle;
protected ImageView imageViewThumbNail;
protected Button buttonPreview, buttonSet;
protected Context activityContext;
public VideoViewHolder(Context activityContext, View itemView) {
super(itemView);
this.activityContext = activityContext;
containerYouTubePlayer = (FrameLayout) itemView.findViewById(R.id.youtube_holder);
textViewTitle = (TextView) itemView.findViewById(R.id.textView_title);
imageViewThumbNail = (ImageView) itemView.findViewById(R.id.imageView_video_thumbnail);
buttonPreview = (Button) itemView.findViewById(R.id.button_preview);
buttonSet = (Button) itemView.findViewById(R.id.button_set);
}
}
Run Code Online (Sandbox Code Playgroud)
RecyclerView适配器:
public class VideoCardAdapter extends RecyclerView.Adapter<VideoViewHolder> {
private static final …Run Code Online (Sandbox Code Playgroud) 我想膨胀
<com.google.android.youtube.player.YouTubePlayerView
android:id="@+id/youtubeplayerview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="5dp" />
Run Code Online (Sandbox Code Playgroud)
在List适配器中,以便我可以在listview中播放视频,但我收到错误
com.google.android.youtube.player.YouTubePlayerView类错误
如果我正在使用
<com.google.android.youtube.player.YouTubeThumbnailView
android:id="@+id/youtubeplayerview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="5dp" />
Run Code Online (Sandbox Code Playgroud)
它正在膨胀而没有任何错误,我能够在列表视图中显示缩略图
我的要求是用户点击此缩略图视频应该在列表视图中播放
请建议我如何实现这一目标?
我正在开发一款使用Android Youtube API的Android应用.我可以成功播放Youtube上的任何视频.但是,当我尝试播放直播时,我遇到了一些问题:
当我的设备上安装了最新版本的Youtube时(Youtube 11.13.56),我收到以下消息:"播放时出现问题,点击重试"
删除youtube更新并返回"youtube 10.18.55"版本后,一切正常.
有什么想法来处理这个问题吗?
谢谢你的帮助
环境:三星Galaxy S4,Android 5.0.1,YouTubeAndroidPlayerApi-1.2.2