Java tutorial
/* * Copyright (C) 2014 Pedro Vicente Gmez Snchez. * * 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.github.pedrovgs.tuentitv.recommendation.builder; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; import android.graphics.Bitmap; import android.os.Bundle; import android.support.v4.app.NotificationCompat; import com.github.pedrovgs.tuentitv.R; import com.squareup.picasso.Picasso; import java.io.IOException; import javax.inject.Inject; /** * Builder created to show Android TV notifications. Main collaborator of this class is * NotificationManager and NotificationCompat notifications configured in recommendation mode to * show notifications in the Android TV dashboard. */ public class RecommendationBuilder { private Context context; private NotificationManager notificationManager; private int id; private int priority; private int smallIcon; private String title; private String description; private String imageUri; private String backgroundUri; private PendingIntent pendingIntent; @Inject public RecommendationBuilder() { //Empty } public RecommendationBuilder setContext(Context context) { this.context = context; return this; } public RecommendationBuilder setId(int id) { this.id = id; return this; } public RecommendationBuilder setPriority(int priority) { this.priority = priority; return this; } public RecommendationBuilder setTitle(String title) { this.title = title; return this; } public RecommendationBuilder setDescription(String description) { this.description = description; return this; } public RecommendationBuilder setImage(String uri) { imageUri = uri; return this; } public RecommendationBuilder setBackground(String uri) { backgroundUri = uri; return this; } public RecommendationBuilder setIntent(PendingIntent intent) { pendingIntent = intent; return this; } public RecommendationBuilder setSmallIcon(int resourceId) { smallIcon = resourceId; return this; } public Notification build() throws IOException { if (notificationManager == null) { notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); } Bundle extras = new Bundle(); if (backgroundUri != null) { extras.putString(Notification.EXTRA_BACKGROUND_IMAGE_URI, backgroundUri); } Bitmap image = Picasso.with(context).load(imageUri).get(); Notification notification = new NotificationCompat.BigPictureStyle(new NotificationCompat.Builder(context) .setContentTitle(title).setContentText(description).setPriority(priority).setLocalOnly(true) .setOngoing(true).setColor(context.getResources().getColor(R.color.primary_color)) .setCategory(Notification.CATEGORY_RECOMMENDATION).setLargeIcon(image).setSmallIcon(smallIcon) .setContentIntent(pendingIntent).setExtras(extras)).build(); notificationManager.notify(id, notification); notificationManager = null; return notification; } }