标签: android-youtube-api

Android:youtube播放器已经发布

我收到此错误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)

有可能检查那youtubePlayerreleased吗?有没有回调?谢谢.

java android youtube-api android-youtube-api

14
推荐指数
2
解决办法
7835
查看次数

在React Native Android ViewManager中公开片段

我试图将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)

android android-youtube-api react-native

14
推荐指数
1
解决办法
3457
查看次数

更改方向的单活动应用中的YouTubePlayerSupportFragment

我试图解决这个问题,通过互联网搜索,没有找到真正的答案.

我正在开发一款需要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

14
推荐指数
1
解决办法
1104
查看次数

Android:在观看youtube视频全屏时,我按回来,活动结束

我已经阅读了从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 fullscreen android-youtube-api

13
推荐指数
1
解决办法
1万
查看次数

YouTube Api for android例外"service_missing"

我想在我的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)

android youtube-api android-youtube-api

12
推荐指数
2
解决办法
5126
查看次数

如何在另一个片段中使用YouTubePlayerFragment加载YouTubePlayer?(机器人)

我想使用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)

android youtube-api android-fragments android-youtube-api

12
推荐指数
1
解决办法
1万
查看次数

如何过滤受限于移动播放的YouTube Data API v3中的视频,而不过滤掉Vevo?

我正在使用YouTube Data API v3创建Android应用.到目前为止一直很好,直到我意识到很多视频都没有播放.

我得到"来自持有人的内容因版权原因在您所在的国家/地区被屏蔽"....

我用谷歌搜索,似乎解决这个问题的方法是使用版本3的YouTube.Search.List对象并设置:

search.setVideoSyndicated("true");
Run Code Online (Sandbox Code Playgroud)

不幸的是,这太过限制了.所有Vevo视频和谁知道结果中还有什么消失,即使这些视频播放正常.

我已经知道search.setVideoEmbeddable("true")这不是这个等式中感兴趣的变量.

现在我应该补充一下,我已经倾注了文档并最终找到了这个:

https://developers.google.com/youtube/2.0/developers_guide_protocol_partial?csw=1#Retrieving_Videos_for_Mobile_Playback

...说:

检索视频以便在移动设备上播放

要确保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有效负载.

https://gdata.youtube.com/feeds/mobile/videos?q=RIHANNA&max-results=50&fields=entry[link/@rel=%27http://gdata.youtube.com/schemas/2007%23mobile%27]

嗯......这确实有效.请注意,"/ mobile /"在文档中称为"投影",通常在公共端点中为"/ api /".

现在,当我说"这确实有用"时,这意味着我恢复了XML,确实过滤掉了"因版权原因阻止"播放错误的视频.

然而,搜索P!NKRihanna或(在此处插入流行艺术家du jour)会产生AWFUL结果.

我的头痛恶化:YouTube的官方移动Android应用程序确实显示YouTube Vevo的内容,因为当我没有设置联合到真,并且他们没有显示我的国家因版权原因而被阻止的所有无数视频.

现在我在美国大苹果公司,所以我们不要把"你们国家"的东西用来暗示我在一些不幸的城堡里.

因此,简而言之,在尝试创建可接受的移动用户体验或我遗漏某些内容时,YouTube数据API中存在一些问题.我希望它是后者,有人可以告诉我如何使用YT Data API v3来获取Vevo(宝宝)并且因为版权原因(洗澡水)结果丢失了6个"在你的国家被阻止".

这个问题似乎是长期存在的,但也是一个"利基"领域,谷歌会告诉他们的API开发者社区使用联合属性来删除其合作伙伴的所有内容,例如Vevo似乎希望他们的内容在移动.Android的播放器API会显示这些广告,因此它毕竟是货币化的收入来源.

这里的任何人都可以告诉我这个等式中我缺少什么,或者这只是谷歌中没有人知道或认为足够优先来补救的东西?我是API的第3版的新手,所以也许我只是不知道关键的东西.

youtube-api android-youtube-api

12
推荐指数
0
解决办法
2537
查看次数

ReyclerView内的YouTubePlayerFragment

我有一个带有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)

android fragment android-youtube-api android-recyclerview

12
推荐指数
1
解决办法
3410
查看次数

在列表适配器中输入com.google.android.youtube.player.YouTubePlayerView类时出错

我想膨胀

<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-api

11
推荐指数
1
解决办法
1万
查看次数

使用Android Youtube API播放实时流

我正在开发一款使用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

android youtube-api android-youtube-api

11
推荐指数
1
解决办法
4612
查看次数