android – GCM推送通知大图标大小

前端之家收集整理的这篇文章主要介绍了android – GCM推送通知大图标大小前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
嗨,Iam使用GCM在 Android中实现推送通知.我正在尝试为通知设置图像,而不是默认的应用程序图标.我可以使用以下代码来实现这一点
if(extras.getString("src") != null){
            URL url = new URL(extras.getString("src"));
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setDoInput(true);
            connection.connect();
            InputStream input = connection.getInputStream();
            Bitmap large_icon = BitmapFactory.decodeStream(input);
            mBuilder.setLargeIcon(large_icon);
        }

通常,图像将来自网页(jpg,png等),而不是设备中的内容.上面的代码工作,但图像太大或太小.我想知道位图的最佳尺寸或宽高比,以便我可以提供适当的图像

解决方法

我有同样的问题.这是我如何解决的:

首先,您需要知道通知图标的最大尺寸,具体取决于设备分辨率.搜索,我发现这个:

> ldpi:48×48 px * 0.75
> mdpi:64×64 px * 1.00
> hdpi:96×96 px * 1.50
> xhdpi:128×128 px * 2.00
> xxhdpi:192×192 px * 3.00

有两种方法

>一个在服务器中具有这些维度的一组图像,并根据您的设备分辨率获得它们.
>另一个在服务器中具有较大的图像,并根据您的设备分辨率在应用程序中调整其大小.

我会向你解释我实施的第二个.

首先从URL获取图像我使用它:

public Bitmap getBitmapFromURL(String strURL) {
    try {
        URL url = new URL(strURL);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setDoInput(true);
        connection.connect();
        InputStream input = connection.getInputStream();
        Bitmap myBitmap = BitmapFactory.decodeStream(input);
        return myBitmap;
    } catch (IOException e) {
        e.printStackTrace();
        return null;
    }
}

然后我需要知道新图像大小的因素.我知道在服务器上我的xxhdpi图像的因子为* 3.00,我用它来获得全局因子:

public static float getImageFactor(Resources r){
      DisplayMetrics metrics = r.getDisplayMetrics();
      float multiplier=metrics.density/3f;
      return multiplier;
  }

现在我必须调整图像大小,并在通知图标中设置新的位图:

Bitmap bmURL=getBitmapFromURL(largeIcon);
float multiplier= getImageFactor(getResources());
bmURL=Bitmap.createScaledBitmap(bmURL,(int)(bmURL.getWidth()*multiplier),(int)(bmURL.getHeight()*multiplier),false);
if(bmURL!=null){
    mBuilder.setLargeIcon(bmURL);
}

这工作对我来说我希望你能使用它.

猜你在找的Android相关文章