【问题标题】:How to provide start and end parameters for a youtube video in youtube Android player?如何在 youtube Android 播放器中为 youtube 视频提供开始和结束参数?
【发布时间】:2014-01-01 03:53:47
【问题描述】:

我正在使用 Youtube Player api 在我的应用程序中播放 youtube 视频。我想从假设 36 秒开始视频,并希望在 65 秒左右结束视频。

示例:https://www.youtube.com/v/BmOpD46eZoA?start=36&end=65

我正在使用 youtubeAndroidPlayer Api。我没有找到任何 Youtubeplayer 设置开始和结束值的方法。有人可以建议我如何设置参数。

而且我还希望使用 youtube api 中的“控件”字段隐藏控件,但我没有找到任何方法来隐藏它。

我的 xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="http://android-er.blogspot.com/"
        android:textStyle="bold"
        android:layout_gravity="center_horizontal"
        android:autoLink="web" />

    <com.google.android.youtube.player.YouTubePlayerView
        android:id="@+id/youtubeplayerview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

</LinearLayout>

我的活动:

public class MainActivity extends YouTubeBaseActivity implements
YouTubePlayer.OnInitializedListener{

 public static final String API_KEY = "AIzaSyCe6tORd9Ch4lx-9Ku5SQ476uS9OtZYsWA";
 public static final String VIDEO_ID = "xyoajjlPt_o";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        YouTubePlayerView youTubePlayerView = (YouTubePlayerView)findViewById(R.id.youtubeplayerview);
        youTubePlayerView.initialize(API_KEY, this);


    }

 @Override
 public void onInitializationFailure(Provider provider,
   YouTubeInitializationResult result) {
  Toast.makeText(getApplicationContext(), 
    "onInitializationFailure()", 
    Toast.LENGTH_LONG).show();
 }

 @Override
 public void onInitializationSuccess(Provider provider, YouTubePlayer player,
   boolean wasRestored) {
  if (!wasRestored) {
        player.cueVideo(VIDEO_ID);

      }
 }

【问题讨论】:

    标签: android youtube-api


    【解决方案1】:

    嗯,你可以利用 Handler 来跟踪视频的当前运行时间。当以毫秒为单位的时间达到您想要停止视频的点时,只需调用player.pause() 方法即可。

    这是活动的完整代码:

    public class MyActivity extends YouTubeBaseActivity implements YouTubePlayer.OnInitializedListener{
    
        public static final String API_KEY = "AIzaSyCe6tORd9Ch4lx-9Ku5SQ476uS9OtZYsWA";
        public static final String VIDEO_ID = "xyoajjlPt_o";
        private static YouTubePlayer player;
    
        TextView text;
    
        //this is the end time in milliseconds (65th second)
        public int endTime = 65000; 
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.my_activity);
            text = (TextView) findViewById(R.id.text);
            YouTubePlayerView youTubePlayerView = (YouTubePlayerView)findViewById(R.id.youtubeplayerview);
            youTubePlayerView.initialize(API_KEY, this);
        }
    
        @Override
        public void onInitializationFailure(Provider provider,
                YouTubeInitializationResult result) {
            Toast.makeText(getApplicationContext(), 
                    "onInitializationFailure()", 
                    Toast.LENGTH_LONG).show();
        }
    
        @Override
        public void onInitializationSuccess(Provider provider, YouTubePlayer player, boolean wasRestored) {
    
            MyActivity.player = player; //necessary to access inside Runnable 
    
            //start the video at 36th second
            player.loadVideo(VIDEO_ID, 36000);
    
            final Handler handler = new Handler();
            handler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    //For every 1 second, check the current time and endTime
                    if(MyActivity.player.getCurrentTimeMillis() <= endTime) { 
                        text.setText("Video Playing at " + MyActivity.player.getCurrentTimeMillis());
                        handler.postDelayed(this, 1000);
                    } else {
                        handler.removeCallbacks(this); //no longer required
                        text.setText(" Reached " + endTime);
                        MyActivity.player.pause(); //and Pause the video
                    }
                }
            }, 1000);
        }
    }
    

    我不确定是否还有其他方法。希望它能解决你的问题。

    附:有人向here 提出了一个重复的问题,我已经在那里更新了我的answer

    【讨论】:

    • 非常感谢您的回答,我该如何隐藏/显示控件。
    • @user1891910 您可以将播放器样式设置为CHROMELESS。为此,请使用:MyActivity.player.setPlayerStyle(YouTubePlayer.PlayerStyle.CHROMELESS); 并将其放在 else 部分。通读文档,您将轻松获得答案 - developers.google.com/youtube/android/player
    • 嗨,我也使用这个 Youtube api 来加载视频,但是当我尝试加载视频时,这个 api 在 4.0 以上的最新版本中不起作用,它显示初始化器错误你能建议我做什么吗? - 乔尔费尔南德斯
    猜你喜欢
    • 2013-10-30
    • 1970-01-01
    • 2011-11-04
    • 2013-07-20
    • 2011-09-27
    • 1970-01-01
    • 2017-05-19
    • 1970-01-01
    • 2014-05-01
    相关资源
    最近更新 更多