Einfachste Weg, verwenden Picasso in-Anzeige (Symbol)
Ich bin auf der Suche nach eine einfache Möglichkeit zur Verwendung von Picasso zu laden, noticiation-Symbol (das ist eine URL auf einem remote-Webseite). In einer früheren version der app, die ich bin zu arbeiten auf dieser code scheint zu funktionieren:
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));
}
Aber jetzt bekomme ich eine TimeOutException jeder Zeit (und ich als fallback ein Standard-icon in meinen res-Ordner). Ich habe die Verwendung dieser AsyncTask, weil Picasso (/network) kann nicht passieren, die auf dem UI-thread. (ich bin zwar die Blockierung der UI-thread für 1.5 sec hier..).
Ich weiß, Picasso verarbeiten kann remoteviews, aber ich will nicht verwenden Sie eine benutzerdefinierte Ansicht für meine notificiation. Auch ich konnte nicht einen Weg finden, um die RemoteView für die NoticifationIcon.
Gibt es eine Möglichkeit, um das Symbol meiner Meldung einfach mit Picasso?
- Hey Pieter, hast du das herausgefunden?
- ja, siehe meine Antwort hier unten: stackoverflow.com/a/33670047/1534666
- Danke Pieter!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich beantworte dir die Frage selbst, weil ich gefunden habe, eine anständige Weise, über Picasso und RemoteViews. Getestet und arbeiten mit Picasso 2.5.2 :
Nicht sicher, warum dein code nicht funktioniert, aber seine Zusammenstellung gut für mich, getestet auf API-level 21 und Android Studio.
Habe ich ein paar änderungen an meine Bedürfnisse anzupassen, z.B. entfernt die Zeitverzögerung.
Der einzige auffällige Unterschiede ist die unten Ausgabe in meinem logcat:
was normal ist, basierend auf den links: diese und diese
Und meine aktuelle code ist:
Schlage ich vor, ein einfachste Weg, zu integrieren, ein remote-Bild in Ihrer Mitteilung als großes Symbol mit Picasso.
Wenn Sie nicht möchten, zu warten, bis Picasso holt das Bild vor dem senden der Benachrichtigung, ist eine Lösung zum senden der Benachrichtigung zweimal mit der gleichen id, so dass die
NotificationManager
wird ein update der vorhandenen Benachrichtigung das zweite mal gesendet.In der Praxis, das erste mal, verwenden Sie einen Platzhalter für
setLargeIcon()
, und das zweite mal, verwenden Sie dieBitmap
Sie habe von einem PicassoTarget
.Beispielsweise von Ihrem
Activity
:Seit Picasso, wird auf das internet zugreifen müssen, vergessen Sie nicht die richtigen Berechtigungen in Ihrem manifest für diese Arbeit:
Bild-code zum laden mit Picaso 2.5.2 startet in der Mitte dieser Methode,außer, dass das ganze Zeug ist simple notification-code, einfach kopieren und einfügen ,ersetzen Sie "Image: URL", die mit den tatsächlichen Bild-url.