Home | History | Annotate | Download | only in kbars
      1 package js.kbars;
      2 
      3 import android.content.Context;
      4 import android.media.MediaPlayer;
      5 import android.media.MediaPlayer.OnPreparedListener;
      6 import android.net.Uri;
      7 import android.util.Log;
      8 import android.view.View;
      9 import android.view.View.OnClickListener;
     10 import android.view.View.OnSystemUiVisibilityChangeListener;
     11 import android.widget.Button;
     12 import android.widget.FrameLayout;
     13 import android.widget.FrameLayout.LayoutParams;
     14 import android.widget.VideoView;
     15 
     16 public final class MediaModeToggleButton extends Button {
     17     private static final int MEDIA_FLAGS = 1798;
     18     private final FrameLayout mFrame;
     19     private boolean mMediaMode;
     20     private VideoView mVideo;
     21 
     22     public MediaModeToggleButton(Context context, FrameLayout frame) {
     23         super(context);
     24         this.mFrame = frame;
     25         setText("Enter media mode");
     26         setOnClickListener(new OnClickListener() {
     27             public void onClick(View v) {
     28                 MediaModeToggleButton.this.setSystemUiVisibility(MediaModeToggleButton.MEDIA_FLAGS);
     29             }
     30         });
     31         setOnSystemUiVisibilityChangeListener(new OnSystemUiVisibilityChangeListener() {
     32             public void onSystemUiVisibilityChange(int vis) {
     33                 MediaModeToggleButton.this.updateSysUi(vis);
     34             }
     35         });
     36         initVideo();
     37         updateSysUi(0);
     38     }
     39 
     40     private void initVideo() {
     41         this.mVideo = new VideoView(getContext());
     42         this.mVideo.setVisibility(8);
     43         LayoutParams videoLP = new LayoutParams(-1, -1);
     44         videoLP.gravity = 17;
     45         this.mFrame.addView(this.mVideo, videoLP);
     46         this.mVideo.setOnPreparedListener(new OnPreparedListener() {
     47             public void onPrepared(MediaPlayer mp) {
     48                 mp.setLooping(true);
     49             }
     50         });
     51         this.mVideo.setVideoURI(Uri.parse("android.resource://" + getContext().getPackageName() + "/" + R.raw.clipcanvas));
     52         this.mVideo.setBackgroundColor(0);
     53     }
     54 
     55     private void updateSysUi(int vis) {
     56         boolean requested;
     57         boolean hideStatus;
     58         boolean hideNav;
     59         boolean hideSomething;
     60         if (getSystemUiVisibility() == MEDIA_FLAGS) {
     61             requested = true;
     62         } else {
     63             requested = false;
     64         }
     65         if ((vis & 4) != 0) {
     66             hideStatus = true;
     67         } else {
     68             hideStatus = false;
     69         }
     70         if ((vis & 2) != 0) {
     71             hideNav = true;
     72         } else {
     73             hideNav = false;
     74         }
     75         if (hideStatus || hideNav) {
     76             hideSomething = true;
     77         } else {
     78             hideSomething = false;
     79         }
     80         Log.d(KBarsActivity.TAG, String.format("vis change hideStatus=%s hideNav=%s hideSomething=%s mMediaMode=%s", new Object[]{Boolean.valueOf(hideStatus), Boolean.valueOf(hideNav), Boolean.valueOf(hideSomething), Boolean.valueOf(this.mMediaMode)}));
     81         this.mMediaMode = false;
     82         if (requested && hideStatus && hideNav) {
     83             this.mMediaMode = true;
     84         } else {
     85             setSystemUiVisibility(KBarsActivity.BASE_FLAGS);
     86         }
     87         if (this.mMediaMode) {
     88             this.mVideo.setVisibility(0);
     89             this.mVideo.start();
     90             return;
     91         }
     92         this.mVideo.setVisibility(8);
     93         this.mVideo.stopPlayback();
     94     }
     95 }
     96