StatusBarTest.java revision 1d4d30aebd2c22627131819cabfe95f97def2c83
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
17package com.android.statusbartest;
18
19import android.app.ListActivity;
20import android.app.Notification;
21import android.app.NotificationManager;
22import android.widget.ArrayAdapter;
23import android.view.View;
24import android.widget.ListView;
25import android.content.Intent;
26import android.app.PendingIntent;
27import android.app.Notification;
28import android.app.NotificationManager;
29import android.app.StatusBarManager;
30import android.content.Context;
31import android.util.AttributeSet;
32import android.os.Vibrator;
33import android.os.Bundle;
34import android.os.Handler;
35import android.util.Log;
36import android.net.Uri;
37import android.os.SystemClock;
38import android.widget.RemoteViews;
39import android.widget.Toast;
40import android.os.PowerManager;
41import android.view.View;
42import android.view.Window;
43import android.view.WindowManager;
44
45public class StatusBarTest extends TestActivity
46{
47    private final static String TAG = "StatusBarTest";
48    StatusBarManager mStatusBarManager;
49    NotificationManager mNotificationManager;
50    Handler mHandler = new Handler();
51
52    View.OnSystemUiVisibilityChangeListener mOnSystemUiVisibilityChangeListener
53            = new View.OnSystemUiVisibilityChangeListener() {
54        public void onSystemUiVisibilityChange(int visibility) {
55            Log.d(TAG, "onSystemUiVisibilityChange visibility=" + visibility);
56        }
57    };
58
59    @Override
60    protected String tag() {
61        return TAG;
62    }
63
64    @Override
65    protected Test[] tests() {
66        mStatusBarManager = (StatusBarManager)getSystemService(STATUS_BAR_SERVICE);
67        mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
68
69        return mTests;
70    }
71
72    private Test[] mTests = new Test[] {
73        new Test("DISABLE_NAVIGATION") {
74            public void run() {
75                View v = findViewById(android.R.id.list);
76                v.setSystemUiVisibility(View.STATUS_BAR_DISABLE_NAVIGATION);
77            }
78        },
79        new Test("STATUS_BAR_HIDDEN") {
80            public void run() {
81                View v = findViewById(android.R.id.list);
82                v.setOnSystemUiVisibilityChangeListener(mOnSystemUiVisibilityChangeListener);
83                v.setSystemUiVisibility(View.STATUS_BAR_HIDDEN);
84            }
85        },
86        new Test("STATUS_BAR_VISIBLE") {
87            public void run() {
88                View v = findViewById(android.R.id.list);
89                v.setOnSystemUiVisibilityChangeListener(mOnSystemUiVisibilityChangeListener);
90                v.setSystemUiVisibility(View.STATUS_BAR_VISIBLE);
91            }
92        },
93        new Test("no setSystemUiVisibility") {
94            public void run() {
95                View v = findViewById(android.R.id.list);
96                v.setOnSystemUiVisibilityChangeListener(null);
97                v.setSystemUiVisibility(View.STATUS_BAR_VISIBLE);
98            }
99        },
100        new Test("Double Remove") {
101            public void run() {
102                Log.d(TAG, "set 0");
103                mStatusBarManager.setIcon("speakerphone", R.drawable.stat_sys_phone, 0);
104                Log.d(TAG, "remove 1");
105                mStatusBarManager.removeIcon("tty");
106
107                SystemClock.sleep(1000);
108
109                Log.d(TAG, "set 1");
110                mStatusBarManager.setIcon("tty", R.drawable.stat_sys_phone, 0);
111                if (false) {
112                    Log.d(TAG, "set 2");
113                    mStatusBarManager.setIcon("tty", R.drawable.stat_sys_phone, 0);
114                }
115                Log.d(TAG, "remove 2");
116                mStatusBarManager.removeIcon("tty");
117                Log.d(TAG, "set 3");
118                mStatusBarManager.setIcon("speakerphone", R.drawable.stat_sys_phone, 0);
119            }
120        },
121        new Test("Hide (FLAG_FULLSCREEN)") {
122            public void run() {
123                Window win = getWindow();
124                win.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
125                        WindowManager.LayoutParams.FLAG_FULLSCREEN);
126                Log.d(TAG, "flags=" + Integer.toHexString(win.getAttributes().flags));
127            }
128        },
129        new Test("Show (~FLAG_FULLSCREEN)") {
130            public void run() {
131                Window win = getWindow();
132                win.setFlags(0, WindowManager.LayoutParams.FLAG_FULLSCREEN);
133                Log.d(TAG, "flags=" + Integer.toHexString(win.getAttributes().flags));
134            }
135        },
136        new Test("Immersive: Enter") {
137            public void run() {
138                setImmersive(true);
139            }
140        },
141        new Test("Immersive: Exit") {
142            public void run() {
143                setImmersive(false);
144            }
145        },
146        new Test("Priority notification") {
147            public void run() {
148                Notification not = new Notification(StatusBarTest.this,
149                                R.drawable.stat_sys_phone,
150                                "Incoming call from: Imperious Leader",
151                                System.currentTimeMillis()-(1000*60*60*24),
152                                "Imperious Leader",
153                                "(888) 555-5038",
154                                null
155                                );
156                not.flags |= Notification.FLAG_HIGH_PRIORITY;
157                Intent fullScreenIntent = new Intent(StatusBarTest.this, TestAlertActivity.class);
158                int id = (int)System.currentTimeMillis(); // XXX HAX
159                fullScreenIntent.putExtra("id", id);
160                not.fullScreenIntent = PendingIntent.getActivity(
161                    StatusBarTest.this,
162                    0,
163                    fullScreenIntent,
164                    PendingIntent.FLAG_CANCEL_CURRENT);
165                // if you tap on it you should get the original alert box
166                not.contentIntent = not.fullScreenIntent;
167                mNotificationManager.notify(id, not);
168            }
169        },
170        new Test("Disable Alerts") {
171            public void run() {
172                mStatusBarManager.disable(StatusBarManager.DISABLE_NOTIFICATION_ALERTS);
173            }
174        },
175        new Test("Disable Ticker") {
176            public void run() {
177                mStatusBarManager.disable(StatusBarManager.DISABLE_NOTIFICATION_TICKER);
178            }
179        },
180        new Test("Disable Expand in 3 sec.") {
181            public void run() {
182                mHandler.postDelayed(new Runnable() {
183                        public void run() {
184                            mStatusBarManager.disable(StatusBarManager.DISABLE_EXPAND);
185                        }
186                    }, 3000);
187            }
188        },
189        new Test("Disable Notifications in 3 sec.") {
190            public void run() {
191                mHandler.postDelayed(new Runnable() {
192                        public void run() {
193                            mStatusBarManager.disable(StatusBarManager.DISABLE_NOTIFICATION_ICONS);
194                        }
195                    }, 3000);
196            }
197        },
198        new Test("Disable Expand + Notifications in 3 sec.") {
199            public void run() {
200                mHandler.postDelayed(new Runnable() {
201                        public void run() {
202                            mStatusBarManager.disable(StatusBarManager.DISABLE_EXPAND
203                                    | StatusBarManager.DISABLE_NOTIFICATION_ICONS);
204                        }
205                    }, 3000);
206            }
207        },
208        new Test("Disable Navigation") {
209            public void run() {
210                mStatusBarManager.disable(StatusBarManager.DISABLE_NAVIGATION);
211            }
212        },
213        new Test("Disable Clock") {
214            public void run() {
215                mStatusBarManager.disable(StatusBarManager.DISABLE_CLOCK);
216            }
217        },
218        new Test("Disable System Info") {
219            public void run() {
220                mStatusBarManager.disable(StatusBarManager.DISABLE_SYSTEM_INFO);
221            }
222        },
223        new Test("Disable everything in 3 sec") {
224            public void run() {
225                mHandler.postDelayed(new Runnable() {
226                        public void run() {
227                            mStatusBarManager.disable(~StatusBarManager.DISABLE_NONE);
228                        }
229                    }, 3000);
230            }
231        },
232        new Test("Enable everything") {
233            public void run() {
234                mStatusBarManager.disable(StatusBarManager.DISABLE_NONE);
235            }
236        },
237        new Test("Enable everything in 3 sec.") {
238            public void run() {
239                mHandler.postDelayed(new Runnable() {
240                        public void run() {
241                            mStatusBarManager.disable(0);
242                        }
243                    }, 3000);
244            }
245        },
246        new Test("Notify in 3 sec.") {
247            public void run() {
248                mHandler.postDelayed(new Runnable() {
249                        public void run() {
250                            mNotificationManager.notify(1,
251                                    new Notification(StatusBarTest.this,
252                                            R.drawable.ic_statusbar_missedcall,
253                                            "tick tick tick",
254                                            System.currentTimeMillis()-(1000*60*60*24),
255                                            "(453) 123-2328",
256                                            "", null
257                                            ));
258                        }
259                    }, 3000);
260            }
261        },
262        new Test("Cancel Notification in 3 sec.") {
263            public void run() {
264                mHandler.postDelayed(new Runnable() {
265                        public void run() {
266                            mNotificationManager.cancel(1);
267                        }
268                    }, 3000);
269            }
270        },
271        new Test("Expand") {
272            public void run() {
273                mStatusBarManager.expand();
274            }
275        },
276        new Test("Expand in 3 sec.") {
277            public void run() {
278                mHandler.postDelayed(new Runnable() {
279                        public void run() {
280                            mStatusBarManager.expand();
281                        }
282                    }, 3000);
283            }
284        },
285        new Test("Collapse in 3 sec.") {
286            public void run() {
287                mHandler.postDelayed(new Runnable() {
288                        public void run() {
289                            mStatusBarManager.collapse();
290                        }
291                    }, 3000);
292            }
293        },
294        new Test("More icons") {
295            public void run() {
296                for (String slot: new String[] {
297                            "sync_failing",
298                            "gps",
299                            "bluetooth",
300                            "tty",
301                            "speakerphone",
302                            "mute",
303                            "wifi",
304                            "alarm_clock",
305                            "secure",
306                        }) {
307                    mStatusBarManager.setIconVisibility(slot, true);
308                }
309            }
310        },
311    };
312}
313