Here is the problem.
I am currently working on an application that must provide :
A Radio Player (AAC live streaming from an url) And a PodCast player (MP3 Streaming from an url)
The application must be able to run in background (Android Service) and be exposed to the user with a persistant notification in the Notification Bar (Android Foreground Service)
(ONE problem per question so here i'll be asking for the notification)
Since i have several class for managing players, i though creating a generic class for the noticication would be a good idea. Here is the kind of view i would like to create :
.
Here is my notification class for now :
public class StreamingNotification extends NotificationCompat {
/**
* PRIVATE ATTRIBUTES
*/
// log
private static final String TAG = StreamingNotification.class.getSimpleName();
// notification
private NotificationManager _notificationManager;
private NotificationCompat.Builder _builder = null;
private Notification _notification;
// data
public static final int NOTIFICATION_ID = 1;
private Class _notifActivity;
private Context _context;
private String _notifTitle;
private String _notifText;
private int _notifLayout;
public StreamingNotification(String _notifActivity, Context _context, String _notifTitle, String _notifText, int _notifLayout) {
super();
try {
this._notifActivity = Class.forName(_notifActivity);
}
catch (ClassNotFoundException e) {
e.printStackTrace();
}
this._context = _context;
this._notifTitle = _notifTitle;
this._notifText = _notifText;
this._notifLayout = _notifLayout;
// manager
_notificationManager = (NotificationManager)_context.getSystemService(Context.NOTIFICATION_SERVICE);
// notif builder
_builder = new NotificationCompat.Builder(_context);
buildSimpleNotification();
}
private void buildSimpleNotification() {
// notif intent
final Intent notificationIntent = new Intent(_context, _notifActivity);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
// remote view
RemoteViews contentView = new RemoteViews(_context.getPackageName(), _notifLayout);
// pending intent
final PendingIntent contentIntent = PendingIntent.getActivity(_context, NOTIFICATION_ID, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
_builder.setContentIntent(contentIntent).setContent(contentView).setOngoing(true).setWhen(System.currentTimeMillis()).setAutoCancel(false).setContentTitle(_notifTitle)
.setContentText(_notifText);
// notification build
_notification = _builder.getNotification();
_notification.flags |= Notification.FLAG_ONGOING_EVENT | Notification.FLAG_FOREGROUND_SERVICE | Notification.FLAG_NO_CLEAR;
_notificationManager.notify(NOTIFICATION_ID, _notification);
}
[GETTERS AND SETTERS]
}
Am I doing it right ? How would you manage a RemoteViews custom notification ?