Home | History | Annotate | Download | only in statusbartest
      1 /*
      2  * Copyright (C) 2007 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package com.android.statusbartest;
     18 
     19 import android.app.ListActivity;
     20 import android.app.Notification;
     21 import android.app.NotificationManager;
     22 import android.widget.ArrayAdapter;
     23 import android.view.View;
     24 import android.widget.ListView;
     25 import android.content.Intent;
     26 import android.app.PendingIntent;
     27 import android.app.Notification;
     28 import android.app.NotificationManager;
     29 import android.app.StatusBarManager;
     30 import android.content.Context;
     31 import android.util.AttributeSet;
     32 import android.os.Vibrator;
     33 import android.os.Bundle;
     34 import android.os.Handler;
     35 import android.util.Log;
     36 import android.net.Uri;
     37 import android.os.SystemClock;
     38 import android.widget.RemoteViews;
     39 import android.widget.Toast;
     40 import android.os.PowerManager;
     41 import android.view.View;
     42 import android.view.Window;
     43 import android.view.WindowManager;
     44 
     45 public class StatusBarTest extends TestActivity
     46 {
     47     private final static String TAG = "StatusBarTest";
     48     StatusBarManager mStatusBarManager;
     49     NotificationManager mNotificationManager;
     50     Handler mHandler = new Handler();
     51     int mUiVisibility = 0;
     52     View mListView;
     53 
     54     View.OnSystemUiVisibilityChangeListener mOnSystemUiVisibilityChangeListener
     55             = new View.OnSystemUiVisibilityChangeListener() {
     56         public void onSystemUiVisibilityChange(int visibility) {
     57             Log.d(TAG, "onSystemUiVisibilityChange visibility=" + visibility);
     58         }
     59     };
     60 
     61     @Override
     62     protected String tag() {
     63         return TAG;
     64     }
     65 
     66     @Override
     67     protected Test[] tests() {
     68         mStatusBarManager = (StatusBarManager)getSystemService(STATUS_BAR_SERVICE);
     69         mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
     70 
     71         return mTests;
     72     }
     73 
     74     @Override
     75     public void onResume() {
     76         super.onResume();
     77 
     78         mListView = findViewById(android.R.id.list);
     79         mListView.setOnSystemUiVisibilityChangeListener(mOnSystemUiVisibilityChangeListener);
     80     }
     81 
     82     private Test[] mTests = new Test[] {
     83         new Test("toggle LOW_PROFILE (lights out)") {
     84             public void run() {
     85                 if (0 != (mUiVisibility & View.SYSTEM_UI_FLAG_LOW_PROFILE)) {
     86                     mUiVisibility &= ~View.SYSTEM_UI_FLAG_LOW_PROFILE;
     87                 } else {
     88                     mUiVisibility |= View.SYSTEM_UI_FLAG_LOW_PROFILE;
     89                 }
     90                 mListView.setSystemUiVisibility(mUiVisibility);
     91             }
     92         },
     93         new Test("toggle HIDE_NAVIGATION") {
     94             public void run() {
     95                 if (0 != (mUiVisibility & View.SYSTEM_UI_FLAG_HIDE_NAVIGATION)) {
     96                     mUiVisibility &= ~View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
     97                 } else {
     98                     mUiVisibility |= View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
     99                 }
    100                 mListView.setSystemUiVisibility(mUiVisibility);
    101 
    102             }
    103         },
    104         new Test("clear SYSTEM_UI_FLAGs") {
    105             public void run() {
    106                 mUiVisibility = 0;
    107                 mListView.setSystemUiVisibility(mUiVisibility);
    108             }
    109         },
    110 //        new Test("no setSystemUiVisibility") {
    111 //            public void run() {
    112 //                View v = findViewById(android.R.id.list);
    113 //                v.setOnSystemUiVisibilityChangeListener(null);
    114 //                v.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
    115 //            }
    116 //        },
    117         new Test("systemUiVisibility: STATUS_BAR_DISABLE_HOME") {
    118             public void run() {
    119                 mListView.setSystemUiVisibility(View.STATUS_BAR_DISABLE_HOME);
    120             }
    121         },
    122         new Test("Double Remove") {
    123             public void run() {
    124                 Log.d(TAG, "set 0");
    125                 mStatusBarManager.setIcon("speakerphone", R.drawable.stat_sys_phone, 0, null);
    126                 Log.d(TAG, "remove 1");
    127                 mStatusBarManager.removeIcon("tty");
    128 
    129                 SystemClock.sleep(1000);
    130 
    131                 Log.d(TAG, "set 1");
    132                 mStatusBarManager.setIcon("tty", R.drawable.stat_sys_phone, 0, null);
    133                 if (false) {
    134                     Log.d(TAG, "set 2");
    135                     mStatusBarManager.setIcon("tty", R.drawable.stat_sys_phone, 0, null);
    136                 }
    137                 Log.d(TAG, "remove 2");
    138                 mStatusBarManager.removeIcon("tty");
    139                 Log.d(TAG, "set 3");
    140                 mStatusBarManager.setIcon("speakerphone", R.drawable.stat_sys_phone, 0, null);
    141             }
    142         },
    143         new Test("Hide (FLAG_FULLSCREEN)") {
    144             public void run() {
    145                 Window win = getWindow();
    146                 win.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
    147                         WindowManager.LayoutParams.FLAG_FULLSCREEN);
    148                 Log.d(TAG, "flags=" + Integer.toHexString(win.getAttributes().flags));
    149             }
    150         },
    151         new Test("Show (~FLAG_FULLSCREEN)") {
    152             public void run() {
    153                 Window win = getWindow();
    154                 win.setFlags(0, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    155                 Log.d(TAG, "flags=" + Integer.toHexString(win.getAttributes().flags));
    156             }
    157         },
    158         new Test("Immersive: Enter") {
    159             public void run() {
    160                 setImmersive(true);
    161             }
    162         },
    163         new Test("Immersive: Exit") {
    164             public void run() {
    165                 setImmersive(false);
    166             }
    167         },
    168         new Test("Priority notification") {
    169             public void run() {
    170                 Notification not = new Notification();
    171                 not.icon = R.drawable.stat_sys_phone;
    172                 not.when = System.currentTimeMillis()-(1000*60*60*24);
    173                 not.setLatestEventInfo(StatusBarTest.this,
    174                                 "Incoming call",
    175                                 "from: Imperious Leader",
    176                                 null
    177                                 );
    178                 not.flags |= Notification.FLAG_HIGH_PRIORITY;
    179                 Intent fullScreenIntent = new Intent(StatusBarTest.this, TestAlertActivity.class);
    180                 int id = (int)System.currentTimeMillis(); // XXX HAX
    181                 fullScreenIntent.putExtra("id", id);
    182                 not.fullScreenIntent = PendingIntent.getActivity(
    183                     StatusBarTest.this,
    184                     0,
    185                     fullScreenIntent,
    186                     PendingIntent.FLAG_CANCEL_CURRENT);
    187                 // if you tap on it you should get the original alert box
    188                 not.contentIntent = not.fullScreenIntent;
    189                 mNotificationManager.notify(id, not);
    190             }
    191         },
    192         new Test("Disable Alerts") {
    193             public void run() {
    194                 mStatusBarManager.disable(StatusBarManager.DISABLE_NOTIFICATION_ALERTS);
    195             }
    196         },
    197         new Test("Disable Ticker") {
    198             public void run() {
    199                 mStatusBarManager.disable(StatusBarManager.DISABLE_NOTIFICATION_TICKER);
    200             }
    201         },
    202         new Test("Disable Expand in 3 sec.") {
    203             public void run() {
    204                 mHandler.postDelayed(new Runnable() {
    205                         public void run() {
    206                             mStatusBarManager.disable(StatusBarManager.DISABLE_EXPAND);
    207                         }
    208                     }, 3000);
    209             }
    210         },
    211         new Test("Disable Notifications in 3 sec.") {
    212             public void run() {
    213                 mHandler.postDelayed(new Runnable() {
    214                         public void run() {
    215                             mStatusBarManager.disable(StatusBarManager.DISABLE_NOTIFICATION_ICONS);
    216                         }
    217                     }, 3000);
    218             }
    219         },
    220         new Test("Disable Expand + Notifications in 3 sec.") {
    221             public void run() {
    222                 mHandler.postDelayed(new Runnable() {
    223                         public void run() {
    224                             mStatusBarManager.disable(StatusBarManager.DISABLE_EXPAND
    225                                     | StatusBarManager.DISABLE_NOTIFICATION_ICONS);
    226                         }
    227                     }, 3000);
    228             }
    229         },
    230         new Test("Disable Home (StatusBarManager)") {
    231             public void run() {
    232                 mStatusBarManager.disable(StatusBarManager.DISABLE_HOME);
    233             }
    234         },
    235         new Test("Disable Back (StatusBarManager)") {
    236             public void run() {
    237                 mStatusBarManager.disable(StatusBarManager.DISABLE_BACK);
    238             }
    239         },
    240         new Test("Disable Recent (StatusBarManager)") {
    241             public void run() {
    242                 mStatusBarManager.disable(StatusBarManager.DISABLE_RECENT);
    243             }
    244         },
    245         new Test("Disable Clock") {
    246             public void run() {
    247                 mStatusBarManager.disable(StatusBarManager.DISABLE_CLOCK);
    248             }
    249         },
    250         new Test("Disable System Info") {
    251             public void run() {
    252                 mStatusBarManager.disable(StatusBarManager.DISABLE_SYSTEM_INFO);
    253             }
    254         },
    255         new Test("Disable everything in 3 sec") {
    256             public void run() {
    257                 mHandler.postDelayed(new Runnable() {
    258                         public void run() {
    259                             mStatusBarManager.disable(~StatusBarManager.DISABLE_NONE);
    260                         }
    261                     }, 3000);
    262             }
    263         },
    264         new Test("Enable everything") {
    265             public void run() {
    266                 mStatusBarManager.disable(StatusBarManager.DISABLE_NONE);
    267             }
    268         },
    269         new Test("Enable everything in 3 sec.") {
    270             public void run() {
    271                 mHandler.postDelayed(new Runnable() {
    272                         public void run() {
    273                             mStatusBarManager.disable(0);
    274                         }
    275                     }, 3000);
    276             }
    277         },
    278         new Test("Notify in 3 sec.") {
    279             public void run() {
    280                 mHandler.postDelayed(new Runnable() {
    281                         public void run() {
    282                             mNotificationManager.notify(1,
    283                                     new Notification(
    284                                             R.drawable.ic_statusbar_missedcall,
    285                                             "tick tick tick",
    286                                             System.currentTimeMillis()-(1000*60*60*24)
    287                                             ));
    288                         }
    289                     }, 3000);
    290             }
    291         },
    292         new Test("Cancel Notification in 3 sec.") {
    293             public void run() {
    294                 mHandler.postDelayed(new Runnable() {
    295                         public void run() {
    296                             mNotificationManager.cancel(1);
    297                         }
    298                     }, 3000);
    299             }
    300         },
    301         new Test("Expand") {
    302             public void run() {
    303                 mStatusBarManager.expand();
    304             }
    305         },
    306         new Test("Expand in 3 sec.") {
    307             public void run() {
    308                 mHandler.postDelayed(new Runnable() {
    309                         public void run() {
    310                             mStatusBarManager.expand();
    311                         }
    312                     }, 3000);
    313             }
    314         },
    315         new Test("Collapse in 3 sec.") {
    316             public void run() {
    317                 mHandler.postDelayed(new Runnable() {
    318                         public void run() {
    319                             mStatusBarManager.collapse();
    320                         }
    321                     }, 3000);
    322             }
    323         },
    324         new Test("More icons") {
    325             public void run() {
    326                 for (String slot: new String[] {
    327                             "sync_failing",
    328                             "gps",
    329                             "bluetooth",
    330                             "tty",
    331                             "speakerphone",
    332                             "mute",
    333                             "wifi",
    334                             "alarm_clock",
    335                             "secure",
    336                         }) {
    337                     mStatusBarManager.setIconVisibility(slot, true);
    338                 }
    339             }
    340         },
    341     };
    342 }
    343