WebStream

Jwplayer android java

May 12th, 2015
330
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.45 KB | None | 0 0
  1. package com.longtailvideo.jwplayer;
  2.  
  3. import android.content.Context;
  4. import android.content.res.TypedArray;
  5. import android.util.AttributeSet;
  6. import android.widget.FrameLayout;
  7.  
  8. /**
  9.  * The widget containing the JW Player.
  10.  *
  11.  * @author tom
  12.  */
  13. public class JWPlayerView extends FrameLayout {
  14.     // The contained JW Player
  15.     private JWPlayer mJWPlayer;
  16.  
  17.     // The last known position of the currently playing media
  18.     // If unknown, equal to -1
  19.     private int mPosition = -1;
  20.     // The last known duration of the currently playing media
  21.     // If unknown, equal to -1
  22.     private int mDuration = -1;
  23.  
  24.     // The listener for the onTime event
  25.     private JWPlayer.OnTimeListener mOnTimeListener;
  26.  
  27.     // The listener for the onSeek event
  28.     private JWPlayer.OnSeekListener mOnSeekListener;
  29.  
  30.     // The listener for the onIdle event
  31.     private JWPlayer.OnIdleListener mOnIdleListener;
  32.  
  33.     /**
  34.      * @param context
  35.      *            The view context.
  36.      */
  37.     public JWPlayerView(Context context) {
  38.         super(context);
  39.         // Use the default value for controls.
  40.         setupJWPlayerView(JWPlayer.DEFAULT_ENABLE_CONTROLS);
  41.     }
  42.  
  43.     /**
  44.      * @param context
  45.      *            The view context.
  46.      * @param attrs
  47.      *            The attributes to the view.
  48.      */
  49.     public JWPlayerView(Context context, AttributeSet attrs) {
  50.         super(context, attrs);
  51.         TypedArray a = context.obtainStyledAttributes(attrs,
  52.                 R.styleable.JWPlayerView);
  53.         setupJWPlayerView(a.getBoolean(R.styleable.JWPlayerView_controls, true));
  54.         String file = a.getString(R.styleable.JWPlayerView_file);
  55.         if (file != null && !"".equals(file)) {
  56.             load(file);
  57.         }
  58.         a.recycle();
  59.     }
  60.  
  61.     /**
  62.      * @param controls
  63.      *            Whether controls should be enabled in the player.
  64.      */
  65.     private void setupJWPlayerView(boolean controls) {
  66.         // Create the player
  67.         mJWPlayer = new JWPlayer(getContext(), controls);
  68.  
  69.         // Add the actual view as a child
  70.         addView(mJWPlayer.getView(),
  71.                 android.view.ViewGroup.LayoutParams.MATCH_PARENT,
  72.                 android.view.ViewGroup.LayoutParams.MATCH_PARENT);
  73.  
  74.         // Event listeners
  75.         mJWPlayer.setOnTimeListener(new JWPlayer.OnTimeListener() {
  76.             @Override
  77.             public void onTime(int position, int duration) {
  78.                 mPosition = position;
  79.                 mDuration = duration;
  80.                 if (mOnTimeListener != null) {
  81.                     mOnTimeListener.onTime(position, duration);
  82.                 }
  83.             }
  84.         });
  85.  
  86.         mJWPlayer.setOnSeekListener(new JWPlayer.OnSeekListener() {
  87.             @Override
  88.             public void onSeek(int position, int offset) {
  89.                 mPosition = position;
  90.                 if (mOnSeekListener != null) {
  91.                     mOnSeekListener.onSeek(position, offset);
  92.                 }
  93.             }
  94.         });
  95.  
  96.         mJWPlayer.setOnIdleListener(new JWPlayer.OnIdleListener() {
  97.             @Override
  98.             public void onIdle() {
  99.                 // Reset the position
  100.                 mPosition = -1;
  101.                 if (mOnIdleListener != null) {
  102.                     mOnIdleListener.onIdle();
  103.                 }
  104.             }
  105.         });
  106.     }
  107.  
  108.     //
  109.     // Playlist API
  110.     //
  111.  
  112.     /**
  113.      * Load media from the given URL.
  114.      *
  115.      * @param url
  116.      *            The URL pointing toward media of a playable type.
  117.      * @return Whether the operation has completed successfully.
  118.      */
  119.     public boolean load(String url) {
  120.         mPosition = -1;
  121.         mDuration = -1;
  122.         return mJWPlayer.load(url);
  123.     }
  124.  
  125.     /**
  126.      * @param listener
  127.      *            The listener to the onComplete event.
  128.      */
  129.     public void setOnCompleteListener(JWPlayer.OnCompleteListener listener) {
  130.         mJWPlayer.setOnCompleteListener(listener);
  131.     }
  132.  
  133.     //
  134.     // Playback API
  135.     //
  136.  
  137.     /**
  138.      * @return The current state of the player.
  139.      */
  140.     public JWPlayer.PlayerState getState() {
  141.         return mJWPlayer.getState();
  142.     }
  143.  
  144.     /**
  145.      * Toggle playing state of a video. If playing, pauses. If paused, resumes.
  146.      * If idle, starts.
  147.      *
  148.      * @return whether the operation was successful.
  149.      */
  150.     public boolean play() {
  151.         return mJWPlayer.play();
  152.     }
  153.  
  154.     /**
  155.      * Start or suspend playback.
  156.      *
  157.      * @param state
  158.      *            If true, start playback. If false, pause.
  159.      * @return whether the operation was successful.
  160.      */
  161.     public boolean play(boolean state) {
  162.         return mJWPlayer.play(state);
  163.     }
  164.  
  165.     /**
  166.      * Toggle playing state of a video. If playing, pauses. If paused, resumes.
  167.      * If idle, starts.
  168.      *
  169.      * @return whether the operation was successful.
  170.      */
  171.     public boolean pause() {
  172.         return mJWPlayer.pause();
  173.     }
  174.  
  175.     /**
  176.      * Suspend or resume playback.
  177.      *
  178.      * @param state
  179.      *            If true, pause playback. If false, resume.
  180.      * @return whether the operation was successful.
  181.      */
  182.     public boolean pause(boolean state) {
  183.         return mJWPlayer.pause(state);
  184.     }
  185.  
  186.     /**
  187.      * Stop the currently playing media.
  188.      *
  189.      * @return Whether the player was stopped.
  190.      */
  191.     public boolean stop() {
  192.         return mJWPlayer.stop();
  193.     }
  194.  
  195.     /**
  196.      * @param listener
  197.      *            The listener for the onPlay event.
  198.      */
  199.     public void setOnPlayListener(JWPlayer.OnPlayListener listener) {
  200.         mJWPlayer.setOnPlayListener(listener);
  201.     }
  202.  
  203.     /**
  204.      * @param listener
  205.      *            The listener for the onPause event.
  206.      */
  207.     public void setOnPauseListener(JWPlayer.OnPauseListener listener) {
  208.         mJWPlayer.setOnPauseListener(listener);
  209.     }
  210.  
  211.     /**
  212.      * @param listener
  213.      *            The listener for the onBuffer event.
  214.      */
  215.     public void setOnBufferListener(JWPlayer.OnBufferListener listener) {
  216.         mJWPlayer.setOnBufferListener(listener);
  217.     }
  218.  
  219.     /**
  220.      * @param listener
  221.      *            The listener for the onIdle event.
  222.      */
  223.     public void setOnIdleListener(JWPlayer.OnIdleListener listener) {
  224.         mOnIdleListener = listener;
  225.     }
  226.  
  227.     //
  228.     // Seek API
  229.     //
  230.  
  231.     /**
  232.      * @return The current playback position in milliseconds, or -1 if not
  233.      *         available.
  234.      */
  235.     public int getPosition() {
  236.         return mPosition;
  237.     }
  238.  
  239.     /**
  240.      * @return The current media duration in milliseconds, or -1 if not
  241.      *         available.
  242.      */
  243.     public int getDuration() {
  244.         return mDuration;
  245.     }
  246.  
  247.     /**
  248.      * Seek the currently playing media to the specified position.
  249.      *
  250.      * @param position
  251.      *            The position to seek to in milliseconds from the beginning.
  252.      * @return Whether the operation has completed successfully.
  253.      */
  254.     public boolean seek(int position) {
  255.         boolean success = mJWPlayer.seek(position);
  256.         if (success) {
  257.             mPosition = position;
  258.         }
  259.         return success;
  260.     }
  261.  
  262.     /**
  263.      * @param listener
  264.      *            The listener for the onSeek event.
  265.      */
  266.     public void setOnSeekListener(JWPlayer.OnSeekListener listener) {
  267.         mOnSeekListener = listener;
  268.     }
  269.  
  270.     /**
  271.      * @param listener
  272.      *            The listener for the onTime event.
  273.      */
  274.     public void setOnTimeListener(JWPlayer.OnTimeListener listener) {
  275.         mOnTimeListener = listener;
  276.     }
  277.  
  278.     //
  279.     // Error API
  280.     //
  281.  
  282.     /**
  283.      * @param listener
  284.      *            The listener to the onError event.
  285.      */
  286.     public void setOnErrorListener(JWPlayer.OnErrorListener listener) {
  287.         mJWPlayer.setOnErrorListener(listener);
  288.     }
  289.  
  290.     //
  291.     // Resize API
  292.     //
  293.  
  294.     /**
  295.      * @return Whether the video player is running in full screen mode.
  296.      */
  297.     public boolean getFullscreen() {
  298.         return mJWPlayer.getFullscreen();
  299.     }
  300.  
  301.     /**
  302.      * @param state
  303.      *            Whether the video player should run in full screen mode.
  304.      */
  305.     public void setFullscreen(boolean state) {
  306.         mJWPlayer.setFullscreen(state);
  307.     }
  308.  
  309.     /**
  310.      * @param listener
  311.      *            The listener for the onFullscreen event.
  312.      */
  313.     public void setOnFullscreenListener(JWPlayer.OnFullscreenListener listener) {
  314.         mJWPlayer.setOnFullscreenListener(listener);
  315.     }
  316.  
  317.     //
  318.     // Quality API
  319.     //
  320.  
  321.     /**
  322.      * @return The array of available quality levels.
  323.      */
  324.     public JWPlayer.QualityLevel[] getQualityLevels() {
  325.         return mJWPlayer.getQualityLevels();
  326.     }
  327.  
  328.     /**
  329.      * @return The index of the current quality level.
  330.      */
  331.     public int getCurrentQuality() {
  332.         return mJWPlayer.getCurrentQuality();
  333.     }
  334.  
  335.     /**
  336.      * @param index
  337.      *            The index of the desired quality level.
  338.      */
  339.     public void setCurrentQuality(int index) {
  340.         mJWPlayer.setCurrentQuality(index);
  341.     }
  342.  
  343.     /**
  344.      * @param listener
  345.      *            The listener for the qualityLevels event.
  346.      */
  347.     public void setOnQualityLevelsListener(
  348.             JWPlayer.OnQualityLevelsListener listener) {
  349.         mJWPlayer.setOnQualityLevelsListener(listener);
  350.     }
  351.  
  352.     /**
  353.      * @param listener
  354.      *            The listener for the qualityChange event.
  355.      */
  356.     public void setOnQualityChangeListener(
  357.             JWPlayer.OnQualityChangeListener listener) {
  358.         mJWPlayer.setOnQualityChangeListener(listener);
  359.     }
  360.  
  361.     //
  362.     // Android API
  363.     //
  364.  
  365.     /**
  366.      * Release the resources that are in use by the player.
  367.      */
  368.     public void release() {
  369.         mJWPlayer.release();
  370.     }
  371. }
Advertisement
Add Comment
Please, Sign In to add comment