Facile à utiliser Picasso dans la notification (icône)
Je suis à la recherche d'un moyen facile d'utiliser Picasso pour charger un noticiation icône (qui est une URL sur une page web). Dans une version précédente de l'application que je suis en train de travailler sur ce code semble fonctionner:
Bitmap speakerPic = null;
try {
speakerPic = new AsyncTask<Void, Void, Bitmap>() {
@Override
protected Bitmap doInBackground(Void... params) {
try {
return Picasso.with(c).load(session.getSpeaker().getPhotoUrl()).get();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}.execute().get(1500, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
} catch (TimeoutException e) {
e.printStackTrace();
}
if (speakerPic != null) {
builder.setLargeIcon(speakerPic);
} else {
builder.setLargeIcon(BitmapFactory.decodeResource(c.getResources(), R.drawable.ic_launcher));
}
Mais maintenant j'ai un TimeOutException à chaque fois (et j'en repli à un icône par défaut dans mon dossier res). J'ai utiliser cette AsyncTask parce que Picasso (/réseau) ne peut pas arriver sur le thread d'INTERFACE utilisateur. (même si je suis bloque le thread d'INTERFACE utilisateur de 1,5 sec ici..).
Je sais Picasso peut gérer remoteviews, mais je ne veux pas utiliser un affichage personnalisé pour mon notificiation. Aussi je ne pouvais pas trouver un moyen d'obtenir la RemoteView pour la NoticifationIcon.
Est-il un moyen de définir l'icône de ma notification simplement à l'aide de Picasso?
- Hey Pieter, avez-vous trouvé cela?
- oui, voir ma réponse ci-dessous: stackoverflow.com/a/33670047/1534666
- Merci Pierre!
Vous devez vous connecter pour publier un commentaire.
Je vais répondre à la question moi-même car j'ai trouvé une manière décente, à l'aide de Picasso et RemoteViews. Testé et de travail avec Picasso 2.5.2 :
Ne sais pas pourquoi ton code ne fonctionne pas, mais sa compilation bien pour moi, testé sur des API de niveau 21 et Android Studio.
J'ai fait quelques modifications pour l'adapter à mes besoins, par exemple, a supprimé le temps de retard.
Les seules différences notables est le dessous de sortie dans mon logcat:
ce qui est normal, basée sur les liens: cette et cette
Et mis à jour mon code est:
Je suggère la manière la plus simple d'intégrer une distance de l'image à l'intérieur de votre notification de grande icône avec Picasso.
Si vous ne voulez pas attendre jusqu'à ce que Picasso extrait de l'image avant l'envoi de la notification, une solution est d'envoyer la notification deux fois avec le même id, de sorte que le
NotificationManager
sera mise à jour de la notification de la deuxième fois, c'est envoyé.Dans la pratique, la première fois, l'utilisation d'un espace réservé pour
setLargeIcon()
, et la deuxième fois, utilisez laBitmap
vous avez obtenu à partir d'un PicassoTarget
.Par exemple, à partir de votre
Activity
:Depuis Picasso aurez besoin pour accéder à internet, n'oubliez pas de mettre le droit l'autorisation dans votre manifeste pour que cela fonctionne:
Chargement de l'Image de code à l'aide de Picaso 2.5.2 commence au moyen de cette méthode,outre le fait que toutes les choses est simple code de notification, il suffit de copier et coller ,remplacer "image_url" avec l'url de l'image actuelle.