package com.konka.music.util; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.app.Service; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.support.v4.app.NotificationCompat; import android.support.v4.app.TaskStackBuilder; import android.text.TextUtils; import android.widget.RemoteViews; import com.konka.music.R; import com.konka.music.pojo.MusicInfo; import com.konka.music.service.MusicService; import com.konka.music.ui.activity.MainActivity; public class NotificationUtil extends BroadcastReceiver { public final int NOTIF_CONNECTED = 3; public NotificationManager manager; public Notification notification; public NotificationUtil(Service mContext) { RemoteViews contentView_dif = new RemoteViews(mContext.getPackageName(), R.layout.statusbar); contentView_dif.setOnClickPendingIntent(R.id.statusbar_super_content_next_btn, getPendingIntent(mContext, Assist.SERVICE_ACTION_NEXT)); contentView_dif.setOnClickPendingIntent(R.id.statusbar_super_content_pause_or_play, getPendingIntent(mContext, Assist.SERVICE_ACTION_PLAY_OR_PAUSE)); contentView_dif.setOnClickPendingIntent(R.id.statusbar_super_content_close_btn, getPendingIntent(mContext, Assist.SERVICE_ACTION_CLOSE)); NotificationCompat.Builder builder = new NotificationCompat.Builder(mContext); TaskStackBuilder stackBuilder = TaskStackBuilder.create(mContext); stackBuilder.addNextIntentWithParentStack(new Intent(mContext, MainActivity.class)); PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(NOTIF_CONNECTED, PendingIntent.FLAG_UPDATE_CURRENT); builder.setAutoCancel(false); builder.setContentIntent(resultPendingIntent);// builder.setSmallIcon(R.drawable.statusbar_logo_small);// builder.setSmallIcon(R.drawable.ic_launcher); notification = builder.build(); notification.flags |= Notification.FLAG_ONGOING_EVENT; notification.contentView = contentView_dif; manager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE); } public void show(MusicInfo musicInfo) { if (musicInfo != null) { notification.contentView.setTextViewText(R.id.statusbar_track_name, musicInfo.getTitle()); notification.tickerText = musicInfo.getTitle(); } manager.notify(NOTIF_CONNECTED, notification); } private PendingIntent getPendingIntent(Context mContext, String action) { Intent intent = new Intent(mContext, MusicService.class); intent.setAction(action); PendingIntent next = PendingIntent.getService(mContext, 0, intent, 0); return next; } public void cancelNotification() { manager.cancelAll(); notification.contentView=null; notification=null; manager=null; } @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (TextUtils.isEmpty(action)) { return; } switch (action) { case Assist.BROADCAST_ACTION_PLAY: updataNotifi(R.drawable.statusbar_btn_pause); break; case Assist.BROADCAST_ACTION_NEXT: break; case Assist.BROADCAST_ACTION_PAUSE: updataNotifi(R.drawable.statusbar_btn_play); break; case Assist.BROADCAST_ACTION_PREV: break; default: break; } manager.notify(NOTIF_CONNECTED, notification); } private void updataNotifi(int resId){ notification.contentView.setImageViewResource(R.id.statusbar_super_content_pause_or_play,resId); } }