StatusBarTest.java revision 7bb8eeb90cf55f409a282c1f36ca08aa48c10543
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.setSystemUiVisibility(View.STATUS_BAR_HIDDEN);
83                v.setOnSystemUiVisibilityChangeListener(mOnSystemUiVisibilityChangeListener);
84            }
85        },
86        new Test("no setSystemUiVisibility") {
87            public void run() {
88                View v = findViewById(android.R.id.list);
89                v.setSystemUiVisibility(View.STATUS_BAR_VISIBLE);
90                v.setOnSystemUiVisibilityChangeListener(null);
91            }
92        },
93        new Test("Double Remove") {
94            public void run() {
95                Log.d(TAG, "set 0");
96                mStatusBarManager.setIcon("speakerphone", R.drawable.stat_sys_phone, 0);
97                Log.d(TAG, "remove 1");
98                mStatusBarManager.removeIcon("tty");
99
100                SystemClock.sleep(1000);
101
102                Log.d(TAG, "set 1");
103                mStatusBarManager.setIcon("tty", R.drawable.stat_sys_phone, 0);
104                if (false) {
105                    Log.d(TAG, "set 2");
106                    mStatusBarManager.setIcon("tty", R.drawable.stat_sys_phone, 0);
107                }
108                Log.d(TAG, "remove 2");
109                mStatusBarManager.removeIcon("tty");
110                Log.d(TAG, "set 3");
111                mStatusBarManager.setIcon("speakerphone", R.drawable.stat_sys_phone, 0);
112            }
113        },
114        new Test("Hide (FLAG_FULLSCREEN)") {
115            public void run() {
116                Window win = getWindow();
117                win.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
118                        WindowManager.LayoutParams.FLAG_FULLSCREEN);
119                Log.d(TAG, "flags=" + Integer.toHexString(win.getAttributes().flags));
120            }
121        },
122        new Test("Show (~FLAG_FULLSCREEN)") {
123            public void run() {
124                Window win = getWindow();
125                win.setFlags(0, WindowManager.LayoutParams.FLAG_FULLSCREEN);
126                Log.d(TAG, "flags=" + Integer.toHexString(win.getAttributes().flags));
127            }
128        },
129        new Test("Immersive: Enter") {
130            public void run() {
131                setImmersive(true);
132            }
133        },
134        new Test("Immersive: Exit") {
135            public void run() {
136                setImmersive(false);
137            }
138        },
139        new Test("Priority notification") {
140            public void run() {
141                Notification not = new Notification(StatusBarTest.this,
142                                R.drawable.stat_sys_phone,
143                                "Incoming call from: Imperious Leader",
144                                System.currentTimeMillis()-(1000*60*60*24),
145                                "Imperious Leader",
146                                "(888) 555-5038",
147                                null
148                                );
149                not.flags |= Notification.FLAG_HIGH_PRIORITY;
150                Intent fullScreenIntent = new Intent(StatusBarTest.this, TestAlertActivity.class);
151                int id = (int)System.currentTimeMillis(); // XXX HAX
152                fullScreenIntent.putExtra("id", id);
153                not.fullScreenIntent = PendingIntent.getActivity(
154                    StatusBarTest.this,
155                    0,
156                    fullScreenIntent,
157                    PendingIntent.FLAG_CANCEL_CURRENT);
158                // if you tap on it you should get the original alert box
159                not.contentIntent = not.fullScreenIntent;
160                mNotificationManager.notify(id, not);
161            }
162        },
163        new Test("Disable Alerts") {
164            public void run() {
165                mStatusBarManager.disable(StatusBarManager.DISABLE_NOTIFICATION_ALERTS);
166            }
167        },
168        new Test("Disable Ticker") {
169            public void run() {
170                mStatusBarManager.disable(StatusBarManager.DISABLE_NOTIFICATION_TICKER);
171            }
172        },
173        new Test("Disable Expand in 3 sec.") {
174            public void run() {
175                mHandler.postDelayed(new Runnable() {
176                        public void run() {
177                            mStatusBarManager.disable(StatusBarManager.DISABLE_EXPAND);
178                        }
179                    }, 3000);
180            }
181        },
182        new Test("Disable Notifications in 3 sec.") {
183            public void run() {
184                mHandler.postDelayed(new Runnable() {
185                        public void run() {
186                            mStatusBarManager.disable(StatusBarManager.DISABLE_NOTIFICATION_ICONS);
187                        }
188                    }, 3000);
189            }
190        },
191        new Test("Disable Expand + Notifications in 3 sec.") {
192            public void run() {
193                mHandler.postDelayed(new Runnable() {
194                        public void run() {
195                            mStatusBarManager.disable(StatusBarManager.DISABLE_EXPAND
196                                    | StatusBarManager.DISABLE_NOTIFICATION_ICONS);
197                        }
198                    }, 3000);
199            }
200        },
201        new Test("Disable Navigation") {
202            public void run() {
203                mStatusBarManager.disable(StatusBarManager.DISABLE_NAVIGATION);
204            }
205        },
206        new Test("Disable Clock") {
207            public void run() {
208                mStatusBarManager.disable(StatusBarManager.DISABLE_CLOCK);
209            }
210        },
211        new Test("Disable System Info") {
212            public void run() {
213                mStatusBarManager.disable(StatusBarManager.DISABLE_SYSTEM_INFO);
214            }
215        },
216        new Test("Disable everything in 3 sec") {
217            public void run() {
218                mHandler.postDelayed(new Runnable() {
219                        public void run() {
220                            mStatusBarManager.disable(~StatusBarManager.DISABLE_NONE);
221                        }
222                    }, 3000);
223            }
224        },
225        new Test("Enable everything") {
226            public void run() {
227                mStatusBarManager.disable(StatusBarManager.DISABLE_NONE);
228            }
229        },
230        new Test("Enable everything in 3 sec.") {
231            public void run() {
232                mHandler.postDelayed(new Runnable() {
233                        public void run() {
234                            mStatusBarManager.disable(0);
235                        }
236                    }, 3000);
237            }
238        },
239        new Test("Notify in 3 sec.") {
240            public void run() {
241                mHandler.postDelayed(new Runnable() {
242                        public void run() {
243                            mNotificationManager.notify(1,
244                                    new Notification(StatusBarTest.this,
245                                            R.drawable.ic_statusbar_missedcall,
246                                            "tick tick tick",
247                                            System.currentTimeMillis()-(1000*60*60*24),
248                                            "(453) 123-2328",
249                                            "", null
250                                            ));
251                        }
252                    }, 3000);
253            }
254        },
255        new Test("Cancel Notification in 3 sec.") {
256            public void run() {
257                mHandler.postDelayed(new Runnable() {
258                        public void run() {
259                            mNotificationManager.cancel(1);
260                        }
261                    }, 3000);
262            }
263        },
264        new Test("Expand") {
265            public void run() {
266                mStatusBarManager.expand();
267            }
268        },
269        new Test("Expand in 3 sec.") {
270            public void run() {
271                mHandler.postDelayed(new Runnable() {
272                        public void run() {
273                            mStatusBarManager.expand();
274                        }
275                    }, 3000);
276            }
277        },
278        new Test("Collapse in 3 sec.") {
279            public void run() {
280                mHandler.postDelayed(new Runnable() {
281                        public void run() {
282                            mStatusBarManager.collapse();
283                        }
284                    }, 3000);
285            }
286        },
287        new Test("More icons") {
288            public void run() {
289                for (String slot: new String[] {
290                            "sync_failing",
291                            "gps",
292                            "bluetooth",
293                            "tty",
294                            "speakerphone",
295                            "mute",
296                            "wifi",
297                            "alarm_clock",
298                            "secure",
299                        }) {
300                    mStatusBarManager.setIconVisibility(slot, true);
301                }
302            }
303        },
304    };
305}
306