NotificationTestList.java revision f265ea9d8307282ff1da3915978625a94fc2859e
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.Notification; 20import android.app.NotificationManager; 21import android.app.PendingIntent; 22import android.content.Context; 23import android.content.ContentResolver; 24import android.content.Intent; 25import android.graphics.Bitmap; 26import android.graphics.drawable.BitmapDrawable; 27import android.os.Bundle; 28import android.os.Environment; 29import android.os.Vibrator; 30import android.os.Handler; 31import android.os.UserHandle; 32import android.util.Log; 33import android.net.Uri; 34import android.os.SystemClock; 35import android.widget.RemoteViews; 36import android.widget.TextView; 37import android.widget.ProgressBar; 38import android.os.PowerManager; 39 40// private NM API 41import android.app.INotificationManager; 42import com.android.internal.statusbar.StatusBarNotification; 43 44public class NotificationTestList extends TestActivity 45{ 46 private final static String TAG = "NotificationTestList"; 47 48 NotificationManager mNM; 49 Vibrator mVibrator; 50 Handler mHandler = new Handler(); 51 52 long mActivityCreateTime; 53 long mChronometerBase = 0; 54 55 boolean mProgressDone = true; 56 57 final int[] kNumberedIconResIDs = { 58 R.drawable.notification0, 59 R.drawable.notification1, 60 R.drawable.notification2, 61 R.drawable.notification3, 62 R.drawable.notification4, 63 R.drawable.notification5, 64 R.drawable.notification6, 65 R.drawable.notification7, 66 R.drawable.notification8, 67 R.drawable.notification9 68 }; 69 final int kUnnumberedIconResID = R.drawable.notificationx; 70 71 @Override 72 public void onCreate(Bundle icicle) { 73 super.onCreate(icicle); 74 mVibrator = (Vibrator)getSystemService(VIBRATOR_SERVICE); 75 mActivityCreateTime = System.currentTimeMillis(); 76 } 77 78 @Override 79 protected String tag() { 80 return TAG; 81 } 82 83 @Override 84 protected Test[] tests() { 85 mNM = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); 86 87 return mTests; 88 } 89 90 private Test[] mTests = new Test[] { 91 new Test("Off and sound") { 92 public void run() { 93 PowerManager pm = (PowerManager)NotificationTestList.this.getSystemService(Context.POWER_SERVICE); 94 PowerManager.WakeLock wl = 95 pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "sound"); 96 wl.acquire(); 97 98 pm.goToSleep(SystemClock.uptimeMillis()); 99 100 Notification n = new Notification(); 101 n.sound = Uri.parse("file://" + Environment.getExternalStorageDirectory() + 102 "/virtual-void.mp3"); 103 Log.d(TAG, "n.sound=" + n.sound); 104 105 mNM.notify(1, n); 106 107 Log.d(TAG, "releasing wake lock"); 108 wl.release(); 109 Log.d(TAG, "released wake lock"); 110 } 111 }, 112 113 new Test("Cancel #1") { 114 public void run() 115 { 116 mNM.cancel(1); 117 } 118 }, 119 120 new Test("Button") { 121 public void run() { 122 Notification n = new Notification(R.drawable.icon1, null, 123 mActivityCreateTime); 124 n.contentView = new RemoteViews(getPackageName(), R.layout.button_notification); 125 n.flags |= Notification.FLAG_ONGOING_EVENT; 126 n.contentIntent = makeIntent(); 127 n.contentView.setOnClickPendingIntent(R.id.button, makeIntent2()); 128 129 mNM.notify(1, n); 130 } 131 }, 132 133 new Test("custom intent on text view") { 134 public void run() { 135 Notification n = new Notification(R.drawable.icon1, null, 136 mActivityCreateTime); 137 n.setLatestEventInfo(NotificationTestList.this, "Persistent #1", 138 "This is a notification!!!", null); 139 n.contentView.setOnClickPendingIntent(com.android.internal.R.id.text, 140 makeIntent2()); 141 mNM.notify(1, n); 142 } 143 }, 144 145 new Test("Ticker 1 line") { 146 public void run() { 147 Notification n = new Notification(R.drawable.icon1, "tick tick tick", 148 mActivityCreateTime); 149 n.setLatestEventInfo(NotificationTestList.this, "Persistent #1", 150 "This is a notification!!!", makeIntent()); 151 mNM.notify(1, n); 152 } 153 }, 154 155 new Test("No view") { 156 public void run() { 157 Notification n = new Notification(R.drawable.icon1, "No view", 158 System.currentTimeMillis()); 159 mNM.notify(1, n); 160 } 161 }, 162 163 new Test("No intent") { 164 public void run() { 165 Notification n = new Notification(R.drawable.icon1, "No intent", 166 System.currentTimeMillis()); 167 n.setLatestEventInfo(NotificationTestList.this, "No intent", 168 "No intent", null); 169 mNM.notify(1, n); 170 } 171 }, 172 173 new Test("Layout") { 174 public void run() 175 { 176 Notification n; 177 178 n = new Notification(NotificationTestList.this, 179 R.drawable.ic_statusbar_missedcall, 180 null, System.currentTimeMillis()-(1000*60*60*24), 181 "(453) 123-2328", 182 "", null); 183 n.flags |= Notification.FLAG_ONGOING_EVENT; 184 185 mNM.notify(1, n); 186 187 mNM.notify(2, new Notification(NotificationTestList.this, 188 R.drawable.ic_statusbar_email, 189 null, System.currentTimeMillis(), 190 "Mark Willem, Me (2)", 191 "Re: Didn't you get the memo?", null)); 192 193 mNM.notify(3, new Notification(NotificationTestList.this, 194 R.drawable.ic_statusbar_chat, 195 null, System.currentTimeMillis()+(1000*60*60*24), 196 "Sophia Winterlanden", 197 "Lorem ipsum dolor sit amet.", null)); 198 } 199 }, 200 201 new Test("Bad Icon #1 (when=create)") { 202 public void run() { 203 Notification n = new Notification(R.layout.chrono_notification /* not an icon */, 204 null, mActivityCreateTime); 205 n.setLatestEventInfo(NotificationTestList.this, "Persistent #1", 206 "This is the same notification!!!", makeIntent()); 207 mNM.notify(1, n); 208 } 209 }, 210 211 new Test("Bad Icon #1 (when=now)") { 212 public void run() { 213 Notification n = new Notification(R.layout.chrono_notification /* not an icon */, 214 null, System.currentTimeMillis()); 215 n.setLatestEventInfo(NotificationTestList.this, "Persistent #1", 216 "This is the same notification!!!", makeIntent()); 217 mNM.notify(1, n); 218 } 219 }, 220 221 new Test("Null Icon #1 (when=now)") { 222 public void run() { 223 Notification n = new Notification(0, null, System.currentTimeMillis()); 224 n.setLatestEventInfo(NotificationTestList.this, "Persistent #1", 225 "This is the same notification!!!", makeIntent()); 226 mNM.notify(1, n); 227 } 228 }, 229 230 new Test("Bad resource #1 (when=create)") { 231 public void run() { 232 Notification n = new Notification(R.drawable.icon2, 233 null, mActivityCreateTime); 234 n.setLatestEventInfo(NotificationTestList.this, "Persistent #1", 235 "This is the same notification!!!", makeIntent()); 236 n.contentView.setInt(1 /*bogus*/, "bogus method", 666); 237 mNM.notify(1, n); 238 } 239 }, 240 241 new Test("Bad resource #1 (when=now)") { 242 public void run() { 243 Notification n = new Notification(R.drawable.icon2, 244 null, System.currentTimeMillis()); 245 n.setLatestEventInfo(NotificationTestList.this, "Persistent #1", 246 "This is the same notification!!!", makeIntent()); 247 n.contentView.setInt(1 /*bogus*/, "bogus method", 666); 248 mNM.notify(1, n); 249 } 250 }, 251 252 253 new Test("Bad resource #3") { 254 public void run() 255 { 256 Notification n = new Notification(NotificationTestList.this, 257 R.drawable.ic_statusbar_missedcall, 258 null, System.currentTimeMillis()-(1000*60*60*24), 259 "(453) 123-2328", 260 "", null); 261 n.contentView.setInt(1 /*bogus*/, "bogus method", 666); 262 mNM.notify(3, n); 263 } 264 }, 265 266 new Test("Times") { 267 public void run() 268 { 269 long now = System.currentTimeMillis(); 270 271 timeNotification(7, "24 hours from now", now+(1000*60*60*24)); 272 timeNotification(6, "12:01:00 from now", now+(1000*60*60*12)+(60*1000)); 273 timeNotification(5, "12 hours from now", now+(1000*60*60*12)); 274 timeNotification(4, "now", now); 275 timeNotification(3, "11:59:00 ago", now-((1000*60*60*12)-(60*1000))); 276 timeNotification(2, "12 hours ago", now-(1000*60*60*12)); 277 timeNotification(1, "24 hours ago", now-(1000*60*60*24)); 278 } 279 }, 280 new StateStress("Stress - Ongoing / Latest", 100, 100, new Runnable[] { 281 new Runnable() { 282 public void run() { 283 Log.d(TAG, "Stress - Ongoing/Latest 0"); 284 Notification n = new Notification(NotificationTestList.this, 285 R.drawable.icon3, 286 null, System.currentTimeMillis(), "Stress - Ongoing", 287 "Notify me!!!", null); 288 n.flags |= Notification.FLAG_ONGOING_EVENT; 289 mNM.notify(1, n); 290 } 291 }, 292 new Runnable() { 293 public void run() { 294 Log.d(TAG, "Stress - Ongoing/Latest 1"); 295 Notification n = new Notification(NotificationTestList.this, 296 R.drawable.icon4, 297 null, System.currentTimeMillis(), "Stress - Latest", 298 "Notify me!!!", null); 299 //n.flags |= Notification.FLAG_ONGOING_EVENT; 300 mNM.notify(1, n); 301 } 302 } 303 }), 304 305 new Test("Long") { 306 public void run() 307 { 308 Notification n = new Notification(); 309 n.defaults |= Notification.DEFAULT_SOUND ; 310 n.vibrate = new long[] { 311 300, 400, 300, 400, 300, 400, 300, 400, 300, 400, 300, 400, 312 300, 400, 300, 400, 300, 400, 300, 400, 300, 400, 300, 400, 313 300, 400, 300, 400, 300, 400, 300, 400, 300, 400, 300, 400 }; 314 mNM.notify(1, n); 315 } 316 }, 317 318 new Test("Progress #1") { 319 public void run() { 320 final boolean PROGRESS_UPDATES_WHEN = true; 321 if (!mProgressDone) return; 322 mProgressDone = false; 323 Thread t = new Thread() { 324 public void run() { 325 int x = 0; 326 while (!mProgressDone) { 327 Notification n = new Notification(R.drawable.icon1, null, 328 PROGRESS_UPDATES_WHEN 329 ? System.currentTimeMillis() 330 : mActivityCreateTime); 331 RemoteViews v = new RemoteViews(getPackageName(), 332 R.layout.progress_notification); 333 334 v.setProgressBar(R.id.progress_bar, 100, x, false); 335 v.setTextViewText(R.id.status_text, "Progress: " + x + "%"); 336 337 n.contentView = v; 338 n.flags |= Notification.FLAG_ONGOING_EVENT; 339 340 mNM.notify(500, n); 341 x = (x + 7) % 100; 342 343 try { 344 Thread.sleep(1000); 345 } catch (InterruptedException e) { 346 break; 347 } 348 } 349 } 350 }; 351 t.start(); 352 } 353 }, 354 355 new Test("Stop Progress") { 356 public void run() { 357 mProgressDone = true; 358 mNM.cancel(500); 359 } 360 }, 361 362 new Test("Blue Lights") { 363 public void run() 364 { 365 Notification n = new Notification(); 366 n.flags |= Notification.FLAG_SHOW_LIGHTS; 367 n.ledARGB = 0xff0000ff; 368 n.ledOnMS = 1; 369 n.ledOffMS = 0; 370 mNM.notify(1, n); 371 } 372 }, 373 374 new Test("Red Lights") { 375 public void run() 376 { 377 Notification n = new Notification(); 378 n.flags |= Notification.FLAG_SHOW_LIGHTS; 379 n.ledARGB = 0xffff0000; 380 n.ledOnMS = 1; 381 n.ledOffMS = 0; 382 mNM.notify(1, n); 383 } 384 }, 385 386 new Test("Yellow Lights") { 387 public void run() 388 { 389 Notification n = new Notification(); 390 n.flags |= Notification.FLAG_SHOW_LIGHTS; 391 n.ledARGB = 0xffffff00; 392 n.ledOnMS = 1; 393 n.ledOffMS = 0; 394 mNM.notify(1, n); 395 } 396 }, 397 398 new Test("Lights off") { 399 public void run() 400 { 401 Notification n = new Notification(); 402 n.flags |= Notification.FLAG_SHOW_LIGHTS; 403 n.ledARGB = 0x00000000; 404 n.ledOnMS = 0; 405 n.ledOffMS = 0; 406 mNM.notify(1, n); 407 } 408 }, 409 410 new Test("Blue Blinking Slow") { 411 public void run() 412 { 413 Notification n = new Notification(); 414 n.flags |= Notification.FLAG_SHOW_LIGHTS; 415 n.ledARGB = 0xff0000ff; 416 n.ledOnMS = 1300; 417 n.ledOffMS = 1300; 418 mNM.notify(1, n); 419 } 420 }, 421 422 new Test("Blue Blinking Fast") { 423 public void run() 424 { 425 Notification n = new Notification(); 426 n.flags |= Notification.FLAG_SHOW_LIGHTS; 427 n.ledARGB = 0xff0000ff; 428 n.ledOnMS = 300; 429 n.ledOffMS = 300; 430 mNM.notify(1, n); 431 } 432 }, 433 434 new Test("Default All") { 435 public void run() 436 { 437 Notification n = new Notification(); 438 n.defaults |= Notification.DEFAULT_ALL; 439 mNM.notify(1, n); 440 } 441 }, 442 443 new Test("Default All, once") { 444 public void run() 445 { 446 Notification n = new Notification(); 447 n.defaults |= Notification.DEFAULT_ALL; 448 n.flags |= Notification.FLAG_ONLY_ALERT_ONCE ; 449 mNM.notify(1, n); 450 } 451 }, 452 453 new Test("Content Sound") { 454 public void run() 455 { 456 Notification n = new Notification(); 457 n.sound = Uri.parse( 458 "content://media/internal/audio/media/7"); 459 460 mNM.notify(1, n); 461 } 462 }, 463 464 new Test("Resource Sound") { 465 public void run() 466 { 467 Notification n = new Notification(); 468 n.sound = Uri.parse( 469 ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + 470 getPackageName() + "/raw/ringer"); 471 Log.d(TAG, "n.sound=" + n.sound); 472 473 mNM.notify(1, n); 474 } 475 }, 476 477 new Test("Sound and Cancel") { 478 public void run() 479 { 480 Notification n = new Notification(); 481 n.sound = Uri.parse( 482 "content://media/internal/audio/media/7"); 483 484 mNM.notify(1, n); 485 SystemClock.sleep(200); 486 mNM.cancel(1); 487 } 488 }, 489 490 new Test("Vibrate") { 491 public void run() 492 { 493 Notification n = new Notification(); 494 n.vibrate = new long[] { 0, 700, 500, 1000 }; 495 496 mNM.notify(1, n); 497 } 498 }, 499 500 new Test("Vibrate and cancel") { 501 public void run() 502 { 503 Notification n = new Notification(); 504 n.vibrate = new long[] { 0, 700, 500, 1000 }; 505 506 mNM.notify(1, n); 507 SystemClock.sleep(500); 508 mNM.cancel(1); 509 } 510 }, 511 512 new Test("Vibrate pattern") { 513 public void run() 514 { 515 mVibrator.vibrate(new long[] { 250, 1000, 500, 2000 }, -1); 516 } 517 }, 518 519 new Test("Vibrate pattern repeating") { 520 public void run() 521 { 522 mVibrator.vibrate(new long[] { 250, 1000, 500 }, 1); 523 } 524 }, 525 526 new Test("Vibrate 3s") { 527 public void run() 528 { 529 mVibrator.vibrate(3000); 530 } 531 }, 532 533 new Test("Vibrate 100s") { 534 public void run() 535 { 536 mVibrator.vibrate(100000); 537 } 538 }, 539 540 new Test("Vibrate off") { 541 public void run() 542 { 543 mVibrator.cancel(); 544 } 545 }, 546 547 new Test("Cancel #1") { 548 public void run() { 549 mNM.cancel(1); 550 } 551 }, 552 553 new Test("Cancel #1 in 3 sec") { 554 public void run() { 555 mHandler.postDelayed(new Runnable() { 556 public void run() { 557 Log.d(TAG, "Cancelling now..."); 558 mNM.cancel(1); 559 } 560 }, 3000); 561 } 562 }, 563 564 new Test("Cancel #2") { 565 public void run() { 566 mNM.cancel(2); 567 } 568 }, 569 570 new Test("Persistent #1") { 571 public void run() { 572 Notification n = new Notification(R.drawable.icon1, "tick tick tick", 573 mActivityCreateTime); 574 n.setLatestEventInfo(NotificationTestList.this, "Persistent #1", 575 "This is a notification!!!", makeIntent()); 576 mNM.notify(1, n); 577 } 578 }, 579 580 new Test("Persistent #1 in 3 sec") { 581 public void run() { 582 mHandler.postDelayed(new Runnable() { 583 public void run() { 584 Notification n = new Notification(R.drawable.icon1, 585 " " 586 + "tick tock tick tock\n\nSometimes notifications can " 587 + "be really long and wrap to more than one line.\n" 588 + "Sometimes." 589 + "Ohandwhathappensifwehaveonereallylongstringarewesure" 590 + "thatwesegmentitcorrectly?\n", 591 System.currentTimeMillis()); 592 n.setLatestEventInfo(NotificationTestList.this, 593 "Still Persistent #1", 594 "This is still a notification!!!", 595 makeIntent()); 596 mNM.notify(1, n); 597 } 598 }, 3000); 599 } 600 }, 601 602 new Test("Persistent #2") { 603 public void run() { 604 Notification n = new Notification(R.drawable.icon2, "tock tock tock", 605 System.currentTimeMillis()); 606 n.setLatestEventInfo(NotificationTestList.this, "Persistent #2", 607 "Notify me!!!", makeIntent()); 608 mNM.notify(2, n); 609 } 610 }, 611 612 new Test("Persistent #3") { 613 public void run() { 614 Notification n = new Notification(R.drawable.icon2, "tock tock tock\nmooooo", 615 System.currentTimeMillis()); 616 n.setLatestEventInfo(NotificationTestList.this, "Persistent #3", 617 "Notify me!!!", makeIntent()); 618 mNM.notify(3, n); 619 } 620 }, 621 622 new Test("Persistent #2 Vibrate") { 623 public void run() { 624 Notification n = new Notification(R.drawable.icon2, "tock tock tock", 625 System.currentTimeMillis()); 626 n.setLatestEventInfo(NotificationTestList.this, "Persistent #2", 627 "Notify me!!!", makeIntent()); 628 n.defaults = Notification.DEFAULT_VIBRATE; 629 mNM.notify(2, n); 630 } 631 }, 632 633 new Test("Persistent #1 - different icon") { 634 public void run() { 635 Notification n = new Notification(R.drawable.icon2, null, 636 mActivityCreateTime); 637 n.setLatestEventInfo(NotificationTestList.this, "Persistent #1", 638 "This is the same notification!!!", makeIntent()); 639 mNM.notify(1, n); 640 } 641 }, 642 643 new Test("Chronometer Start") { 644 public void run() { 645 Notification n = new Notification(R.drawable.icon2, "me me me me", 646 System.currentTimeMillis()); 647 n.contentView = new RemoteViews(getPackageName(), R.layout.chrono_notification); 648 mChronometerBase = SystemClock.elapsedRealtime(); 649 n.contentView.setChronometer(R.id.time, mChronometerBase, "Yay! (%s)", true); 650 n.flags |= Notification.FLAG_ONGOING_EVENT; 651 n.contentIntent = makeIntent(); 652 mNM.notify(2, n); 653 } 654 }, 655 656 new Test("Chronometer Stop") { 657 public void run() { 658 mHandler.postDelayed(new Runnable() { 659 public void run() { 660 Log.d(TAG, "Chronometer Stop"); 661 Notification n = new Notification(); 662 n.icon = R.drawable.icon1; 663 n.contentView = new RemoteViews(getPackageName(), 664 R.layout.chrono_notification); 665 n.contentView.setChronometer(R.id.time, mChronometerBase, null, false); 666 n.contentIntent = makeIntent(); 667 mNM.notify(2, n); 668 } 669 }, 3000); 670 } 671 }, 672 673 new Test("Sequential Persistent") { 674 public void run() { 675 mNM.notify(1, notificationWithNumbers(1)); 676 mNM.notify(2, notificationWithNumbers(2)); 677 } 678 }, 679 680 new Test("Replace Persistent") { 681 public void run() { 682 mNM.notify(1, notificationWithNumbers(1)); 683 mNM.notify(1, notificationWithNumbers(1)); 684 } 685 }, 686 687 new Test("Run and Cancel (n=1)") { 688 public void run() { 689 mNM.notify(1, notificationWithNumbers(1)); 690 mNM.cancel(1); 691 } 692 }, 693 694 new Test("Run an Cancel (n=2)") { 695 public void run() { 696 mNM.notify(1, notificationWithNumbers(1)); 697 mNM.notify(2, notificationWithNumbers(2)); 698 mNM.cancel(2); 699 } 700 }, 701 702 // Repeatedly notify and cancel -- triggers bug #670627 703 new Test("Bug 670627") { 704 public void run() { 705 for (int i = 0; i < 10; i++) { 706 Log.d(TAG, "Add two notifications"); 707 mNM.notify(1, notificationWithNumbers(1)); 708 mNM.notify(2, notificationWithNumbers(2)); 709 Log.d(TAG, "Cancel two notifications"); 710 mNM.cancel(1); 711 mNM.cancel(2); 712 } 713 } 714 }, 715 716 new Test("Ten Notifications") { 717 public void run() { 718 for (int i = 0; i < 2; i++) { 719 Notification n = new Notification( 720 kNumberedIconResIDs[i], 721 null, System.currentTimeMillis()); 722 n.number = i; 723 n.setLatestEventInfo( 724 NotificationTestList.this, 725 "Persistent #" + i, 726 "Notify me!!!" + i, 727 null); 728 n.flags |= Notification.FLAG_ONGOING_EVENT; 729 mNM.notify((i+1)*10, n); 730 } 731 for (int i = 2; i < 10; i++) { 732 Notification n = new Notification( 733 kNumberedIconResIDs[i], 734 null, System.currentTimeMillis()); 735 n.number = i; 736 n.setLatestEventInfo( 737 NotificationTestList.this, 738 "Persistent #" + i, 739 "Notify me!!!" + i, 740 null); 741 mNM.notify((i+1)*10, n); 742 } 743 } 744 }, 745 746 new Test("Cancel eight notifications") { 747 public void run() { 748 for (int i = 1; i < 9; i++) { 749 mNM.cancel((i+1)*10); 750 } 751 } 752 }, 753 754 new Test("Cancel the other two notifications") { 755 public void run() { 756 mNM.cancel(10); 757 mNM.cancel(100); 758 } 759 }, 760 761 new Test("Persistent with numbers 1") { 762 public void run() { 763 mNM.notify(1, notificationWithNumbers(1)); 764 } 765 }, 766 767 new Test("Persistent with numbers 22") { 768 public void run() { 769 mNM.notify(1, notificationWithNumbers(22)); 770 } 771 }, 772 773 new Test("Persistent with numbers 333") { 774 public void run() { 775 mNM.notify(1, notificationWithNumbers(333)); 776 } 777 }, 778 779 new Test("Persistent with numbers 4444") { 780 public void run() { 781 mNM.notify(1, notificationWithNumbers(4444)); 782 } 783 }, 784 785 new Test("PRIORITY_HIGH") { 786 public void run() { 787 Notification n = new Notification.Builder(NotificationTestList.this) 788 .setSmallIcon(R.drawable.notification5) 789 .setContentTitle("High priority") 790 .setContentText("This should appear before all others") 791 .setPriority(Notification.PRIORITY_HIGH) 792 .getNotification(); 793 794 int[] idOut = new int[1]; 795 try { 796 INotificationManager directLine = mNM.getService(); 797 directLine.enqueueNotificationWithTag( 798 getPackageName(), 799 getPackageName(), 800 null, 801 100, 802 n, 803 idOut, 804 UserHandle.myUserId()); 805 } catch (android.os.RemoteException ex) { 806 // oh well 807 } 808 } 809 }, 810 811 new Test("PRIORITY_MAX") { 812 public void run() { 813 Notification n = new Notification.Builder(NotificationTestList.this) 814 .setSmallIcon(R.drawable.notification9) 815 .setContentTitle("MAX priority") 816 .setContentText("This might appear as an intruder alert") 817 .setPriority(Notification.PRIORITY_MAX) 818 .getNotification(); 819 820 int[] idOut = new int[1]; 821 try { 822 INotificationManager directLine = mNM.getService(); 823 directLine.enqueueNotificationWithTag( 824 getPackageName(), 825 getPackageName(), 826 null, 827 200, 828 n, 829 idOut, 830 UserHandle.myUserId()); 831 } catch (android.os.RemoteException ex) { 832 // oh well 833 } 834 } 835 }, 836 837 new Test("PRIORITY_MIN") { 838 public void run() { 839 Notification n = new Notification.Builder(NotificationTestList.this) 840 .setSmallIcon(R.drawable.notification0) 841 .setContentTitle("MIN priority") 842 .setContentText("You should not see this") 843 .setPriority(Notification.PRIORITY_MIN) 844 .getNotification(); 845 846 int[] idOut = new int[1]; 847 try { 848 INotificationManager directLine = mNM.getService(); 849 directLine.enqueueNotificationWithTag( 850 getPackageName(), 851 getPackageName(), 852 null, 853 1, 854 n, 855 idOut, 856 UserHandle.myUserId()); 857 } catch (android.os.RemoteException ex) { 858 // oh well 859 } 860 } 861 }, 862 863 new Test("Crash") { 864 public void run() 865 { 866 PowerManager.WakeLock wl 867 = ((PowerManager)NotificationTestList.this.getSystemService(Context.POWER_SERVICE)) 868 .newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "crasher"); 869 wl.acquire(); 870 mHandler.postDelayed(new Runnable() { 871 public void run() { 872 throw new RuntimeException("Die!"); 873 } 874 }, 10000); 875 876 } 877 }, 878 879 }; 880 881 private Notification notificationWithNumbers(int num) { 882 Notification n = new Notification(this, 883 (num >= 0 && num < kNumberedIconResIDs.length) 884 ? kNumberedIconResIDs[num] 885 : kUnnumberedIconResID, 886 null, 887 System.currentTimeMillis(), 888 "Notification", "Number=" + num, 889 null); 890 n.number = num; 891 return n; 892 } 893 894 private PendingIntent makeIntent() { 895 Intent intent = new Intent(Intent.ACTION_MAIN); 896 intent.addCategory(Intent.CATEGORY_HOME); 897 return PendingIntent.getActivity(this, 0, intent, 0); 898 } 899 900 private PendingIntent makeIntent2() { 901 Intent intent = new Intent(this, StatusBarTest.class); 902 return PendingIntent.getActivity(this, 0, intent, 0); 903 } 904 905 906 class StateStress extends Test { 907 StateStress(String name, int pause, int iterations, Runnable[] tasks) { 908 super(name); 909 mPause = pause; 910 mTasks = tasks; 911 mIteration = iterations; 912 } 913 Runnable[] mTasks; 914 int mNext; 915 int mIteration; 916 long mPause; 917 Runnable mRunnable = new Runnable() { 918 public void run() { 919 mTasks[mNext].run(); 920 mNext++; 921 if (mNext >= mTasks.length) { 922 mNext = 0; 923 mIteration--; 924 if (mIteration <= 0) { 925 return; 926 } 927 } 928 mHandler.postDelayed(mRunnable, mPause); 929 } 930 }; 931 public void run() { 932 mNext = 0; 933 mHandler.postDelayed(mRunnable, mPause); 934 } 935 } 936 937 void timeNotification(int n, String label, long time) { 938 mNM.notify(n, new Notification(NotificationTestList.this, 939 R.drawable.ic_statusbar_missedcall, null, 940 time, label, "" + new java.util.Date(time), null)); 941 942 } 943 944 Bitmap loadBitmap(int resId) { 945 BitmapDrawable bd = (BitmapDrawable)getResources().getDrawable(resId); 946 return Bitmap.createBitmap(bd.getBitmap()); 947 } 948} 949 950