com.android.talkbacktests.testsession.NotificationTest.java Source code

Java tutorial

Introduction

Here is the source code for com.android.talkbacktests.testsession.NotificationTest.java

Source

/*
 * Copyright (C) 2016 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */

package com.android.talkbacktests.testsession;

import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.TaskStackBuilder;
import android.content.Context;
import android.content.Intent;
import android.media.RingtoneManager;
import android.support.v4.app.NotificationCompat;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.RemoteViews;

import com.android.talkbacktests.MainActivity;
import com.android.talkbacktests.R;

public class NotificationTest extends BaseTestContent implements View.OnClickListener {

    private final static int NOTIFICATION_ID_MAIN_MENU = 123543623;
    private final static int NOTIFICATION_ID_LAST_VIEW = 124543642;

    public NotificationTest(Context context, String subtitle, String description) {
        super(context, subtitle, description);
    }

    @Override
    public View getView(final LayoutInflater inflater, ViewGroup container, Context context) {
        View view = inflater.inflate(R.layout.test_notification, container, false);
        view.findViewById(R.id.test_notification_button1).setOnClickListener(this);
        view.findViewById(R.id.test_notification_button2).setOnClickListener(this);
        view.findViewById(R.id.test_notification_button3).setOnClickListener(this);
        view.findViewById(R.id.test_notification_button_ticker).setOnClickListener(this);

        return view;
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case (R.id.test_notification_button1):
            showSimpleNotification();
            break;
        case (R.id.test_notification_button2):
            showCustomNotification();
            break;
        case (R.id.test_notification_button3):
            cancelNotifications();
            break;
        case (R.id.test_notification_button_ticker):
            showTickerNotification();
            break;
        default:
            // Do nothing.
        }
    }

    private void showSimpleNotification() {
        NotificationCompat.Builder builder = new NotificationCompat.Builder(getContext())
                .setSmallIcon(android.R.drawable.ic_notification_overlay).setAutoCancel(true)
                .setContentTitle(getString(R.string.normal_notification_title))
                .setContentText(getString(R.string.normal_notification_text))
                .setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));

        TaskStackBuilder stackBuilder = TaskStackBuilder.create(getContext());
        stackBuilder.addParentStack(MainActivity.class);

        Intent resultIntent = new Intent(getContext(), MainActivity.class);
        stackBuilder.addNextIntent(resultIntent);

        PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
        builder.setContentIntent(resultPendingIntent);

        NotificationManager notificationManager = (NotificationManager) getContext()
                .getSystemService(Context.NOTIFICATION_SERVICE);
        notificationManager.notify(NOTIFICATION_ID_MAIN_MENU, builder.build());
    }

    private void showTickerNotification() {
        NotificationCompat.Builder builder = new NotificationCompat.Builder(getContext())
                .setSmallIcon(android.R.drawable.stat_notify_more).setAutoCancel(true)
                .setContentTitle(getString(R.string.ticker_notification_title))
                .setContentText(getString(R.string.ticker_notification_text))
                .setTicker(getString(R.string.ticker_notification_ticker))
                .setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));

        NotificationManager notificationManager = (NotificationManager) getContext()
                .getSystemService(Context.NOTIFICATION_SERVICE);
        notificationManager.notify(NOTIFICATION_ID_MAIN_MENU, builder.build());
    }

    private void showCustomNotification() {
        NotificationCompat.Builder builder = new NotificationCompat.Builder(getContext()).setAutoCancel(true)
                .setSmallIcon(android.R.drawable.ic_notification_overlay)
                .setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));

        RemoteViews contentView = new RemoteViews(getContext().getPackageName(), R.layout.custom_notification);
        contentView.setImageViewResource(R.id.notification_image, android.R.drawable.ic_dialog_email);
        contentView.setTextViewText(R.id.notification_title, getString(R.string.custom_notification_title));
        contentView.setTextViewText(R.id.notification_text, getString(R.string.custom_notification_text));
        builder.setContent(contentView);

        Intent resultIntent = new Intent(getContext(), MainActivity.class);
        resultIntent.setAction(Intent.ACTION_MAIN);
        resultIntent.addCategory(Intent.CATEGORY_LAUNCHER);

        PendingIntent pendingIntent = PendingIntent.getActivity(getContext(), 0, resultIntent, 0);
        builder.setContentIntent(pendingIntent);

        NotificationManager notificationManager = (NotificationManager) getContext()
                .getSystemService(Context.NOTIFICATION_SERVICE);
        notificationManager.notify(NOTIFICATION_ID_LAST_VIEW, builder.build());
    }

    private void cancelNotifications() {
        NotificationManager notificationManager = (NotificationManager) getContext()
                .getSystemService(Context.NOTIFICATION_SERVICE);
        notificationManager.cancelAll();
    }
}