156e1b4d8207e9ae177111bc824877a780723287bChris Wren/*
256e1b4d8207e9ae177111bc824877a780723287bChris Wren * Copyright (C) 2013 The Android Open Source Project
356e1b4d8207e9ae177111bc824877a780723287bChris Wren *
456e1b4d8207e9ae177111bc824877a780723287bChris Wren * Licensed under the Apache License, Version 2.0 (the "License");
556e1b4d8207e9ae177111bc824877a780723287bChris Wren * you may not use this file except in compliance with the License.
656e1b4d8207e9ae177111bc824877a780723287bChris Wren * You may obtain a copy of the License at
756e1b4d8207e9ae177111bc824877a780723287bChris Wren *
856e1b4d8207e9ae177111bc824877a780723287bChris Wren *      http://www.apache.org/licenses/LICENSE-2.0
956e1b4d8207e9ae177111bc824877a780723287bChris Wren *
1056e1b4d8207e9ae177111bc824877a780723287bChris Wren * Unless required by applicable law or agreed to in writing, software
1156e1b4d8207e9ae177111bc824877a780723287bChris Wren * distributed under the License is distributed on an "AS IS" BASIS,
1256e1b4d8207e9ae177111bc824877a780723287bChris Wren * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1356e1b4d8207e9ae177111bc824877a780723287bChris Wren * See the License for the specific language governing permissions and
1456e1b4d8207e9ae177111bc824877a780723287bChris Wren * limitations under the License.
1556e1b4d8207e9ae177111bc824877a780723287bChris Wren */
1656e1b4d8207e9ae177111bc824877a780723287bChris Wren
1756e1b4d8207e9ae177111bc824877a780723287bChris Wrenpackage com.android.example.notificationshowcase;
1856e1b4d8207e9ae177111bc824877a780723287bChris Wren
1956e1b4d8207e9ae177111bc824877a780723287bChris Wrenimport android.app.IntentService;
2056e1b4d8207e9ae177111bc824877a780723287bChris Wrenimport android.app.Notification;
2156e1b4d8207e9ae177111bc824877a780723287bChris Wrenimport android.app.NotificationManager;
2256e1b4d8207e9ae177111bc824877a780723287bChris Wrenimport android.app.PendingIntent;
230c599a55ac00df73a055831118a7d0c54a7c9f79Chris Wrenimport android.content.ContentResolver;
2456e1b4d8207e9ae177111bc824877a780723287bChris Wrenimport android.content.Context;
2556e1b4d8207e9ae177111bc824877a780723287bChris Wrenimport android.content.Intent;
260c599a55ac00df73a055831118a7d0c54a7c9f79Chris Wrenimport android.database.Cursor;
2756e1b4d8207e9ae177111bc824877a780723287bChris Wrenimport android.graphics.Bitmap;
2856e1b4d8207e9ae177111bc824877a780723287bChris Wrenimport android.graphics.Canvas;
2956e1b4d8207e9ae177111bc824877a780723287bChris Wrenimport android.graphics.Typeface;
3056e1b4d8207e9ae177111bc824877a780723287bChris Wrenimport android.graphics.drawable.BitmapDrawable;
3156e1b4d8207e9ae177111bc824877a780723287bChris Wrenimport android.graphics.drawable.Drawable;
3256e1b4d8207e9ae177111bc824877a780723287bChris Wrenimport android.net.Uri;
330c599a55ac00df73a055831118a7d0c54a7c9f79Chris Wrenimport android.provider.ContactsContract;
3456e1b4d8207e9ae177111bc824877a780723287bChris Wrenimport android.support.v4.app.NotificationCompat;
3556e1b4d8207e9ae177111bc824877a780723287bChris Wrenimport android.text.SpannableString;
360c599a55ac00df73a055831118a7d0c54a7c9f79Chris Wrenimport android.text.TextUtils;
3756e1b4d8207e9ae177111bc824877a780723287bChris Wrenimport android.text.style.StyleSpan;
380c599a55ac00df73a055831118a7d0c54a7c9f79Chris Wrenimport android.util.Log;
3956e1b4d8207e9ae177111bc824877a780723287bChris Wrenimport android.view.View;
4056e1b4d8207e9ae177111bc824877a780723287bChris Wren
4156e1b4d8207e9ae177111bc824877a780723287bChris Wrenimport java.util.ArrayList;
4256e1b4d8207e9ae177111bc824877a780723287bChris Wren
4356e1b4d8207e9ae177111bc824877a780723287bChris Wrenpublic class NotificationService extends IntentService {
4456e1b4d8207e9ae177111bc824877a780723287bChris Wren
4556e1b4d8207e9ae177111bc824877a780723287bChris Wren    private static final String TAG = "NotificationService";
4656e1b4d8207e9ae177111bc824877a780723287bChris Wren
4756e1b4d8207e9ae177111bc824877a780723287bChris Wren    public static final String ACTION_CREATE = "create";
4856e1b4d8207e9ae177111bc824877a780723287bChris Wren    public static final int NOTIFICATION_ID = 31338;
4956e1b4d8207e9ae177111bc824877a780723287bChris Wren
5056e1b4d8207e9ae177111bc824877a780723287bChris Wren    public NotificationService() {
5156e1b4d8207e9ae177111bc824877a780723287bChris Wren        super(TAG);
5256e1b4d8207e9ae177111bc824877a780723287bChris Wren    }
5356e1b4d8207e9ae177111bc824877a780723287bChris Wren
5456e1b4d8207e9ae177111bc824877a780723287bChris Wren    public NotificationService(String name) {
5556e1b4d8207e9ae177111bc824877a780723287bChris Wren        super(name);
5656e1b4d8207e9ae177111bc824877a780723287bChris Wren    }
5756e1b4d8207e9ae177111bc824877a780723287bChris Wren
5856e1b4d8207e9ae177111bc824877a780723287bChris Wren    private static Bitmap getBitmap(Context context, int resId) {
5956e1b4d8207e9ae177111bc824877a780723287bChris Wren        int largeIconWidth = (int) context.getResources()
6056e1b4d8207e9ae177111bc824877a780723287bChris Wren                .getDimension(R.dimen.notification_large_icon_width);
6156e1b4d8207e9ae177111bc824877a780723287bChris Wren        int largeIconHeight = (int) context.getResources()
6256e1b4d8207e9ae177111bc824877a780723287bChris Wren                .getDimension(R.dimen.notification_large_icon_height);
6356e1b4d8207e9ae177111bc824877a780723287bChris Wren        Drawable d = context.getResources().getDrawable(resId);
6456e1b4d8207e9ae177111bc824877a780723287bChris Wren        Bitmap b = Bitmap.createBitmap(largeIconWidth, largeIconHeight, Bitmap.Config.ARGB_8888);
6556e1b4d8207e9ae177111bc824877a780723287bChris Wren        Canvas c = new Canvas(b);
6656e1b4d8207e9ae177111bc824877a780723287bChris Wren        d.setBounds(0, 0, largeIconWidth, largeIconHeight);
6756e1b4d8207e9ae177111bc824877a780723287bChris Wren        d.draw(c);
6856e1b4d8207e9ae177111bc824877a780723287bChris Wren        return b;
6956e1b4d8207e9ae177111bc824877a780723287bChris Wren    }
7056e1b4d8207e9ae177111bc824877a780723287bChris Wren
7156e1b4d8207e9ae177111bc824877a780723287bChris Wren    private static PendingIntent makeEmailIntent(Context context, String who) {
7256e1b4d8207e9ae177111bc824877a780723287bChris Wren        final Intent intent = new Intent(android.content.Intent.ACTION_SENDTO,
7356e1b4d8207e9ae177111bc824877a780723287bChris Wren                Uri.parse("mailto:" + who));
7456e1b4d8207e9ae177111bc824877a780723287bChris Wren        return PendingIntent.getActivity(
7556e1b4d8207e9ae177111bc824877a780723287bChris Wren                context, 0, intent,
7656e1b4d8207e9ae177111bc824877a780723287bChris Wren                PendingIntent.FLAG_CANCEL_CURRENT);
7756e1b4d8207e9ae177111bc824877a780723287bChris Wren    }
7856e1b4d8207e9ae177111bc824877a780723287bChris Wren
7956e1b4d8207e9ae177111bc824877a780723287bChris Wren    public static Notification makeBigTextNotification(Context context, int update, int id,
8056e1b4d8207e9ae177111bc824877a780723287bChris Wren            long when) {
810c599a55ac00df73a055831118a7d0c54a7c9f79Chris Wren        String personUri = null;
820c599a55ac00df73a055831118a7d0c54a7c9f79Chris Wren        Cursor c = null;
830c599a55ac00df73a055831118a7d0c54a7c9f79Chris Wren        try {
840c599a55ac00df73a055831118a7d0c54a7c9f79Chris Wren            String[] projection = new String[] { ContactsContract.Contacts._ID, ContactsContract.Contacts.LOOKUP_KEY };
850c599a55ac00df73a055831118a7d0c54a7c9f79Chris Wren            String selections = ContactsContract.Contacts.DISPLAY_NAME + " = 'Mike Cleron'";
860c599a55ac00df73a055831118a7d0c54a7c9f79Chris Wren            final ContentResolver contentResolver = context.getContentResolver();
870c599a55ac00df73a055831118a7d0c54a7c9f79Chris Wren            c = contentResolver.query(ContactsContract.Contacts.CONTENT_URI,
880c599a55ac00df73a055831118a7d0c54a7c9f79Chris Wren                    projection, selections, null, null);
890c599a55ac00df73a055831118a7d0c54a7c9f79Chris Wren            if (c != null && c.getCount() > 0) {
900c599a55ac00df73a055831118a7d0c54a7c9f79Chris Wren                c.moveToFirst();
910c599a55ac00df73a055831118a7d0c54a7c9f79Chris Wren                int lookupIdx = c.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY);
920c599a55ac00df73a055831118a7d0c54a7c9f79Chris Wren                int idIdx = c.getColumnIndex(ContactsContract.Contacts._ID);
930c599a55ac00df73a055831118a7d0c54a7c9f79Chris Wren                String lookupKey = c.getString(lookupIdx);
940c599a55ac00df73a055831118a7d0c54a7c9f79Chris Wren                long contactId = c.getLong(idIdx);
950c599a55ac00df73a055831118a7d0c54a7c9f79Chris Wren                Uri lookupUri = ContactsContract.Contacts.getLookupUri(contactId, lookupKey);
960c599a55ac00df73a055831118a7d0c54a7c9f79Chris Wren                personUri = lookupUri.toString();
970c599a55ac00df73a055831118a7d0c54a7c9f79Chris Wren            }
980c599a55ac00df73a055831118a7d0c54a7c9f79Chris Wren        } finally {
990c599a55ac00df73a055831118a7d0c54a7c9f79Chris Wren            if (c != null) {
1000c599a55ac00df73a055831118a7d0c54a7c9f79Chris Wren                c.close();
1010c599a55ac00df73a055831118a7d0c54a7c9f79Chris Wren            }
1020c599a55ac00df73a055831118a7d0c54a7c9f79Chris Wren        }
1030c599a55ac00df73a055831118a7d0c54a7c9f79Chris Wren        if (TextUtils.isEmpty(personUri)) {
1040c599a55ac00df73a055831118a7d0c54a7c9f79Chris Wren            Log.w(TAG, "failed to find contact for Mike Cleron");
1050c599a55ac00df73a055831118a7d0c54a7c9f79Chris Wren        } else {
1060c599a55ac00df73a055831118a7d0c54a7c9f79Chris Wren            Log.w(TAG, "Mike Cleron is " + personUri);
1070c599a55ac00df73a055831118a7d0c54a7c9f79Chris Wren        }
1080c599a55ac00df73a055831118a7d0c54a7c9f79Chris Wren
10956e1b4d8207e9ae177111bc824877a780723287bChris Wren        String addendum = update > 0 ? "(updated) " : "";
11056e1b4d8207e9ae177111bc824877a780723287bChris Wren        String longSmsText = "Hey, looks like\nI'm getting kicked out of this conference" +
11156e1b4d8207e9ae177111bc824877a780723287bChris Wren                " room";
11256e1b4d8207e9ae177111bc824877a780723287bChris Wren        if (update > 1) {
11356e1b4d8207e9ae177111bc824877a780723287bChris Wren            longSmsText += ", so stay in the hangout and I'll rejoin in about 5-10 minutes" +
11456e1b4d8207e9ae177111bc824877a780723287bChris Wren                    ". If you don't see me, assume I got pulled into another meeting. And" +
11556e1b4d8207e9ae177111bc824877a780723287bChris Wren                    " now \u2026 I have to find my shoes.";
11656e1b4d8207e9ae177111bc824877a780723287bChris Wren        }
11756e1b4d8207e9ae177111bc824877a780723287bChris Wren        if (update > 2) {
11856e1b4d8207e9ae177111bc824877a780723287bChris Wren            when = System.currentTimeMillis();
11956e1b4d8207e9ae177111bc824877a780723287bChris Wren        }
12056e1b4d8207e9ae177111bc824877a780723287bChris Wren        NotificationCompat.BigTextStyle bigTextStyle = new NotificationCompat.BigTextStyle();
12156e1b4d8207e9ae177111bc824877a780723287bChris Wren        bigTextStyle.bigText(addendum + longSmsText);
1220c599a55ac00df73a055831118a7d0c54a7c9f79Chris Wren        Notification bigText = new NotificationCompat.Builder(context)
12356e1b4d8207e9ae177111bc824877a780723287bChris Wren                .setContentTitle(addendum + "Mike Cleron")
12456e1b4d8207e9ae177111bc824877a780723287bChris Wren                .setContentIntent(ToastService.getPendingIntent(context, "Clicked on bigText"))
12556e1b4d8207e9ae177111bc824877a780723287bChris Wren                .setContentText(addendum + longSmsText)
12656e1b4d8207e9ae177111bc824877a780723287bChris Wren                .setTicker(addendum + "Mike Cleron: " + longSmsText)
12756e1b4d8207e9ae177111bc824877a780723287bChris Wren                .setWhen(when)
12856e1b4d8207e9ae177111bc824877a780723287bChris Wren                .setLargeIcon(getBitmap(context, R.drawable.bucket))
12956e1b4d8207e9ae177111bc824877a780723287bChris Wren                .setPriority(NotificationCompat.PRIORITY_HIGH)
13056e1b4d8207e9ae177111bc824877a780723287bChris Wren                .addAction(R.drawable.ic_media_next,
13156e1b4d8207e9ae177111bc824877a780723287bChris Wren                        "update: " + update,
13256e1b4d8207e9ae177111bc824877a780723287bChris Wren                        UpdateService.getPendingIntent(context, update + 1, id, when))
13356e1b4d8207e9ae177111bc824877a780723287bChris Wren                .setSmallIcon(R.drawable.stat_notify_talk_text)
1340c599a55ac00df73a055831118a7d0c54a7c9f79Chris Wren                .setStyle(bigTextStyle)
1350c599a55ac00df73a055831118a7d0c54a7c9f79Chris Wren                .setDefaults(Notification.DEFAULT_SOUND)
1360c599a55ac00df73a055831118a7d0c54a7c9f79Chris Wren                .addPerson(personUri)
1370c599a55ac00df73a055831118a7d0c54a7c9f79Chris Wren                .build();
1380c599a55ac00df73a055831118a7d0c54a7c9f79Chris Wren        return bigText;
13956e1b4d8207e9ae177111bc824877a780723287bChris Wren    }
14056e1b4d8207e9ae177111bc824877a780723287bChris Wren
14156e1b4d8207e9ae177111bc824877a780723287bChris Wren    public static Notification makeUploadNotification(Context context, int progress, long when) {
14256e1b4d8207e9ae177111bc824877a780723287bChris Wren        NotificationCompat.Builder uploadNotification = new NotificationCompat.Builder(context)
14356e1b4d8207e9ae177111bc824877a780723287bChris Wren                .setContentTitle("File Upload")
14456e1b4d8207e9ae177111bc824877a780723287bChris Wren                .setContentText("foo.txt")
14556e1b4d8207e9ae177111bc824877a780723287bChris Wren                .setPriority(NotificationCompat.PRIORITY_MIN)
14656e1b4d8207e9ae177111bc824877a780723287bChris Wren                .setContentIntent(ToastService.getPendingIntent(context, "Clicked on Upload"))
14756e1b4d8207e9ae177111bc824877a780723287bChris Wren                .setWhen(when)
14856e1b4d8207e9ae177111bc824877a780723287bChris Wren                .setSmallIcon(R.drawable.ic_menu_upload)
14956e1b4d8207e9ae177111bc824877a780723287bChris Wren                .setProgress(100, Math.min(progress, 100), false);
15056e1b4d8207e9ae177111bc824877a780723287bChris Wren        return uploadNotification.build();
15156e1b4d8207e9ae177111bc824877a780723287bChris Wren    }
15256e1b4d8207e9ae177111bc824877a780723287bChris Wren
15356e1b4d8207e9ae177111bc824877a780723287bChris Wren    @Override
15456e1b4d8207e9ae177111bc824877a780723287bChris Wren    protected void onHandleIntent(Intent intent) {
15556e1b4d8207e9ae177111bc824877a780723287bChris Wren        ArrayList<Notification> mNotifications = new ArrayList<Notification>();
15656e1b4d8207e9ae177111bc824877a780723287bChris Wren        NotificationManager noMa =
15756e1b4d8207e9ae177111bc824877a780723287bChris Wren                (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
15856e1b4d8207e9ae177111bc824877a780723287bChris Wren
15956e1b4d8207e9ae177111bc824877a780723287bChris Wren        int bigtextId = mNotifications.size();
16056e1b4d8207e9ae177111bc824877a780723287bChris Wren        mNotifications.add(makeBigTextNotification(this, 0, bigtextId, System.currentTimeMillis()));
16156e1b4d8207e9ae177111bc824877a780723287bChris Wren
16256e1b4d8207e9ae177111bc824877a780723287bChris Wren        int uploadId = mNotifications.size();
16356e1b4d8207e9ae177111bc824877a780723287bChris Wren        long uploadWhen = System.currentTimeMillis();
16456e1b4d8207e9ae177111bc824877a780723287bChris Wren        mNotifications.add(makeUploadNotification(this, 10, uploadWhen));
16556e1b4d8207e9ae177111bc824877a780723287bChris Wren
1669bf14882a56bfd5e0bd415993da7d37d8b5c7eb6Chris Wren        int phoneId = mNotifications.size();
1679bf14882a56bfd5e0bd415993da7d37d8b5c7eb6Chris Wren        final PendingIntent fullscreenIntent = FullScreenActivity.getPendingIntent(this, phoneId);
168fcb0b151aa75dfe1545057f9b513fce14e4b0d44Chris Wren        Notification phoneCall = new NotificationCompat.Builder(this)
16956e1b4d8207e9ae177111bc824877a780723287bChris Wren                .setContentTitle("Incoming call")
17056e1b4d8207e9ae177111bc824877a780723287bChris Wren                .setContentText("Matias Duarte")
17156e1b4d8207e9ae177111bc824877a780723287bChris Wren                .setLargeIcon(getBitmap(this, R.drawable.matias_hed))
17256e1b4d8207e9ae177111bc824877a780723287bChris Wren                .setSmallIcon(R.drawable.stat_sys_phone_call)
17356e1b4d8207e9ae177111bc824877a780723287bChris Wren                .setPriority(NotificationCompat.PRIORITY_MAX)
1749bf14882a56bfd5e0bd415993da7d37d8b5c7eb6Chris Wren                .setContentIntent(fullscreenIntent)
1759bf14882a56bfd5e0bd415993da7d37d8b5c7eb6Chris Wren                .setFullScreenIntent(fullscreenIntent, true)
17656e1b4d8207e9ae177111bc824877a780723287bChris Wren                .addAction(R.drawable.ic_dial_action_call, "Answer",
1779bf14882a56bfd5e0bd415993da7d37d8b5c7eb6Chris Wren                        PhoneService.getPendingIntent(this, phoneId, PhoneService.ACTION_ANSWER))
17856e1b4d8207e9ae177111bc824877a780723287bChris Wren                .addAction(R.drawable.ic_end_call, "Ignore",
1799bf14882a56bfd5e0bd415993da7d37d8b5c7eb6Chris Wren                        PhoneService.getPendingIntent(this, phoneId, PhoneService.ACTION_IGNORE))
1809bf14882a56bfd5e0bd415993da7d37d8b5c7eb6Chris Wren                .setOngoing(true)
1810c599a55ac00df73a055831118a7d0c54a7c9f79Chris Wren                .addPerson(Uri.fromParts("tel", "1 (617) 555-1212", null).toString())
182fcb0b151aa75dfe1545057f9b513fce14e4b0d44Chris Wren                .build();
183fcb0b151aa75dfe1545057f9b513fce14e4b0d44Chris Wren        mNotifications.add(phoneCall);
18456e1b4d8207e9ae177111bc824877a780723287bChris Wren
18556e1b4d8207e9ae177111bc824877a780723287bChris Wren        mNotifications.add(new NotificationCompat.Builder(this)
18656e1b4d8207e9ae177111bc824877a780723287bChris Wren                .setContentTitle("Stopwatch PRO")
18756e1b4d8207e9ae177111bc824877a780723287bChris Wren                .setContentText("Counting up")
18856e1b4d8207e9ae177111bc824877a780723287bChris Wren                .setContentIntent(ToastService.getPendingIntent(this, "Clicked on Stopwatch"))
18956e1b4d8207e9ae177111bc824877a780723287bChris Wren                .setSmallIcon(R.drawable.stat_notify_alarm)
19056e1b4d8207e9ae177111bc824877a780723287bChris Wren                .setUsesChronometer(true)
19156e1b4d8207e9ae177111bc824877a780723287bChris Wren                .build());
19256e1b4d8207e9ae177111bc824877a780723287bChris Wren
19356e1b4d8207e9ae177111bc824877a780723287bChris Wren        mNotifications.add(new NotificationCompat.Builder(this)
19456e1b4d8207e9ae177111bc824877a780723287bChris Wren                .setContentTitle("J Planning")
19556e1b4d8207e9ae177111bc824877a780723287bChris Wren                .setContentText("The Botcave")
19656e1b4d8207e9ae177111bc824877a780723287bChris Wren                .setWhen(System.currentTimeMillis())
19756e1b4d8207e9ae177111bc824877a780723287bChris Wren                .setSmallIcon(R.drawable.stat_notify_calendar)
19856e1b4d8207e9ae177111bc824877a780723287bChris Wren                .setContentIntent(ToastService.getPendingIntent(this, "Clicked on calendar event"))
19956e1b4d8207e9ae177111bc824877a780723287bChris Wren                .setContentInfo("7PM")
20056e1b4d8207e9ae177111bc824877a780723287bChris Wren                .addAction(R.drawable.stat_notify_snooze, "+10 min",
20156e1b4d8207e9ae177111bc824877a780723287bChris Wren                        ToastService.getPendingIntent(this, "snoozed 10 min"))
20256e1b4d8207e9ae177111bc824877a780723287bChris Wren                .addAction(R.drawable.stat_notify_snooze_longer, "+1 hour",
20356e1b4d8207e9ae177111bc824877a780723287bChris Wren                        ToastService.getPendingIntent(this, "snoozed 1 hr"))
20456e1b4d8207e9ae177111bc824877a780723287bChris Wren                .addAction(R.drawable.stat_notify_email, "Email",
20556e1b4d8207e9ae177111bc824877a780723287bChris Wren                        makeEmailIntent(this,
20656e1b4d8207e9ae177111bc824877a780723287bChris Wren                                "gabec@example.com,mcleron@example.com,dsandler@example.com"))
20756e1b4d8207e9ae177111bc824877a780723287bChris Wren                .build());
20856e1b4d8207e9ae177111bc824877a780723287bChris Wren
20956e1b4d8207e9ae177111bc824877a780723287bChris Wren        BitmapDrawable d =
21056e1b4d8207e9ae177111bc824877a780723287bChris Wren                (BitmapDrawable) getResources().getDrawable(R.drawable.romainguy_rockaway);
21156e1b4d8207e9ae177111bc824877a780723287bChris Wren        mNotifications.add(new NotificationCompat.BigPictureStyle(
21256e1b4d8207e9ae177111bc824877a780723287bChris Wren                new NotificationCompat.Builder(this)
21356e1b4d8207e9ae177111bc824877a780723287bChris Wren                        .setContentTitle("Romain Guy")
21456e1b4d8207e9ae177111bc824877a780723287bChris Wren                        .setContentText("I was lucky to find a Canon 5D Mk III at a local Bay Area "
21556e1b4d8207e9ae177111bc824877a780723287bChris Wren                                + "store last week but I had not been able to try it in the field "
21656e1b4d8207e9ae177111bc824877a780723287bChris Wren                                + "until tonight. After a few days of rain the sky finally cleared "
21756e1b4d8207e9ae177111bc824877a780723287bChris Wren                                + "up. Rockaway Beach did not disappoint and I was finally able to "
21856e1b4d8207e9ae177111bc824877a780723287bChris Wren                                + "see what my new camera feels like when shooting landscapes.")
21956e1b4d8207e9ae177111bc824877a780723287bChris Wren                        .setSmallIcon(R.drawable.ic_stat_gplus)
22056e1b4d8207e9ae177111bc824877a780723287bChris Wren                        .setContentIntent(
22156e1b4d8207e9ae177111bc824877a780723287bChris Wren                                ToastService.getPendingIntent(this, "Clicked on bigPicture"))
22256e1b4d8207e9ae177111bc824877a780723287bChris Wren                        .setLargeIcon(getBitmap(this, R.drawable.romainguy_hed))
22356e1b4d8207e9ae177111bc824877a780723287bChris Wren                        .addAction(R.drawable.add, "Add to Gallery",
22456e1b4d8207e9ae177111bc824877a780723287bChris Wren                                ToastService.getPendingIntent(this, "added! (just kidding)"))
22556e1b4d8207e9ae177111bc824877a780723287bChris Wren                        .setSubText("talk rocks!"))
22656e1b4d8207e9ae177111bc824877a780723287bChris Wren                .bigPicture(d.getBitmap())
22756e1b4d8207e9ae177111bc824877a780723287bChris Wren                .build());
22856e1b4d8207e9ae177111bc824877a780723287bChris Wren
22956e1b4d8207e9ae177111bc824877a780723287bChris Wren        // Note: this may conflict with real email notifications
23056e1b4d8207e9ae177111bc824877a780723287bChris Wren        StyleSpan bold = new StyleSpan(Typeface.BOLD);
23156e1b4d8207e9ae177111bc824877a780723287bChris Wren        SpannableString line1 = new SpannableString("Alice: hey there!");
23256e1b4d8207e9ae177111bc824877a780723287bChris Wren        line1.setSpan(bold, 0, 5, 0);
23356e1b4d8207e9ae177111bc824877a780723287bChris Wren        SpannableString line2 = new SpannableString("Bob: hi there!");
23456e1b4d8207e9ae177111bc824877a780723287bChris Wren        line2.setSpan(bold, 0, 3, 0);
23556e1b4d8207e9ae177111bc824877a780723287bChris Wren        SpannableString line3 = new SpannableString("Charlie: Iz IN UR EMAILZ!!");
23656e1b4d8207e9ae177111bc824877a780723287bChris Wren        line3.setSpan(bold, 0, 7, 0);
23756e1b4d8207e9ae177111bc824877a780723287bChris Wren        mNotifications.add(new NotificationCompat.InboxStyle(
23856e1b4d8207e9ae177111bc824877a780723287bChris Wren                new NotificationCompat.Builder(this)
23956e1b4d8207e9ae177111bc824877a780723287bChris Wren                        .setContentTitle("24 new messages")
24056e1b4d8207e9ae177111bc824877a780723287bChris Wren                        .setContentText("You have mail!")
24156e1b4d8207e9ae177111bc824877a780723287bChris Wren                        .setSubText("test.hugo2@gmail.com")
24256e1b4d8207e9ae177111bc824877a780723287bChris Wren                        .setContentIntent(ToastService.getPendingIntent(this, "Clicked on Email"))
24356e1b4d8207e9ae177111bc824877a780723287bChris Wren                        .setSmallIcon(R.drawable.stat_notify_email))
24456e1b4d8207e9ae177111bc824877a780723287bChris Wren                .setSummaryText("+21 more")
24556e1b4d8207e9ae177111bc824877a780723287bChris Wren                .addLine(line1)
24656e1b4d8207e9ae177111bc824877a780723287bChris Wren                .addLine(line2)
24756e1b4d8207e9ae177111bc824877a780723287bChris Wren                .addLine(line3)
24856e1b4d8207e9ae177111bc824877a780723287bChris Wren                .build());
24956e1b4d8207e9ae177111bc824877a780723287bChris Wren
25056e1b4d8207e9ae177111bc824877a780723287bChris Wren        mNotifications.add(new NotificationCompat.Builder(this)
25156e1b4d8207e9ae177111bc824877a780723287bChris Wren                .setContentTitle("Twitter")
25256e1b4d8207e9ae177111bc824877a780723287bChris Wren                .setContentText("New mentions")
25356e1b4d8207e9ae177111bc824877a780723287bChris Wren                .setContentIntent(ToastService.getPendingIntent(this, "Clicked on Twitter"))
25456e1b4d8207e9ae177111bc824877a780723287bChris Wren                .setSmallIcon(R.drawable.twitter_icon)
25556e1b4d8207e9ae177111bc824877a780723287bChris Wren                .setNumber(15)
25656e1b4d8207e9ae177111bc824877a780723287bChris Wren                .setPriority(NotificationCompat.PRIORITY_LOW)
25756e1b4d8207e9ae177111bc824877a780723287bChris Wren                .build());
25856e1b4d8207e9ae177111bc824877a780723287bChris Wren
25956e1b4d8207e9ae177111bc824877a780723287bChris Wren
26056e1b4d8207e9ae177111bc824877a780723287bChris Wren        for (int i=0; i<mNotifications.size(); i++) {
26156e1b4d8207e9ae177111bc824877a780723287bChris Wren            noMa.notify(NOTIFICATION_ID + i, mNotifications.get(i));
26256e1b4d8207e9ae177111bc824877a780723287bChris Wren        }
26356e1b4d8207e9ae177111bc824877a780723287bChris Wren
26456e1b4d8207e9ae177111bc824877a780723287bChris Wren        ProgressService.startProgressUpdater(this, uploadId, uploadWhen, 0);
26556e1b4d8207e9ae177111bc824877a780723287bChris Wren    }
26656e1b4d8207e9ae177111bc824877a780723287bChris Wren}
267