• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
MediaModeToggleButton(Context context, FrameLayout frame)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 
initVideo()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 
updateSysUi(int vis)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