remove setLatestEventInfo from API samples

Bug: 18510449
Change-Id: I26a9dbc6c92b226e28798e5a348c9357c85405ab
diff --git a/samples/Alarm/AndroidManifest.xml b/samples/Alarm/AndroidManifest.xml
index 6a7a831..2242567 100644
--- a/samples/Alarm/AndroidManifest.xml
+++ b/samples/Alarm/AndroidManifest.xml
@@ -29,6 +29,7 @@
     <!--
         Declares the application, its icon, and its visible label
      -->
+    <uses-sdk android:minSdkVersion="11" />
     <application
         android:icon="@drawable/icon"
         android:label="@string/app_name">
diff --git a/samples/Alarm/src/com/example/android/newalarm/AlarmService.java b/samples/Alarm/src/com/example/android/newalarm/AlarmService.java
index 1f88206..ec3163c 100644
--- a/samples/Alarm/src/com/example/android/newalarm/AlarmService.java
+++ b/samples/Alarm/src/com/example/android/newalarm/AlarmService.java
@@ -181,13 +181,6 @@
         // Sets the text to use for the status bar and status list views.
         CharSequence notificationText = getText(R.string.alarm_service_started);
 
-        // Sets the icon, status bar text, and display time for the mNotification.
-        mNotification = new Notification(
-            R.drawable.stat_sample,  // the status icon
-            notificationText, // the status text
-            System.currentTimeMillis()  // the time stamp
-        );
-
         // Sets up the Intent that starts AlarmActivity
         mContentIntent = PendingIntent.getActivity(
             this,  // Start the Activity in the current context
@@ -196,14 +189,15 @@
             0  // Use an existing activity instance if available
         );
 
-        // Creates a new content view for the mNotification. The view appears when the user
-        // shows the expanded status window.
-        mNotification.setLatestEventInfo(
-            this,  //  Put the content view in the current context
-            getText(R.string.alarm_service_label),  // The text to use as the label of the entry
-            notificationText,  // The text to use as the contents of the entry
-            mContentIntent  // The intent to send when the entry is clicked
-        );
+        // Build the notification object.
+        mNotification = new Notification.Builder(this)  //  The builder requires the context
+                .setSmallIcon(R.drawable.stat_sample)  // the status icon
+                .setTicker(notificationText)  // the status text
+                .setWhen(System.currentTimeMillis())  // the time stamp
+                .setContentTitle(getText(R.string.alarm_service_label))  // the label of the entry
+                .setContentText(notificationText)  // the contents of the entry
+                .setContentIntent(mContentIntent)  // The intent to send when the entry is clicked
+                .build();
 
         // Sets a unique ID for the notification and sends it to NotificationManager to be
         // displayed. The ID is the integer marker for the notification string, which is
diff --git a/samples/ApiDemos/src/com/example/android/apis/app/AlarmService_Service.java b/samples/ApiDemos/src/com/example/android/apis/app/AlarmService_Service.java
index 6762ba9..cede9dc 100644
--- a/samples/ApiDemos/src/com/example/android/apis/app/AlarmService_Service.java
+++ b/samples/ApiDemos/src/com/example/android/apis/app/AlarmService_Service.java
@@ -99,17 +99,19 @@
         // In this sample, we'll use the same text for the ticker and the expanded notification
         CharSequence text = getText(R.string.alarm_service_started);
 
-        // Set the icon, scrolling text and timestamp
-        Notification notification = new Notification(R.drawable.stat_sample, text,
-                System.currentTimeMillis());
-
         // The PendingIntent to launch our activity if the user selects this notification
         PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
                 new Intent(this, AlarmService.class), 0);
 
         // Set the info for the views that show in the notification panel.
-        notification.setLatestEventInfo(this, getText(R.string.alarm_service_label),
-                       text, contentIntent);
+        Notification notification = new Notification.Builder(this)
+                .setSmallIcon(R.drawable.stat_sample)  // the status icon
+                .setTicker(text)  // the status text
+                .setWhen(System.currentTimeMillis())  // the time stamp
+                .setContentTitle(getText(R.string.alarm_service_label))  // the label of the entry
+                .setContentText(text)  // the contents of the entry
+                .setContentIntent(contentIntent)  // The intent to send when the entry is clicked
+                .build();
 
         // Send the notification.
         // We use a layout id because it is a unique number.  We use it later to cancel.
diff --git a/samples/ApiDemos/src/com/example/android/apis/app/ForegroundService.java b/samples/ApiDemos/src/com/example/android/apis/app/ForegroundService.java
index 123e369..19e41d8 100644
--- a/samples/ApiDemos/src/com/example/android/apis/app/ForegroundService.java
+++ b/samples/ApiDemos/src/com/example/android/apis/app/ForegroundService.java
@@ -166,18 +166,19 @@
             // In this sample, we'll use the same text for the ticker and the expanded notification
             CharSequence text = getText(R.string.foreground_service_started);
 
-            // Set the icon, scrolling text and timestamp
-            Notification notification = new Notification(R.drawable.stat_sample, text,
-                    System.currentTimeMillis());
-
-            // The PendingIntent to launch our activity if the user selects this notification
             PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
                     new Intent(this, Controller.class), 0);
 
             // Set the info for the views that show in the notification panel.
-            notification.setLatestEventInfo(this, getText(R.string.local_service_label),
-                           text, contentIntent);
-            
+            Notification notification = new Notification.Builder(this)
+                    .setSmallIcon(R.drawable.stat_sample)  // the status icon
+                    .setTicker(text)  // the status text
+                    .setWhen(System.currentTimeMillis())  // the time stamp
+                    .setContentTitle(getText(R.string.alarm_service_label))  // the label
+                    .setContentText(text)  // the contents of the entry
+                    .setContentIntent(contentIntent)  // The intent to send when clicked
+                    .build();
+
             startForegroundCompat(R.string.foreground_service_started, notification);
             
         } else if (ACTION_BACKGROUND.equals(intent.getAction())) {
diff --git a/samples/ApiDemos/src/com/example/android/apis/app/IncomingMessage.java b/samples/ApiDemos/src/com/example/android/apis/app/IncomingMessage.java
index 63a254f..399f52d 100644
--- a/samples/ApiDemos/src/com/example/android/apis/app/IncomingMessage.java
+++ b/samples/ApiDemos/src/com/example/android/apis/app/IncomingMessage.java
@@ -121,24 +121,26 @@
         // The ticker text, this uses a formatted string so our message could be localized
         String tickerText = getString(R.string.imcoming_message_ticker_text, message);
 
-        // construct the Notification object.
-        Notification notif = new Notification(R.drawable.stat_sample, tickerText,
-                System.currentTimeMillis());
-
         // Set the info for the views that show in the notification panel.
-        notif.setLatestEventInfo(this, from, message, contentIntent);
+        Notification.Builder notifBuilder = new Notification.Builder(this)
+                .setSmallIcon(R.drawable.stat_sample)  // the status icon
+                .setTicker(tickerText)  // the status text
+                .setWhen(System.currentTimeMillis())  // the time stamp
+                .setContentTitle(from)  // the label of the entry
+                .setContentText(message)  // the contents of the entry
+                .setContentIntent(contentIntent);  // The intent to send when the entry is clicked
 
         // We'll have this notification do the default sound, vibration, and led.
         // Note that if you want any of these behaviors, you should always have
         // a preference for the user to turn them off.
-        notif.defaults = Notification.DEFAULT_ALL;
+        notifBuilder.setDefaults(Notification.DEFAULT_ALL);
 
         // Note that we use R.layout.incoming_message_panel as the ID for
         // the notification.  It could be any integer you want, but we use
         // the convention of using a resource id for a string related to
         // the notification.  It will always be a unique number within your
         // application.
-        nm.notify(R.string.imcoming_message_ticker_text, notif);
+        nm.notify(R.string.imcoming_message_ticker_text, notifBuilder.build());
     }
 //END_INCLUDE(app_notification)
 
@@ -174,24 +176,26 @@
         // The ticker text, this uses a formatted string so our message could be localized
         String tickerText = getString(R.string.imcoming_message_ticker_text, message);
 
-        // construct the Notification object.
-        Notification notif = new Notification(R.drawable.stat_sample, tickerText,
-                System.currentTimeMillis());
-
         // Set the info for the views that show in the notification panel.
-        notif.setLatestEventInfo(this, from, message, contentIntent);
+        Notification.Builder notifBuilder = new Notification.Builder(this)
+                .setSmallIcon(R.drawable.stat_sample)  // the status icon
+                .setTicker(tickerText)  // the status text
+                .setWhen(System.currentTimeMillis())  // the time stamp
+                .setContentTitle(from)  // the label of the entry
+                .setContentText(message)  // the contents of the entry
+                .setContentIntent(contentIntent);  // The intent to send when the entry is clicked
 
         // We'll have this notification do the default sound, vibration, and led.
         // Note that if you want any of these behaviors, you should always have
         // a preference for the user to turn them off.
-        notif.defaults = Notification.DEFAULT_ALL;
+        notifBuilder.setDefaults(Notification.DEFAULT_ALL);
 
         // Note that we use R.layout.incoming_message_panel as the ID for
         // the notification.  It could be any integer you want, but we use
         // the convention of using a resource id for a string related to
         // the notification.  It will always be a unique number within your
         // application.
-        nm.notify(R.string.imcoming_message_ticker_text, notif);
+        nm.notify(R.string.imcoming_message_ticker_text, notifBuilder.build());
     }
 //END_INCLUDE(interstitial_notification)
 }
diff --git a/samples/ApiDemos/src/com/example/android/apis/app/LocalService.java b/samples/ApiDemos/src/com/example/android/apis/app/LocalService.java
index ea1b681..a3742ca 100644
--- a/samples/ApiDemos/src/com/example/android/apis/app/LocalService.java
+++ b/samples/ApiDemos/src/com/example/android/apis/app/LocalService.java
@@ -100,17 +100,19 @@
         // In this sample, we'll use the same text for the ticker and the expanded notification
         CharSequence text = getText(R.string.local_service_started);
 
-        // Set the icon, scrolling text and timestamp
-        Notification notification = new Notification(R.drawable.stat_sample, text,
-                System.currentTimeMillis());
-
         // The PendingIntent to launch our activity if the user selects this notification
         PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
                 new Intent(this, LocalServiceActivities.Controller.class), 0);
 
         // Set the info for the views that show in the notification panel.
-        notification.setLatestEventInfo(this, getText(R.string.local_service_label),
-                       text, contentIntent);
+        Notification notification = new Notification.Builder(this)
+                .setSmallIcon(R.drawable.stat_sample)  // the status icon
+                .setTicker(text)  // the status text
+                .setWhen(System.currentTimeMillis())  // the time stamp
+                .setContentTitle(getText(R.string.local_service_label))  // the label of the entry
+                .setContentText(text)  // the contents of the entry
+                .setContentIntent(contentIntent)  // The intent to send when the entry is clicked
+                .build();
 
         // Send the notification.
         mNM.notify(NOTIFICATION, notification);
diff --git a/samples/ApiDemos/src/com/example/android/apis/app/MessengerService.java b/samples/ApiDemos/src/com/example/android/apis/app/MessengerService.java
index a21763e..f25af91 100644
--- a/samples/ApiDemos/src/com/example/android/apis/app/MessengerService.java
+++ b/samples/ApiDemos/src/com/example/android/apis/app/MessengerService.java
@@ -149,17 +149,19 @@
         // In this sample, we'll use the same text for the ticker and the expanded notification
         CharSequence text = getText(R.string.remote_service_started);
 
-        // Set the icon, scrolling text and timestamp
-        Notification notification = new Notification(R.drawable.stat_sample, text,
-                System.currentTimeMillis());
-
         // The PendingIntent to launch our activity if the user selects this notification
         PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
                 new Intent(this, Controller.class), 0);
 
         // Set the info for the views that show in the notification panel.
-        notification.setLatestEventInfo(this, getText(R.string.remote_service_label),
-                       text, contentIntent);
+        Notification notification = new Notification.Builder(this)
+                .setSmallIcon(R.drawable.stat_sample)  // the status icon
+                .setTicker(text)  // the status text
+                .setWhen(System.currentTimeMillis())  // the time stamp
+                .setContentTitle(getText(R.string.local_service_label))  // the label of the entry
+                .setContentText(text)  // the contents of the entry
+                .setContentIntent(contentIntent)  // The intent to send when the entry is clicked
+                .build();
 
         // Send the notification.
         // We use a string id because it is a unique number.  We use it later to cancel.
diff --git a/samples/ApiDemos/src/com/example/android/apis/app/NotifyingService.java b/samples/ApiDemos/src/com/example/android/apis/app/NotifyingService.java
index 3b8139f..acb0095 100644
--- a/samples/ApiDemos/src/com/example/android/apis/app/NotifyingService.java
+++ b/samples/ApiDemos/src/com/example/android/apis/app/NotifyingService.java
@@ -94,20 +94,23 @@
         // In this sample, we'll use the same text for the ticker and the expanded notification
         CharSequence text = getText(textId);
 
-        // Set the icon, scrolling text and timestamp.
-        // Note that in this example, we pass null for tickerText.  We update the icon enough that
-        // it is distracting to show the ticker text every time it changes.  We strongly suggest
-        // that you do this as well.  (Think of of the "New hardware found" or "Network connection
-        // changed" messages that always pop up)
-        Notification notification = new Notification(moodId, null, System.currentTimeMillis());
-
         // The PendingIntent to launch our activity if the user selects this notification
         PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
                 new Intent(this, NotifyingController.class), 0);
 
+        // Set the icon and timestamp.
+        // Note that in this example, we do not set the tickerText.  We update the icon enough that
+        // it is distracting to show the ticker text every time it changes.  We strongly suggest
+        // that you do this as well.  (Think of of the "New hardware found" or "Network connection
+        // changed" messages that always pop up)
         // Set the info for the views that show in the notification panel.
-        notification.setLatestEventInfo(this, getText(R.string.status_bar_notifications_mood_title),
-                       text, contentIntent);
+        Notification notification = new Notification.Builder(this)
+                .setSmallIcon(moodId)
+                .setWhen(System.currentTimeMillis())
+                .setContentTitle(getText(R.string.status_bar_notifications_mood_title))
+                .setContentText(text)  // the contents of the entry
+                .setContentIntent(contentIntent)  // The intent to send when the entry is clicked
+                .build();
 
         // Send the notification.
         // We use a layout id because it is a unique number.  We use it later to cancel.
diff --git a/samples/ApiDemos/src/com/example/android/apis/app/RemoteService.java b/samples/ApiDemos/src/com/example/android/apis/app/RemoteService.java
index 3745def..41b9d88 100644
--- a/samples/ApiDemos/src/com/example/android/apis/app/RemoteService.java
+++ b/samples/ApiDemos/src/com/example/android/apis/app/RemoteService.java
@@ -190,17 +190,19 @@
         // In this sample, we'll use the same text for the ticker and the expanded notification
         CharSequence text = getText(R.string.remote_service_started);
 
-        // Set the icon, scrolling text and timestamp
-        Notification notification = new Notification(R.drawable.stat_sample, text,
-                System.currentTimeMillis());
-
         // The PendingIntent to launch our activity if the user selects this notification
         PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
                 new Intent(this, Controller.class), 0);
 
         // Set the info for the views that show in the notification panel.
-        notification.setLatestEventInfo(this, getText(R.string.remote_service_label),
-                       text, contentIntent);
+        Notification notification = new Notification.Builder(this)
+                .setSmallIcon(R.drawable.stat_sample)  // the status icon
+                .setTicker(text)  // the status text
+                .setWhen(System.currentTimeMillis())  // the time stamp
+                .setContentTitle(getText(R.string.remote_service_label))  // the label of the entry
+                .setContentText(text)  // the contents of the entry
+                .setContentIntent(contentIntent)  // The intent to send when the entry is clicked
+                .build();
 
         // Send the notification.
         // We use a string id because it is a unique number.  We use it later to cancel.
diff --git a/samples/ApiDemos/src/com/example/android/apis/app/ServiceStartArguments.java b/samples/ApiDemos/src/com/example/android/apis/app/ServiceStartArguments.java
index f551447..584dff3 100644
--- a/samples/ApiDemos/src/com/example/android/apis/app/ServiceStartArguments.java
+++ b/samples/ApiDemos/src/com/example/android/apis/app/ServiceStartArguments.java
@@ -174,24 +174,25 @@
      * Show a notification while this service is running.
      */
     private void showNotification(String text) {
-        // Set the icon, scrolling text and timestamp
-        Notification notification = new Notification(R.drawable.stat_sample, text,
-                System.currentTimeMillis());
-
         // The PendingIntent to launch our activity if the user selects this notification
         PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
                 new Intent(this, Controller.class), 0);
 
         // Set the info for the views that show in the notification panel.
-        notification.setLatestEventInfo(this, getText(R.string.service_start_arguments_label),
-                       text, contentIntent);
+        Notification.Builder noteBuilder = new Notification.Builder(this)
+                .setSmallIcon(R.drawable.stat_sample)  // the status icon
+                .setTicker(text)  // the status text
+                .setWhen(System.currentTimeMillis())  // the time stamp
+                .setContentTitle(getText(R.string.service_start_arguments_label))  // the label
+                .setContentText(text)  // the contents of the entry
+                .setContentIntent(contentIntent);  // The intent to send when the entry is clicked
 
         // We show this for as long as our service is processing a command.
-        notification.flags |= Notification.FLAG_ONGOING_EVENT;
+        noteBuilder.setOngoing(true);
         
         // Send the notification.
         // We use a string id because it is a unique number.  We use it later to cancel.
-        mNM.notify(R.string.service_created, notification);
+        mNM.notify(R.string.service_created, noteBuilder.build());
     }
     
     private void hideNotification() {
diff --git a/samples/ApiDemos/src/com/example/android/apis/app/StatusBarNotifications.java b/samples/ApiDemos/src/com/example/android/apis/app/StatusBarNotifications.java
index 7179b25..4ae7553 100644
--- a/samples/ApiDemos/src/com/example/android/apis/app/StatusBarNotifications.java
+++ b/samples/ApiDemos/src/com/example/android/apis/app/StatusBarNotifications.java
@@ -194,20 +194,25 @@
         // In this sample, we'll use the same text for the ticker and the expanded notification
         CharSequence text = getText(textId);
 
-        // choose the ticker text
-        String tickerText = showTicker ? getString(textId) : null;
-
-        // Set the icon, scrolling text and timestamp
-        Notification notification = new Notification(moodId, tickerText,
-                System.currentTimeMillis());
+        // In this sample, we'll use this text for the title of the notification
+        CharSequence title = getText(R.string.status_bar_notifications_mood_title);
 
         // Set the info for the views that show in the notification panel.
-        notification.setLatestEventInfo(this, getText(R.string.status_bar_notifications_mood_title),
-                       text, makeMoodIntent(moodId));
+        Notification.Builder notifBuidler = new Notification.Builder(this) // the context to use
+                .setSmallIcon(moodId)  // the status icon
+                .setWhen(System.currentTimeMillis())  // the timestamp for the notification
+                .setContentTitle(title)  // the title for the notification
+                .setContentText(text)  // the details to display in the notification
+                .setContentIntent(makeMoodIntent(moodId));  // The intent to send clicked
+
+        if (showTicker) {
+            // include the ticker text
+            notifBuidler.setTicker(getString(textId));
+        }
 
         // Send the notification.
         // We use a layout id because it is a unique number.  We use it later to cancel.
-        mNotificationManager.notify(MOOD_NOTIFICATIONS, notification);
+        mNotificationManager.notify(MOOD_NOTIFICATIONS, notifBuidler.build());
     }
 
     private void setMoodView(int moodId, int textId) {
@@ -239,29 +244,27 @@
     }
     
     private void setDefault(int defaults) {
-        
-        // This method sets the defaults on the notification before posting it.
-        
+
         // This is who should be launched if the user selects our notification.
         PendingIntent contentIntent = makeDefaultIntent();
 
         // In this sample, we'll use the same text for the ticker and the expanded notification
         CharSequence text = getText(R.string.status_bar_notifications_happy_message);
 
-        final Notification notification = new Notification(
-                R.drawable.stat_happy,       // the icon for the status bar
-                text,                        // the text to display in the ticker
-                System.currentTimeMillis()); // the timestamp for the notification
+        // In this sample, we'll use this text for the title of the notification
+        CharSequence title = getText(R.string.status_bar_notifications_mood_title);
 
-        notification.setLatestEventInfo(
-                this,                        // the context to use
-                getText(R.string.status_bar_notifications_mood_title),
-                                             // the title for the notification
-                text,                        // the details to display in the notification
-                contentIntent);              // the contentIntent (see above)
+        // Set the info for the views that show in the notification panel.
+        Notification notification = new Notification.Builder(this) // the context to use
+                .setSmallIcon(R.drawable.stat_happy)  // the status icon
+                .setTicker(text)  // the text to display in the ticker
+                .setWhen(System.currentTimeMillis())  // the timestamp for the notification
+                .setContentTitle(title)  // the title for the notification
+                .setContentText(text)  // the details to display in the notification
+                .setContentIntent(contentIntent)  // The intent to send when the entry is clicked
+                .setDefaults(defaults)
+                .build();
 
-        notification.defaults = defaults;
-        
         mNotificationManager.notify(
                 MOOD_NOTIFICATIONS, // we use a string id because it is a unique
                                     // number.  we use it later to cancel the notification
diff --git a/samples/RandomMusicPlayer/src/com/example/android/musicplayer/MusicService.java b/samples/RandomMusicPlayer/src/com/example/android/musicplayer/MusicService.java
index 25f5d81..5c3ccf4 100644
--- a/samples/RandomMusicPlayer/src/com/example/android/musicplayer/MusicService.java
+++ b/samples/RandomMusicPlayer/src/com/example/android/musicplayer/MusicService.java
@@ -150,7 +150,7 @@
     AudioManager mAudioManager;
     NotificationManager mNotificationManager;
 
-    Notification mNotification = null;
+    Notification.Builder mNotificationBuilder = null;
 
     /**
      * Makes sure the media player exists and has been reset. This will create the media player
@@ -516,8 +516,9 @@
         PendingIntent pi = PendingIntent.getActivity(getApplicationContext(), 0,
                 new Intent(getApplicationContext(), MainActivity.class),
                 PendingIntent.FLAG_UPDATE_CURRENT);
-        mNotification.setLatestEventInfo(getApplicationContext(), "RandomMusicPlayer", text, pi);
-        mNotificationManager.notify(NOTIFICATION_ID, mNotification);
+        mNotificationBuilder.setContentText(text)
+                .setContentIntent(pi);
+        mNotificationManager.notify(NOTIFICATION_ID, mNotificationBuilder.build());
     }
 
     /**
@@ -529,13 +530,18 @@
         PendingIntent pi = PendingIntent.getActivity(getApplicationContext(), 0,
                 new Intent(getApplicationContext(), MainActivity.class),
                 PendingIntent.FLAG_UPDATE_CURRENT);
-        mNotification = new Notification();
-        mNotification.tickerText = text;
-        mNotification.icon = R.drawable.ic_stat_playing;
-        mNotification.flags |= Notification.FLAG_ONGOING_EVENT;
-        mNotification.setLatestEventInfo(getApplicationContext(), "RandomMusicPlayer",
-                text, pi);
-        startForeground(NOTIFICATION_ID, mNotification);
+
+        // Build the notification object.
+        mNotificationBuilder = new Notification.Builder(getApplicationContext())
+                .setSmallIcon(R.drawable.ic_stat_playing)
+                .setTicker(text)
+                .setWhen(System.currentTimeMillis())
+                .setContentTitle("RandomMusicPlayer")
+                .setContentText(text)
+                .setContentIntent(pi)
+                .setOngoing(true);
+
+        startForeground(NOTIFICATION_ID, mNotificationBuilder.build());
     }
 
     /**