Je me demande pourquoi la méthode setLargeIcon sur Notification.Builder n'accepte qu'un Bitmap, sans surcharge pour fournir un identifiant de ressource. Peut-être que cela a été fait pour des raisons de performances, mais cela semble étrange car setSmallIcon accepte un identifiant res drawable.
Notification.Builder builder = new Notification.Builder(application);
// ....
builder.setLargeIcon(iconBitmap); // Requires a Bitmap
builder.setSmallIcon(iconResId); // Requires a drawable resource ID
Notification notification = builder.getNotification();
Malheureusement, le bitmap fourni n'est pas mis à l'échelle dans la notification, le Bitmap doit donc être fourni exactement à la bonne taille pour la vue de notification.
En supposant que je doive fournir des versions xhdpi, hdpi, mdpi et ldpi du bitmap largeIcon, quelles tailles doivent-elles être? Je ne vois aucune mention dans les documents, ou après avoir parcouru le Web au sens large.
Je n'ai pas encore eu l'occasion de le vérifier, mais l'API 11 a introduit les dimens publics suivants:
Devrait pouvoir les utiliser pour mettre à l'échelle votre image avant de la définir sur la notification.
J'ai utilisé dimensions de la grande icône de la notification pour créer une image bitmap mise à l'échelle
BitmapDrawable contactPicDrawable = (BitmapDrawable) ContactsUtils.getContactPic(mContext, contactId);
Bitmap contactPic = contactPicDrawable.getBitmap();
Resources res = mContext.getResources();
int height = (int) res.getDimension(Android.R.dimen.notification_large_icon_height);
int width = (int) res.getDimension(Android.R.dimen.notification_large_icon_width);
contactPic = Bitmap.createScaledBitmap(contactPic, width, height, false);
Et puis j'ai mis la grande icône avec ce bitamp à l'échelle.