package com.ptrprograms.notificationscustomlayout;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.os.IBinder;
import android.support.v4.app.NotificationCompat;
import android.widget.RemoteViews;
/**
* Created by PaulTR on 4/27/14.
*/
public class CustomNotificationService extends Service {
public static final String ACTION_NOTIFICATION_PLAY_PAUSE = "action_notification_play_pause";
public static final String ACTION_NOTIFICATION_FAST_FORWARD = "action_notification_fast_forward";
public static final String ACTION_NOTIFICATION_REWIND = "action_notification_rewind";
private boolean mIsPlaying = false;
@Override
public IBinder onBind(Intent intent) {
return null;
}
private void handleIntent( Intent intent ) {
if( intent != null && intent.getAction() != null ) {
if( intent.getAction().equalsIgnoreCase( ACTION_NOTIFICATION_PLAY_PAUSE ) ) {
mIsPlaying = !mIsPlaying;
showNotification(mIsPlaying);
} else if( intent.getAction().equalsIgnoreCase( ACTION_NOTIFICATION_FAST_FORWARD ) ) {
//fast forward function
} else if( intent.getAction().equalsIgnoreCase( ACTION_NOTIFICATION_REWIND ) ) {
//rewind action
}
}
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
handleIntent( intent );
return super.onStartCommand(intent, flags, startId);
}
private void showNotification( boolean isPlaying ) {
Notification notification = new NotificationCompat.Builder( getApplicationContext() )
.setAutoCancel( true )
.setSmallIcon( R.drawable.ic_launcher )
.setContentTitle( getString( R.string.app_name ) )
.build();
if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN )
notification.bigContentView = getExpandedView( isPlaying );
NotificationManager manager = (NotificationManager) getSystemService( Context.NOTIFICATION_SERVICE );
manager.notify( 1, notification );
}
private RemoteViews getExpandedView( boolean isPlaying ) {
RemoteViews customView = new RemoteViews( getPackageName(), R.layout.view_notification );
customView.setImageViewResource( R.id.large_icon, R.drawable.ic_launcher );
customView.setImageViewResource( R.id.ib_rewind, R.drawable.ic_rewind );
if( isPlaying )
customView.setImageViewResource( R.id.ib_play_pause, R.drawable.ic_pause );
else
customView.setImageViewResource( R.id.ib_play_pause, R.drawable.ic_play );
customView.setImageViewResource( R.id.ib_fast_forward, R.drawable.ic_fast_forward );
Intent intent = new Intent( getApplicationContext(), CustomNotificationService.class );
intent.setAction( ACTION_NOTIFICATION_PLAY_PAUSE );
PendingIntent pendingIntent = PendingIntent.getService( getApplicationContext(), 1, intent, 0 );
customView.setOnClickPendingIntent( R.id.ib_play_pause, pendingIntent );
intent.setAction( ACTION_NOTIFICATION_FAST_FORWARD );
pendingIntent = PendingIntent.getService( getApplicationContext(), 1, intent, 0 );
customView.setOnClickPendingIntent( R.id.ib_fast_forward, pendingIntent );
intent.setAction( ACTION_NOTIFICATION_REWIND );
pendingIntent = PendingIntent.getService( getApplicationContext(), 1, intent, 0 );
customView.setOnClickPendingIntent( R.id.ib_rewind, pendingIntent );
return customView;
}
}