content: /*
   * Copyright (C) 2016 The Android Open Source Project
   *
   * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
   * in compliance with the License. You may obtain a copy of the License at
   *
   * http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software distributed under the License
   * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
   * or implied. See the License for the specific language governing permissions and limitations under
   * the License.
   */
  
  package androidx.leanback.leanbackshowcase.app.media;
  
  import android.content.Context;
  import android.media.AudioManager;
  import android.net.Uri;
  import android.os.Bundle;
  import androidx.leanback.app.VideoFragment;
  import androidx.leanback.app.VideoFragmentGlueHost;
  import androidx.leanback.media.MediaPlayerAdapter;
  import androidx.leanback.media.PlaybackGlue;
  import androidx.leanback.widget.PlaybackControlsRow;
  import android.util.Log;
  
  
  public class VideoConsumptionExampleFragment extends VideoFragment {
  
      private static final String URL = "https://storage.googleapis.com/android-tv/Sample videos/"
              + "April Fool's 2013/Explore Treasure Mode with Google Maps.mp4";
      public static final String TAG = "VideoConsumption";
      private VideoMediaPlayerGlue<MediaPlayerAdapter> mMediaPlayerGlue;
      final VideoFragmentGlueHost mHost = new VideoFragmentGlueHost(this);
  
      static void playWhenReady(PlaybackGlue glue) {
          if (glue.isPrepared()) {
              glue.play();
          } else {
              glue.addPlayerCallback(new PlaybackGlue.PlayerCallback() {
                  @Override
                  public void onPreparedStateChanged(PlaybackGlue glue) {
                      if (glue.isPrepared()) {
                          glue.removePlayerCallback(this);
                          glue.play();
                      }
                  }
              });
          }
      }
  
      AudioManager.OnAudioFocusChangeListener mOnAudioFocusChangeListener
              = new AudioManager.OnAudioFocusChangeListener() {
          @Override
          public void onAudioFocusChange(int state) {
          }
      };
  
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
  
          mMediaPlayerGlue = new VideoMediaPlayerGlue(getActivity(),
                  new MediaPlayerAdapter(getActivity()));
          mMediaPlayerGlue.setHost(mHost);
          AudioManager audioManager = (AudioManager) getActivity()
                  .getSystemService(Context.AUDIO_SERVICE);
          if (audioManager.requestAudioFocus(mOnAudioFocusChangeListener, AudioManager.STREAM_MUSIC,
                  AudioManager.AUDIOFOCUS_GAIN) != AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
              Log.w(TAG, "video player cannot obtain audio focus!");
          }
  
          mMediaPlayerGlue.setMode(PlaybackControlsRow.RepeatAction.NONE);
          MediaMetaData intentMetaData = getActivity().getIntent().getParcelableExtra(
                  VideoExampleActivity.TAG);
          if (intentMetaData != null) {
              mMediaPlayerGlue.setTitle(intentMetaData.getMediaTitle());
              mMediaPlayerGlue.setSubtitle(intentMetaData.getMediaArtistName());
              mMediaPlayerGlue.getPlayerAdapter().setDataSource(
                      Uri.parse(intentMetaData.getMediaSourcePath()));
          } else {
              mMediaPlayerGlue.setTitle("Diving with Sharks");
              mMediaPlayerGlue.setSubtitle("A Googler");
              mMediaPlayerGlue.getPlayerAdapter().setDataSource(Uri.parse(URL));
          }
          PlaybackSeekDiskDataProvider.setDemoSeekProvider(mMediaPlayerGlue);
          playWhenReady(mMediaPlayerGlue);
          setBackgroundType(BG_LIGHT);
      }
  
      @Override
      public void onPause() {
          if (mMediaPlayerGlue != null) {
              mMediaPlayerGlue.pause();
          }
          super.onPause();
      }
  
  }
  