package com.yidianling.avchatkit.teamavchat; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import androidx.core.app.NotificationCompat; import com.yidianling.avchatkit.AVChatKit; import com.yidianling.im.R; import com.yidianling.avchatkit.teamavchat.activity.TeamAVChatActivity; /** * 群视频聊天通知栏 */ public class TeamAVChatNotification { private Context context; private NotificationManager notificationManager; private Notification callingNotification; private String tid; private String displayName; private static final int CALLING_NOTIFY_ID = 111; public TeamAVChatNotification(Context context) { this.context = context; } public void init(String tid, String teamName) { this.tid = tid; this.displayName = teamName; notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); } private void buildCallingNotification() { if (callingNotification == null) { Intent localIntent = new Intent(); localIntent.setClass(context, TeamAVChatActivity.class); localIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); String tickerText = String.format(context.getString(R.string.im_avchat_notification), displayName); int iconId = AVChatKit.getAvChatOptions().notificationIconRes; PendingIntent pendingIntent = PendingIntent.getActivity(context, CALLING_NOTIFY_ID, localIntent, PendingIntent .FLAG_UPDATE_CURRENT); callingNotification = makeNotification(pendingIntent, context.getString(R.string.im_avchat_call), tickerText, tickerText, iconId, false, false); callingNotification.flags |= Notification.FLAG_NO_CLEAR; } } private Notification makeNotification(PendingIntent pendingIntent, String title, String content, String tickerText, int iconId, boolean ring, boolean vibrate) { NotificationCompat.Builder builder = new NotificationCompat.Builder(context); builder.setContentTitle(title) .setContentText(content) .setTicker(content) .setAutoCancel(true) .setContentIntent(pendingIntent) .setTicker(tickerText) .setLargeIcon(largeIconId()) .setSmallIcon(iconId); int defaults = Notification.DEFAULT_LIGHTS; if (vibrate) { defaults |= Notification.DEFAULT_VIBRATE; } if (ring) { defaults |= Notification.DEFAULT_SOUND; } builder.setDefaults(defaults); return builder.build(); } private Bitmap largeIconId() { PackageManager pm = context.getPackageManager(); Drawable drawable = context.getApplicationInfo().loadIcon(pm); if (drawable == null) { return null; } if (drawable instanceof BitmapDrawable) { return ((BitmapDrawable) drawable).getBitmap(); } else { return null; } } public void activeCallingNotification(boolean active) { if (notificationManager != null) { if (active) { buildCallingNotification(); notificationManager.notify(CALLING_NOTIFY_ID, callingNotification); AVChatKit.getNotifications().put(CALLING_NOTIFY_ID, callingNotification); } else { notificationManager.cancel(CALLING_NOTIFY_ID); AVChatKit.getNotifications().remove(CALLING_NOTIFY_ID); } } } }