ppamorim

Untitled

Jul 8th, 2014
295
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 11.72 KB | None | 0 0
  1. public class DetailCameraFragment extends ChildFragment implements
  2.         SurfaceHolder.Callback,
  3.         MediaController.MediaPlayerControl,
  4.         MapFragment.ControlLock {
  5.  
  6.     private CustomScrollView mView;
  7.     private Uri mUrlVideo;
  8.  
  9.     private TabsPagerAdapter adapter;
  10.     private SlidingTabLayout mSlidingTabLayout;
  11.     private ViewPager mViewPager;
  12.  
  13.     //Video Controls
  14.     private SurfaceView mVideoView;
  15.     private MediaPlayer player;
  16.     private MediaController controller;
  17.  
  18.     private ImageButton mPlay;
  19.     private TextView mErrorView;
  20.  
  21.     private RelativeLayout mPlaceHolder;
  22.     private ProgressBar mContainerLoader;
  23.  
  24.     private ArrayList<Fragment> arrayFragment = new ArrayList<Fragment>();
  25.     private ArrayList<String> arrayTagFragment = new ArrayList<String>();
  26.  
  27.     private static class LazyHolder {
  28.         private static final DetailCameraFragment detailCameraFragment = new DetailCameraFragment();
  29.     }
  30.  
  31.     public static DetailCameraFragment getInstance() {
  32.         return LazyHolder.detailCameraFragment;
  33.     }
  34.  
  35.     @Override
  36.     public void onCreate(Bundle savedInstanceState) {
  37.         super.onCreate(savedInstanceState);
  38.         mUrlVideo = Uri.parse("http://rtmp.0be3.upx.net.br:1935/0be3_610/0be3_610.stream/playlist.m3u8");
  39.     }
  40.  
  41.     @Override
  42.     public CustomScrollView onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
  43.  
  44.         mView = (CustomScrollView) inflater.inflate(R.layout.fragment_detail_camera, container, false);
  45.  
  46.         if (mView != null) {
  47.  
  48.             mViewPager = (ViewPager) mView.findViewById(R.id.details_viewpager);
  49.             mVideoView = (SurfaceView) mView.findViewById(R.id.video_view);
  50.             mPlaceHolder = (RelativeLayout) mView.findViewById(R.id.video_placeholder);
  51.             mContainerLoader = (ProgressBar) mView.findViewById(R.id.progress_bar);
  52.             mPlay = (ImageButton) mView.findViewById(R.id.play_camera);
  53.             mErrorView = (TextView) mView.findViewById(R.id.error_view);
  54.  
  55.             arrayFragment.add(CommentsFragment.newInstance());
  56.             arrayFragment.add(DescriptionFragment.newInstance());
  57.             arrayFragment.add(MapFragment.newInstance());
  58.  
  59.             arrayTagFragment.add(getString(R.string.comments));
  60.             arrayTagFragment.add(getString(R.string.description));
  61.             arrayTagFragment.add(getString(R.string.map));
  62.  
  63.             mVideoView.requestFocus();
  64.  
  65.             adapter = new TabsPagerAdapter(getActivity().getSupportFragmentManager(), arrayFragment, arrayTagFragment);
  66.             mViewPager.setAdapter(adapter);
  67.  
  68.             mSlidingTabLayout = (SlidingTabLayout) mView.findViewById(R.id.details_sliding_tabs);
  69.             mSlidingTabLayout.setCountDivider(arrayFragment.size());
  70.             mSlidingTabLayout.setCustomTextColor(getResources().getColor(R.color.picton_blue));
  71.             mSlidingTabLayout.setViewPager(mViewPager);
  72.  
  73.             mSlidingTabLayout.setOnPageChangeListener(onPageChangeListener);
  74.             mSlidingTabLayout.setCustomTabColorizer(setCustomTabColor);
  75.  
  76.             mPlaceHolder.setOnClickListener(onPlayClick);
  77.             mVideoView.setOnClickListener(onPauseClick);
  78.  
  79.         }
  80.         return mView;
  81.     }
  82.  
  83.     @Override
  84.     public void onPause() {
  85.         super.onPause();
  86.         player.stop();
  87.         player = null;
  88.         controller = null;
  89.     }
  90.  
  91.     @Override
  92.     public void onResume() {
  93.         super.onResume();
  94.  
  95.         try {
  96.             mPlaceHolder.setVisibility(View.VISIBLE);
  97.             mVideoView.setVisibility(View.GONE);
  98.             mContainerLoader.setVisibility(View.GONE);
  99.  
  100.             mVideoView.getHolder().addCallback(this);
  101.             player = new MediaPlayer();
  102.             controller = new MediaController(getActivity());
  103.  
  104.             controller.setMediaPlayer(DetailCameraFragment.this);
  105.             controller.setAnchorView((RelativeLayout) mView.findViewById(R.id.videoSurfaceContainer));
  106.             controller.show(0);
  107.  
  108.             player.setDataSource(getActivity(), mUrlVideo);
  109.  
  110.         } catch (Exception e) {
  111.             e.printStackTrace();
  112.         }
  113.     }
  114.  
  115.     @Override
  116.     public void onViewStateRestored(Bundle savedInstanceState) {
  117.         super.onViewStateRestored(savedInstanceState);
  118.         if(savedInstanceState != null && player != null) {
  119.             player.pause();
  120.             player.seekTo(savedInstanceState.getInt("video_position", 0));
  121.         }
  122.     }
  123.  
  124.     @Override
  125.     public void onSaveInstanceState(Bundle outState) {
  126.         super.onSaveInstanceState(outState);
  127.     }
  128.  
  129.     @Override
  130.     public void surfaceCreated(SurfaceHolder surfaceHolder) {
  131.         try {
  132.             player.setDisplay(surfaceHolder);
  133.             player.prepareAsync();
  134.         } catch (Exception e) {
  135.             e.printStackTrace();
  136.         }
  137.     }
  138.  
  139.     @Override
  140.     public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i2, int i3) {
  141.  
  142.     }
  143.  
  144.     @Override
  145.     public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
  146.  
  147.     }
  148.  
  149.     @Override
  150.     public void start() {
  151.         player.start();
  152.     }
  153.  
  154.     @Override
  155.     public void pause() {
  156.         player.pause();
  157.     }
  158.  
  159.     @Override
  160.     public int getDuration() {
  161.         return player.getDuration();
  162.     }
  163.  
  164.     @Override
  165.     public int getCurrentPosition() {
  166.         return player.getCurrentPosition();
  167.     }
  168.  
  169.     @Override
  170.     public void seekTo(int position) {
  171.         player.seekTo(position);
  172.     }
  173.  
  174.     @Override
  175.     public boolean isPlaying() {
  176.         return player.isPlaying();
  177.     }
  178.  
  179.     @Override
  180.     public int getBufferPercentage() {
  181.         return 0;
  182.     }
  183.  
  184.     @Override
  185.     public boolean canPause() {
  186.         return false;
  187.     }
  188.  
  189.     @Override
  190.     public boolean canSeekBackward() {
  191.         return false;
  192.     }
  193.  
  194.     @Override
  195.     public boolean canSeekForward() {
  196.         return false;
  197.     }
  198.  
  199.     @Override
  200.     public boolean isFullScreen() {
  201.         return false;
  202.     }
  203.  
  204.     @Override
  205.     public void stopAndSetFullScreen() {
  206.         player.stop();
  207.         Intent intent = new Intent(getActivity(), FullScreenActivity.class);
  208.         intent.putExtra("UrlVideo",mUrlVideo.toString());
  209.         startActivity(intent);
  210.     }
  211.  
  212.     @Override
  213.     public void toggleFullScreen() {
  214.         Intent intent = new Intent(getActivity(), FullScreenActivity.class);
  215.         intent.putExtra("UrlVideo",mUrlVideo.toString());
  216.         startActivity(intent);
  217.     }
  218.  
  219.     @Override
  220.     public void setVolume(float value, float to) {
  221.         player.setVolume(value, to);
  222.     }
  223.  
  224.     private View.OnClickListener onPauseClick = new View.OnClickListener() {
  225.         @Override
  226.         public void onClick(View view) {
  227.             try {
  228.                 if (player.isPlaying()) {
  229.                     player.pause();
  230.                 } else {
  231.                     //player.seekTo(0);
  232.                     player.start();
  233.                 }
  234.             } catch (Exception e) {
  235.                 e.printStackTrace();
  236.             }
  237.         }
  238.     };
  239.  
  240.     private View.OnClickListener onPlayClick = new View.OnClickListener() {
  241.         @Override
  242.         public void onClick(View view) {
  243.  
  244.             try {
  245.  
  246.                 mPlaceHolder.setVisibility(View.GONE);
  247.                 mVideoView.setVisibility(View.VISIBLE);
  248.                 mContainerLoader.setVisibility(View.VISIBLE);
  249.  
  250.                 player.setAudioStreamType(AudioManager.STREAM_MUSIC);
  251.  
  252.                 player.setOnPreparedListener(onPrepared);
  253.                 player.setOnBufferingUpdateListener(onBuffer);
  254.                 player.setOnInfoListener(onInfo);
  255.                 player.setOnErrorListener(onError);
  256.  
  257.                 player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
  258.                     @Override
  259.                     public void onCompletion(MediaPlayer mediaPlayer) {
  260.  
  261.                         if(player != null) {
  262.                             player.seekTo(0);
  263.                             player.start();
  264.                         }
  265.                     }
  266.                 });
  267.  
  268.             } catch (IllegalArgumentException e) {
  269.                 e.printStackTrace();
  270.             } catch (SecurityException e) {
  271.                 e.printStackTrace();
  272.             } catch (IllegalStateException e) {
  273.                 e.printStackTrace();
  274.             }
  275.         }
  276.     };
  277.  
  278.     private MediaPlayer.OnErrorListener onError = new MediaPlayer.OnErrorListener() {
  279.         @Override
  280.         public boolean onError(MediaPlayer mediaPlayer, int info, int extra) {
  281.  
  282.             if(mContainerLoader.getVisibility() == View.VISIBLE) {
  283.                 mContainerLoader.setVisibility(View.GONE);
  284.             }
  285.  
  286.             switch (info) {
  287.                 case MediaPlayer.MEDIA_ERROR_UNKNOWN:
  288.                     mErrorView.setText(getString(R.string.streaming_error));
  289.                     break;
  290.                 case MediaPlayer.MEDIA_ERROR_SERVER_DIED:
  291.                     mErrorView.setText(getString(R.string.streaming_error));
  292.                     break;
  293.             }
  294.  
  295.             mErrorView.setVisibility(View.VISIBLE);
  296.             return false;
  297.         }
  298.     };
  299.  
  300.     private MediaPlayer.OnInfoListener onInfo = new MediaPlayer.OnInfoListener() {
  301.         @Override
  302.         public boolean onInfo(MediaPlayer mediaPlayer, int info, int extra) {
  303.  
  304.             switch (info) {
  305.                 case MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START:
  306.                     mContainerLoader.setVisibility(View.GONE);
  307.                     break;
  308.                 case MediaPlayer.MEDIA_ERROR_TIMED_OUT:
  309.                     break;
  310.                 case MediaPlayer.MEDIA_INFO_BUFFERING_START:
  311.                     mContainerLoader.setVisibility(View.VISIBLE);
  312.                     break;
  313.                 case MediaPlayer.MEDIA_INFO_BUFFERING_END:
  314.                     mContainerLoader.setVisibility(View.GONE);
  315.                     break;
  316.             }
  317.             return false;
  318.         }
  319.     };
  320.  
  321.     private MediaPlayer.OnPreparedListener onPrepared = new MediaPlayer.OnPreparedListener() {
  322.         @Override
  323.         public void onPrepared(MediaPlayer mediaPlayer) {
  324.             player.start();
  325.         }
  326.     };
  327.  
  328.     private MediaPlayer.OnBufferingUpdateListener onBuffer = new MediaPlayer.OnBufferingUpdateListener() {
  329.         @Override
  330.         public void onBufferingUpdate(MediaPlayer mediaPlayer, int position) {
  331.             DebugUtil.log("value: " + position + "mediaplayer: " + mediaPlayer);
  332.             mContainerLoader.setVisibility(View.VISIBLE);
  333.         }
  334.     };
  335.  
  336.     private ViewPager.OnPageChangeListener onPageChangeListener = new ViewPager.OnPageChangeListener() {
  337.         @Override
  338.         public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
  339.  
  340.         }
  341.  
  342.         @Override
  343.         public void onPageSelected(int position) {
  344.  
  345.         }
  346.  
  347.         @Override
  348.         public void onPageScrollStateChanged(int state) {
  349.  
  350.         }
  351.     };
  352.  
  353.     private SlidingTabLayout.TabColorizer setCustomTabColor = new SlidingTabLayout.TabColorizer() {
  354.         @Override
  355.         public int getIndicatorColor(int position) {
  356.             return Color.parseColor(getResources().getString(R.color.bright_gray));
  357.         }
  358.  
  359.         @Override
  360.         public int getDividerColor(int position) {
  361.             return Color.TRANSPARENT;
  362.         }
  363.  
  364.     };
  365.  
  366.     @Override
  367.     public void lock() {
  368.         DebugUtil.log("travou" + mView);
  369.         mView.requestDisallowInterceptTouchEvent(true);
  370.     }
  371.  
  372.     @Override
  373.     public void unlock() {
  374.         DebugUtil.log("destravou" + mView);
  375.         mView.requestDisallowInterceptTouchEvent(false);
  376.     }
  377.  
  378.     public static DetailCameraFragment newInstance() {
  379.         return new DetailCameraFragment();
  380.     }
  381.  
  382. }
Advertisement
Add Comment
Please, Sign In to add comment