Android Open Source - epgreader-android Video Item Fragment






From Project

Back to project page epgreader-android.

License

The source code is released under:

Apache License

If you think the Android project epgreader-android listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.jeffpalm.android.epg.app;
//from   w  w w  .j  a  v  a 2s .  c  om
import java.io.IOException;

import android.app.Activity;
import android.graphics.PixelFormat;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.MediaController;
import android.widget.TextView;
import android.widget.VideoView;

/**
 * A fragment to show a title and video for a link item.
 */
public class VideoItemFragment extends Fragment implements MediaPlayer.OnCompletionListener,
    MediaPlayer.OnErrorListener, OnActivityCreatedNotifier {

  private static final String TAG = "VideoItemFragment";

  public static final String TITLE = "title";
  public static final String SHARE_URL = "share.url";

  private final DefaultOnActivityCreatedNotifier onActivityCreatedNotifier = new DefaultOnActivityCreatedNotifier();

  private VideoView mVideoView;
  private Integer mPosition;
  private Uri mVideoUri;

  @Override
  public void onAttach(Activity activity) {
    super.onAttach(activity);
  }

  @Override
  public void setListener(Listener listener) {
    onActivityCreatedNotifier.setListener(listener);
  }

  @Override
  public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    Bundle args = getArguments();
    String title = args.getString(TITLE);
    setTitle(title);
  }

  @Override
  public void onStart() {
    super.onStart();
    getVideoUrl();
  }

  private void getVideoUrl() {
    Bundle args = getArguments();
    String shareUrl = args.getString(SHARE_URL);
    getVideoUrl(shareUrl);
  }

  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_video_item, container, false);
    mVideoView = (VideoView) view.findViewById(R.id.videoView);
    return view;
  }

  private void setTitle(String title) {
    TextView view = (TextView) getView().findViewById(R.id.titleText);
    view.setText(title);
  }

  private void getVideoUrl(String shareUrl) {
    AsyncTask<String, Integer, Uri> getVideoUrlTask = new AsyncTask<String, Integer, Uri>() {
      @Override
      protected Uri doInBackground(String... params) {
        String pageUrl = params[0];
        try {
          return new EPGReaderUrlFinder().getStoryUrl(pageUrl);
        } catch (IOException e) {
          Log.e(TAG, "Finding video url for " + pageUrl, e);
        }
        return null;
      }

      @Override
      protected void onPostExecute(Uri result) {
        boolean shouldPlay = mVideoUri == null;
        mVideoUri = result;
        if (shouldPlay) {
          playVideo();
        }
      }
    };
    getVideoUrlTask.execute(shareUrl);
  }

  @Override
  public void onPause() {
    super.onPause();

    // Pause the video if it is playing
    if (mVideoView.isPlaying()) {
      mVideoView.pause();
    }

    // Save the current video position
    mPosition = mVideoView.getCurrentPosition();
  }

  @Override
  public void onResume() {
    super.onResume();

    if (mVideoUri == null) {
      getVideoUrl();
      return;
    }

    playVideo();
  }

  private void playVideo() {
    getActivity().getWindow().setFormat(PixelFormat.TRANSLUCENT);

    mVideoView.setOnCompletionListener(this);
    mVideoView.setOnErrorListener(this);
    mVideoView.setKeepScreenOn(true);

    // Initialize the media controller
    MediaController mediaController = new MediaController(getActivity());
    // mediaController.setMediaPlayer(mVideoView);
    mediaController.setAnchorView(mVideoView);
    // Set-up the video view
    mVideoView.setMediaController(mediaController);
    mVideoView.setVideoPath(mVideoUri.toString());
    mVideoView.requestFocus();
    mVideoView.setVisibility(View.VISIBLE);

    mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
      @Override
      public void onPrepared(MediaPlayer mp) {
        mVideoView.start();
        onActivityCreatedNotifier.notifyListener();
      }
    });

    if (mPosition != null) {
      // Restore the video position
      mVideoView.seekTo(mPosition);
      mVideoView.requestFocus();
    }
  }

  @Override
  public void onDestroy() {
    super.onDestroy();

    // Clean-up
    if (mVideoView != null) {
      mVideoView.stopPlayback();
      mVideoView = null;
    }
  }

  @Override
  public void onCompletion(MediaPlayer mediaPlayer) {
    Log.e(TAG, "end video play");
  }

  @Override
  public boolean onError(MediaPlayer mediaPlayer, int i, int i1) {
    Log.e(TAG, "error: " + i);
    return true;
  }

}




Java Source Code List

com.example.android.imagedownloader.ImageDownloader.java
com.jeffpalm.android.epg.AbstractEPGItem.java
com.jeffpalm.android.epg.AbstractEPGNode.java
com.jeffpalm.android.epg.EPGContentTest.java
com.jeffpalm.android.epg.EPGContent.java
com.jeffpalm.android.epg.EPGIndexTest.java
com.jeffpalm.android.epg.EPGIndex.java
com.jeffpalm.android.epg.EPGItemTestCase.java
com.jeffpalm.android.epg.EPGItem.java
com.jeffpalm.android.epg.EPGLinkItemTest.java
com.jeffpalm.android.epg.EPGLinkItem.java
com.jeffpalm.android.epg.EPGNode.java
com.jeffpalm.android.epg.EPGParserTest.java
com.jeffpalm.android.epg.EPGParser.java
com.jeffpalm.android.epg.EPGSectionTest.java
com.jeffpalm.android.epg.EPGSection.java
com.jeffpalm.android.epg.EPGTestUtil.java
com.jeffpalm.android.epg.EPG.java
com.jeffpalm.android.epg.app.DefaultOnActivityCreatedNotifier.java
com.jeffpalm.android.epg.app.EPGApplication.java
com.jeffpalm.android.epg.app.EPGReaderConstants.java
com.jeffpalm.android.epg.app.EPGReaderFragment.java
com.jeffpalm.android.epg.app.EPGReaderItemListFragment.java
com.jeffpalm.android.epg.app.EPGReaderPreferencesActivity.java
com.jeffpalm.android.epg.app.EPGReaderSharedPrefs.java
com.jeffpalm.android.epg.app.EPGReaderUrlFinder.java
com.jeffpalm.android.epg.app.EPGReaderUtil.java
com.jeffpalm.android.epg.app.Feature.java
com.jeffpalm.android.epg.app.FeedLoader.java
com.jeffpalm.android.epg.app.HeaderFragment.java
com.jeffpalm.android.epg.app.ItemListActivity.java
com.jeffpalm.android.epg.app.ItemListAdapter.java
com.jeffpalm.android.epg.app.ItemListFragment.java
com.jeffpalm.android.epg.app.NoContentFragment.java
com.jeffpalm.android.epg.app.OnActivityCreatedNotifier.java
com.jeffpalm.android.epg.app.PhotoGalleryAdapter.java
com.jeffpalm.android.epg.app.PhotoGalleryFragment.java
com.jeffpalm.android.epg.app.PhotoItemFragment.java
com.jeffpalm.android.epg.app.VideoItemFragment.java
com.jeffpalm.android.epg.app.WebItemFragment.java
com.jeffpalm.android.tmz.model.AbstractTMZItem.java
com.jeffpalm.android.tmz.model.AbstractTMZNode.java
com.jeffpalm.android.tmz.model.DefaultTMZAdapter.java
com.jeffpalm.android.tmz.model.TMZAdapter.java
com.jeffpalm.android.tmz.model.TMZContentCache.java
com.jeffpalm.android.tmz.model.TMZContentTest.java
com.jeffpalm.android.tmz.model.TMZContent.java
com.jeffpalm.android.tmz.model.TMZFactoryHelper.java
com.jeffpalm.android.tmz.model.TMZFactoryHolder.java
com.jeffpalm.android.tmz.model.TMZFactoryTest.java
com.jeffpalm.android.tmz.model.TMZFactory.java
com.jeffpalm.android.tmz.model.TMZIndexTest.java
com.jeffpalm.android.tmz.model.TMZIndexWrapperTest.java
com.jeffpalm.android.tmz.model.TMZIndexWrapper.java
com.jeffpalm.android.tmz.model.TMZIndex.java
com.jeffpalm.android.tmz.model.TMZItemTestCase.java
com.jeffpalm.android.tmz.model.TMZItem.java
com.jeffpalm.android.tmz.model.TMZLinkItemTest.java
com.jeffpalm.android.tmz.model.TMZLinkItem.java
com.jeffpalm.android.tmz.model.TMZNode.java
com.jeffpalm.android.tmz.model.TMZSectionTest.java
com.jeffpalm.android.tmz.model.TMZSection.java
com.jeffpalm.android.tmz.model.TMZTestCase.java
com.jeffpalm.android.tmz.model.TMZTestUtil.java
com.jeffpalm.android.tmz.model.TMZTest.java
com.jeffpalm.android.tmz.model.TMZWrapperTest.java
com.jeffpalm.android.tmz.model.TMZWrapper.java
com.jeffpalm.android.tmz.model.TMZ.java
com.jeffpalm.android.util.Asserts.java
com.jeffpalm.android.util.ExpandableValueTest.java
com.jeffpalm.android.util.ExpandableValue.java
com.jeffpalm.android.util.ShiftSetTest.java
com.jeffpalm.android.util.ShiftSet.java
com.jeffpalm.android.util.TMZUrlFinderTest.java
com.jeffpalm.android.util.UtilTest.java
com.jeffpalm.android.util.Util.java
com.jeffpalm.android.util.urls.DatabaseHandler.java
com.jeffpalm.android.util.urls.DatabaseHelper.java
com.jeffpalm.android.util.urls.StringInputStream.java
com.jeffpalm.android.util.urls.URLCache.java
com.jeffpalm.android.util.urls.WriteToDatabaseOnCloseInputStream.java