Advertisement
Guest User

Untitled

a guest
Jun 15th, 2010
1,623
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.02 KB | None | 0 0
  1. package com.commonsware.android.vidtry;
  2.  
  3. import android.app.Activity;
  4. import android.media.AudioManager;
  5. import android.media.MediaPlayer;
  6. import android.media.MediaPlayer.OnCompletionListener;
  7. import android.os.AsyncTask;
  8. import android.os.Bundle;
  9. import android.os.SystemClock;
  10. import android.util.Log;
  11. import android.view.KeyEvent;
  12. import android.view.MotionEvent;
  13. import android.view.SurfaceHolder;
  14. import android.view.View;
  15. import android.widget.Button;
  16. import android.widget.ImageButton;
  17. import android.widget.ProgressBar;
  18.  
  19. public class Player extends Activity implements OnCompletionListener,
  20.         MediaPlayer.OnPreparedListener, SurfaceHolder.Callback {
  21.  
  22.     private static String TAG = "VideoPlayer";
  23.     private int width=0;
  24.     private int height=0;
  25.     private MediaPlayer player;
  26.     private TappableSurfaceView surface;
  27.     private SurfaceHolder holder;  
  28.     private View bottomPanel=null;
  29.     private long lastActionTime=0L;
  30.     private boolean isPaused=false;
  31.     private Button go=null;
  32.     private ProgressBar progressBar =null;
  33.     private ImageButton btnVideoPause =null;
  34.     private ImageButton btnVideoStop =null;
  35.  
  36.     public void onCreate(Bundle icicle) {
  37.         super.onCreate(icicle);
  38.            
  39.         setContentView(R.layout.main);
  40.        
  41.         surface=(TappableSurfaceView)findViewById(R.id.surface);
  42.         surface.addTapListener(onTap);
  43.         holder=surface.getHolder();
  44.         holder.addCallback(this);
  45.         holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
  46.  
  47.         bottomPanel=findViewById(R.id.bottom_panel);
  48.         progressBar =(ProgressBar)findViewById(R.id.timeline);
  49.         btnVideoPause =(ImageButton)findViewById(R.id.btnVideoPause);
  50.         btnVideoPause.setOnClickListener(onVidCtrlClick);
  51.         btnVideoStop =(ImageButton)findViewById(R.id.btnVideoStop);
  52.         btnVideoStop.setOnClickListener(onVidCtrlClick);
  53.     }
  54.    
  55.     @Override
  56.     public void onStart() {
  57.         super.onStart();
  58.         playVideo("/sdcard/myapp/category/1/video_agkkr6me.mp4");
  59.         clearPanels(true);
  60.     }
  61.  
  62.     private void playVideo(String url) {
  63.         try {
  64.             btnVideoPause.setEnabled(false);
  65.             if (player==null) {
  66.                 player=new MediaPlayer();
  67.                 player.setScreenOnWhilePlaying(true);
  68.             }
  69.             else {
  70.                 player.stop();
  71.                 player.reset();
  72.             }
  73.             url = "/sdcard/myapp/main/videos/main.mp4";  // <--- just for test purposes hardcoded here now    
  74.             player.setDataSource(url);
  75.             player.setDisplay(holder);
  76.             player.setAudioStreamType(AudioManager.STREAM_MUSIC);
  77.             player.setOnCompletionListener(this);
  78.             player.setOnPreparedListener(this);
  79.  
  80.             player.setOnSeekCompleteListener(new MediaPlayer.OnSeekCompleteListener() {
  81.                 public void onSeekComplete(MediaPlayer mediaPlayer) {
  82.                     Log.d("APP", "current pos... "+ player.getCurrentPosition() );
  83.                     player.start();          // <------------------ start video on seek completed
  84.                     player.setOnSeekCompleteListener(null);
  85.                 }
  86.             });            
  87.             player.prepareAsync();
  88.         }
  89.         catch (Throwable t) {
  90.             Log.e(TAG, "Exception in btnVideoPause prep", t);
  91.         }
  92.     }
  93.  
  94.     public void onPrepared(MediaPlayer mediaplayer) {
  95.         width=player.getVideoWidth();
  96.         height=player.getVideoHeight();
  97.         if (width!=0 && height!=0) {
  98.             holder.setFixedSize(width, height);
  99.             progressBar.setProgress(0);
  100.             progressBar.setMax(player.getDuration());
  101.             player.seekTo(16867);                   // <------------------ seeking to position
  102.         }          
  103.         btnVideoPause.setEnabled(true);
  104.     }
  105.  
  106.  
  107.     @Override
  108.     protected void onResume() {
  109.         super.onResume();
  110.  
  111.         isPaused=false;
  112.         surface.postDelayed(onEverySecond, 1000);
  113.     }
  114.  
  115.     @Override
  116.     protected void onPause() {
  117.         super.onPause();
  118.         isPaused=true;
  119.     }
  120.  
  121.     @Override
  122.     protected void onDestroy() {
  123.         super.onDestroy();
  124.         if (player!=null) {
  125.             player.release();
  126.             player=null;
  127.         }
  128.         surface.removeTapListener(onTap);
  129.     }
  130.  
  131.  
  132.     private void clearPanels(boolean both) {
  133.         lastActionTime=0;
  134.         bottomPanel.setVisibility(View.GONE);
  135.     }
  136.  
  137.  
  138.     @Override
  139.     public boolean onKeyDown(int keyCode, KeyEvent event) {
  140.         lastActionTime=SystemClock.elapsedRealtime();
  141.  
  142.         if (keyCode==KeyEvent.KEYCODE_BACK &&
  143.                  bottomPanel.getVisibility()==View.VISIBLE) {
  144.             clearPanels(true);
  145.  
  146.             return(true);
  147.         }
  148.  
  149.         return(super.onKeyDown(keyCode, event));
  150.     }
  151.  
  152.     public void onCompletion(MediaPlayer arg0) {
  153.         btnVideoPause.setEnabled(false);
  154.     }
  155.  
  156.     private TappableSurfaceView.TapListener onTap=
  157.         new TappableSurfaceView.TapListener() {
  158.         public void onTap(MotionEvent event) {
  159.             lastActionTime=SystemClock.elapsedRealtime();
  160.             bottomPanel.setVisibility(View.VISIBLE);
  161.         }
  162.     };
  163.    
  164.     private Runnable onEverySecond=new Runnable() {
  165.         public void run() {
  166.             if (lastActionTime>0 &&
  167.                     SystemClock.elapsedRealtime()-lastActionTime>3000) {
  168.                 clearPanels(false);
  169.             }
  170.             if (player!=null) {
  171.                 progressBar.setProgress(player.getCurrentPosition());
  172.             }
  173.             if (!isPaused) {
  174.                 surface.postDelayed(onEverySecond, 1000);
  175.             }
  176.         }
  177.     }; 
  178.    
  179.     private View.OnClickListener onVidCtrlClick = new View.OnClickListener() {
  180.         public void onClick(View v) {
  181.             lastActionTime = SystemClock.elapsedRealtime();
  182.  
  183.             switch(v.getId()) {
  184.                 case R.id.btnVideoPause:
  185.                     Log.d(TAG,"onVidCtrlClick btnVideoPause" );
  186.                     if (player!=null) {
  187.                         if (player.isPlaying()) {
  188.                             btnVideoPause.setImageResource(R.drawable.icon_media_player_play);
  189.                             player.pause();
  190.                         }
  191.                         else {
  192.                             btnVideoPause.setImageResource(R.drawable.icon_media_player_pause);
  193.                             player.start();
  194.                         }
  195.                     }
  196.                     break;
  197.                 case R.id.btnVideoStop:
  198.                     Log.d(TAG,"onVidCtrlClick btnVideoPlay" );
  199.                     btnVideoPause.setImageResource(R.drawable.icon_media_player_play);
  200. //                    player.pause();
  201.                     player.stop();;
  202.                     break;
  203.             }
  204.  
  205.         }
  206.     };
  207.  
  208.     public void surfaceChanged(SurfaceHolder surfaceholder, int i, int j, int k) {}
  209.     public void surfaceDestroyed(SurfaceHolder surfaceholder) {}
  210.     public void surfaceCreated(SurfaceHolder holder) {}
  211.  
  212. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement