我正在使用GCM推送通知。 在一些通知中我推文字和图像组合。但我需要在用户点击通知后才显示图像,否则我应该提供该图像的缩略图应作为该通知的一部分显示。 为此,我应该在哪里更改我的代码。在GCM Server或Android app方面。?
以下是我正在做的将Base64字符串转换为位图的代码。我需要的是这个图像的缩略图通知。如果任何可以生成图像缩略图的代码就足够了。
GCM侦听服务。
@Override
public void onMessageReceived(String from, Bundle data) {
String message = data.getString("SERVER_MESSAGE");
String imageBitMap= data.getString("IMAGE_BITMAP");
jsonObject.put("Message", message);
jsonObject.put("ImageBitMap",decodeImage(imageBitMap));
sendNotification(jsonObject);
}
/**
* Decode a base64 string into a Bitmap
*/
private static Bitmap decodeImage(String image_data) {
// Decode the encoded string into largeIcon
Bitmap largeIcon = null;
if ((image_data != null) && (!image_data.equals(""))) {
byte[] decodedImage = Base64.decode(image_data, Base64.DEFAULT);
if (decodedImage != null) {
largeIcon = BitmapFactory.decodeByteArray(decodedImage
, 0
, decodedImage.length);
}
}
return largeIcon;
}
//Notification of Image
private void sendNotification(JSONObject jsonObject) {
String message= null;
Bitmap bitmap=null;
try {
message = jsonObject.getString("Message");
bitmap= (Bitmap) jsonObject.get("ImageBitMap");
} catch (JSONException e) {
e.printStackTrace();
}
Intent intent = new Intent(this, ManualTestActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, REQ_CODE, intent,
PendingIntent.FLAG_ONE_SHOT);
Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(getNotificationIcon())
.setContentTitle("GCM")
.setContentText(message)
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setContentIntent(pendingIntent)
.setStyle(new NotificationCompat.BigPictureStyle()
.bigPicture(bitmap));
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(NOTF_ID, notificationBuilder.build());
}
我已经使用了另一种方法,其中传递了图像URL,并且在下载完成后我将在后台下载图像,我正在生成通知。对于我需要生成图像缩略图的方法。