2016-01-01 4 views
3

Я пишу простое приложение для Android с помощью API YouTube - я хотел бы достичь состояния, в котором у меня будет автоматическое возобновление каждого видео/живого потока, который я выбираю в своем приложении. Я был в состоянии установить автовоспроизведение, когда я инициализирую текущую проблему, я имею в виду, что когда я пытаюсь сделать это, как ниже, код не делает то, что я хочу (каждый раз, когда я иду с этим приложением в фоновый режим и возобновляю его, я кнопка воспроизведения)Есть ли способ возобновить видео YouTube API?

public class MainActivity extends YouTubeBaseActivity implements YouTubePlayer.OnFullscreenListener, YouTubePlayer.OnInitializedListener { 

    //private YouTubePlayer player = null; 
    private boolean isFullscreen; 
    private static final int RECOVERY_DIALOG_REQUEST = 1; 
    private YouTubePlayerView youTubePlayerView; 

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

     /** Initializing YouTube Player View for displaying YouTube video **/ 
     youTubePlayerView = (YouTubePlayerView) findViewById(R.id.youtube_player); 
     youTubePlayerView.initialize(DeveloperKey.DEVELOPER_KEY, this); 

    } 

    @Override 
    public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player, boolean wasRestored) { 

     player.setFullscreen(true); 
     player.setOnFullscreenListener(this); 

     if (!wasRestored) { 
      player.loadVideo(YouTubeVideoId.VIDEO_ID); 
     } 
    } 

    @Override 
    public void onInitializationFailure(YouTubePlayer.Provider provider, 
             YouTubeInitializationResult errorReason) { 
     if (errorReason.isUserRecoverableError()) { 
      errorReason.getErrorDialog(this, RECOVERY_DIALOG_REQUEST).show(); 
     } else { 
      String errorMessage = String.format(getString(R.string.error_player), errorReason.toString()); 
      Toast.makeText(this, errorMessage, Toast.LENGTH_LONG).show(); 
     } 
    } 

    @Override 
    public void onFullscreen(boolean isFullscreen) { 
     this.isFullscreen = isFullscreen; 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     youTubePlayerView.initialize(DeveloperKey.DEVELOPER_KEY, this); 
    } 

} 

Заранее благодарю за вашу любезную помощь и советы!

ответ

0

ИДК, что это похоже на Android, но, как на браузере (JavaScript/HTML), используйте: «player.playVideo()»
Это как начать и возобновить видео.

0

У меня есть для вас решение:

У меня была точно такая же проблема, и после прыжка в официальной примеры я открыл, к моему ужасу, что у них были точно такие же проблемы. Внешние элементы управления, казалось, не могли взаимодействовать с игроком каким-либо значительным образом. Не говоря уже о том, что получение свежего YoutubePlayer имеет тенденцию быть проблематичным. Однако мне удалось кое-что обнаружить, испытав и попробовав разные вещи:

Даже если вы сохраните статическую ссылку на свой YoutubePlayer, эта ссылка не сможет каким-либо образом изменить плеер. НО вы все еще можете восстановить место, где видео приостановилось. Таким образом, следующий логический шаг для меня, чтобы попробовать это:

  1. Получение позиции от игрока, прежде чем покинуть свою деятельность:

    Integer myMILLIS = yplayer.getCurrentTimeMillis(); 
    
  2. Тогда, когда вернется перезагрузить видео, и движение она в правильном положении:

    // Reload the SAME VIDEO again (yplayer is the YoutubePlayer) 
    yplayer.cueVideo(mVideoURL); 
    // Get the position you saved back 
    yplayer.seekToMillis(myMILLIS); 
    // Start Playing the video from that position again 
    yplayer.play(); 
    

дело в том, по какой-то странной причине, что само по себе не работа, но когда я попытался отлаживать предыдущие фрагменты кода ... ЭТО ЗАВЕРШЕНО РАБОТАТЬ ИНОГДА.

Итак, после некоторого более тестирования я обнаружил проблему с предыдущим решением: После вызова

yplayer.cueVideo(mVideoURL); 

Вызов все остальное сразу после того, как потерпит неудачу.Поэтому это может быть странным решением, но оно работает отлично:

  1. Получение позиции от игрока, прежде чем покинуть свою деятельность:

    Integer myMILLIS = yplayer.getCurrentTimeMillis(); 
    
  2. Тогда, когда вернется перезагрузить видео:

    // Reload the SAME VIDEO again (yplayer is the YoutubePlayer) 
    yplayer.cueVideo(mVideoURL); 
    
  3. Прежде чем делать что-нибудь еще, мы должны немного подождать:

    // The next pause is here to allow the video to load 
    try 
    { 
        Thread.sleep(1000); 
    } catch (InterruptedException e) 
    { 
        // Do something here if you need to 
    } 
    
  4. переместить его в нужное положение снова, и играть:

    // Get the position you saved back 
    yplayer.seekToMillis(myMILLIS); 
    // Start Playing the video from that position again 
    yplayer.play(); 
    

Это решило мою проблему. Надеюсь, это поможет вам.