2 * Copyright (C) 2007 The Android Open Source Project
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 package com
.android
.statusbartest
;
19 import android
.app
.Notification
;
20 import android
.app
.NotificationManager
;
21 import android
.view
.View
;
22 import android
.content
.Intent
;
23 import android
.app
.PendingIntent
;
24 import android
.app
.StatusBarManager
;
25 import android
.os
.Handler
;
26 import android
.util
.Log
;
27 import android
.os
.SystemClock
;
28 import android
.view
.Window
;
29 import android
.view
.WindowManager
;
31 public class StatusBarTest
extends TestActivity
33 private final static String TAG
= "StatusBarTest";
34 StatusBarManager mStatusBarManager
;
35 NotificationManager mNotificationManager
;
36 Handler mHandler
= new Handler();
37 int mUiVisibility
= 0;
40 View
.OnSystemUiVisibilityChangeListener mOnSystemUiVisibilityChangeListener
41 = new View
.OnSystemUiVisibilityChangeListener() {
42 public void onSystemUiVisibilityChange(int visibility
) {
43 Log
.d(TAG
, "onSystemUiVisibilityChange visibility=" + visibility
);
48 protected String
tag() {
53 protected Test
[] tests() {
54 mStatusBarManager
= (StatusBarManager
)getSystemService(STATUS_BAR_SERVICE
);
55 mNotificationManager
= (NotificationManager
) getSystemService(NOTIFICATION_SERVICE
);
61 public void onResume() {
64 mListView
= findViewById(android
.R
.id
.list
);
65 mListView
.setOnSystemUiVisibilityChangeListener(mOnSystemUiVisibilityChangeListener
);
68 private Test
[] mTests
= new Test
[] {
69 new Test("toggle LOW_PROFILE (lights out)") {
71 if (0 != (mUiVisibility
& View
.SYSTEM_UI_FLAG_LOW_PROFILE
)) {
72 mUiVisibility
&= ~View
.SYSTEM_UI_FLAG_LOW_PROFILE
;
74 mUiVisibility
|= View
.SYSTEM_UI_FLAG_LOW_PROFILE
;
76 mListView
.setSystemUiVisibility(mUiVisibility
);
79 new Test("toggle HIDE_NAVIGATION") {
81 if (0 != (mUiVisibility
& View
.SYSTEM_UI_FLAG_HIDE_NAVIGATION
)) {
82 mUiVisibility
&= ~View
.SYSTEM_UI_FLAG_HIDE_NAVIGATION
;
84 mUiVisibility
|= View
.SYSTEM_UI_FLAG_HIDE_NAVIGATION
;
86 mListView
.setSystemUiVisibility(mUiVisibility
);
90 new Test("clear SYSTEM_UI_FLAGs") {
93 mListView
.setSystemUiVisibility(mUiVisibility
);
96 // new Test("no setSystemUiVisibility") {
97 // public void run() {
98 // View v = findViewById(android.R.id.list);
99 // v.setOnSystemUiVisibilityChangeListener(null);
100 // v.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
103 new Test("systemUiVisibility: STATUS_BAR_DISABLE_HOME") {
105 mListView
.setSystemUiVisibility(View
.STATUS_BAR_DISABLE_HOME
);
108 new Test("Double Remove") {
111 mStatusBarManager
.setIcon("speakerphone", R
.drawable
.stat_sys_phone
, 0, null);
112 Log
.d(TAG
, "remove 1");
113 mStatusBarManager
.removeIcon("tty");
115 SystemClock
.sleep(1000);
118 mStatusBarManager
.setIcon("tty", R
.drawable
.stat_sys_phone
, 0, null);
121 mStatusBarManager
.setIcon("tty", R
.drawable
.stat_sys_phone
, 0, null);
123 Log
.d(TAG
, "remove 2");
124 mStatusBarManager
.removeIcon("tty");
126 mStatusBarManager
.setIcon("speakerphone", R
.drawable
.stat_sys_phone
, 0, null);
129 new Test("Hide (FLAG_FULLSCREEN)") {
131 Window win
= getWindow();
132 win
.setFlags(WindowManager
.LayoutParams
.FLAG_FULLSCREEN
,
133 WindowManager
.LayoutParams
.FLAG_FULLSCREEN
);
134 Log
.d(TAG
, "flags=" + Integer
.toHexString(win
.getAttributes().flags
));
137 new Test("Show (~FLAG_FULLSCREEN)") {
139 Window win
= getWindow();
140 win
.setFlags(0, WindowManager
.LayoutParams
.FLAG_FULLSCREEN
);
141 Log
.d(TAG
, "flags=" + Integer
.toHexString(win
.getAttributes().flags
));
144 new Test("Immersive: Enter") {
149 new Test("Immersive: Exit") {
154 new Test("Priority notification") {
156 Intent fullScreenIntent
= new Intent(StatusBarTest
.this, TestAlertActivity
.class);
157 int id
= (int)System
.currentTimeMillis(); // XXX HAX
158 fullScreenIntent
.putExtra("id", id
);
159 PendingIntent pi
= PendingIntent
.getActivity(
163 PendingIntent
.FLAG_CANCEL_CURRENT
);
164 Notification not
= new Notification
.Builder(StatusBarTest
.this)
165 .setSmallIcon(R
.drawable
.stat_sys_phone
)
166 .setWhen(System
.currentTimeMillis() - (1000 * 60 * 60 * 24))
167 .setContentTitle("Incoming call")
168 .setContentText("from: Imperious Leader")
169 .setContentIntent(pi
)
170 .setFullScreenIntent(pi
, true)
171 .setPriority(Notification
.PRIORITY_HIGH
)
174 mNotificationManager
.notify(id
, not
);
177 new Test("Disable Alerts") {
179 mStatusBarManager
.disable(StatusBarManager
.DISABLE_NOTIFICATION_ALERTS
);
182 new Test("Disable Ticker") {
184 mStatusBarManager
.disable(StatusBarManager
.DISABLE_NOTIFICATION_TICKER
);
187 new Test("Disable Expand in 3 sec.") {
189 mHandler
.postDelayed(new Runnable() {
191 mStatusBarManager
.disable(StatusBarManager
.DISABLE_EXPAND
);
196 new Test("Disable Notifications in 3 sec.") {
198 mHandler
.postDelayed(new Runnable() {
200 mStatusBarManager
.disable(StatusBarManager
.DISABLE_NOTIFICATION_ICONS
);
205 new Test("Disable Expand + Notifications in 3 sec.") {
207 mHandler
.postDelayed(new Runnable() {
209 mStatusBarManager
.disable(StatusBarManager
.DISABLE_EXPAND
210 | StatusBarManager
.DISABLE_NOTIFICATION_ICONS
);
215 new Test("Disable Home (StatusBarManager)") {
217 mStatusBarManager
.disable(StatusBarManager
.DISABLE_HOME
);
220 new Test("Disable Back (StatusBarManager)") {
222 mStatusBarManager
.disable(StatusBarManager
.DISABLE_BACK
);
225 new Test("Disable Recent (StatusBarManager)") {
227 mStatusBarManager
.disable(StatusBarManager
.DISABLE_RECENT
);
230 new Test("Disable Clock") {
232 mStatusBarManager
.disable(StatusBarManager
.DISABLE_CLOCK
);
235 new Test("Disable System Info") {
237 mStatusBarManager
.disable(StatusBarManager
.DISABLE_SYSTEM_INFO
);
240 new Test("Disable everything in 3 sec") {
242 mHandler
.postDelayed(new Runnable() {
244 mStatusBarManager
.disable(~StatusBarManager
.DISABLE_NONE
);
249 new Test("Enable everything") {
251 mStatusBarManager
.disable(StatusBarManager
.DISABLE_NONE
);
254 new Test("Enable everything in 3 sec.") {
256 mHandler
.postDelayed(new Runnable() {
258 mStatusBarManager
.disable(0);
263 new Test("Notify in 3 sec.") {
265 mHandler
.postDelayed(new Runnable() {
267 mNotificationManager
.notify(1,
269 R
.drawable
.ic_statusbar_missedcall
,
271 System
.currentTimeMillis()-(1000*60*60*24)
277 new Test("Cancel Notification in 3 sec.") {
279 mHandler
.postDelayed(new Runnable() {
281 mNotificationManager
.cancel(1);
286 new Test("Expand notifications") {
288 mStatusBarManager
.expandNotificationsPanel();
291 new Test(" ... in 3 sec.") {
293 mHandler
.postDelayed(new Runnable() {
295 mStatusBarManager
.expandNotificationsPanel();
300 new Test("Expand settings") {
302 mStatusBarManager
.expandSettingsPanel();
305 new Test(" ... in 3 sec.") {
307 mHandler
.postDelayed(new Runnable() {
309 mStatusBarManager
.expandSettingsPanel();
314 new Test("Collapse panels in 3 sec.") {
316 mHandler
.postDelayed(new Runnable() {
318 mStatusBarManager
.collapsePanels();
323 new Test("More icons") {
325 for (String slot
: new String
[] {
336 mStatusBarManager
.setIconVisibility(slot
, true);