gpt4 book ai didi

android - 如何从 Imageview 设置通知图标

转载 作者:行者123 更新时间:2023-11-29 15:55:06 25 4
gpt4 key购买 nike

大家好,我正在尝试在我的应用程序中实现通知。问题是,如果可能的话,我希望每个通知都有从 ImageView 中截取的特定图像。

documentationsetSmallIcon() 方法只能将 int resId 作为参数,我必须使用 setLargeIcon() 方法。如何将来自 URL 的图像转换为位图?

已经尝试过:

Bitmap bmp = BitmapFactory.decodeFile(getIntent().getStringExtra("stockImage"));
builder.setLargeIcon(bmp);

它给我这个错误:

02-15 11:34:34.576    1615-1615/com.kostas.stockpredictions E/BitmapFactory﹕ Unable to decode stream: java.io.FileNotFoundException: http:/www.chatapp.info/myProject/images/ALPHA.png: open failed: ENOENT (No such file or directory)

我使用 Ion 库将此 url 设置到 Imageview 中,如下所示:

iv = (ImageView)findViewById(R.id.currentStockImageViewItem);
Ion.with(iv).placeholder(R.drawable.ic_chat).error(R.drawable.ic_chat).load(i.getStringExtra("stockImage"));

编辑:

class GetBitmapUrl extends AsyncTask<String, Void, Bitmap>{

@Override
protected Bitmap doInBackground(String... params) {
try {
URL url = new URL(params[0]);
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;
}
}



@Override
protected void onPostExecute(Bitmap result) {
builder.setLargeIcon(result);
}
}

public void getBitmap(){
GetBitmapUrl task = new GetBitmapUrl();
task.execute(getIntent().getStringExtra("stockImage"));
}

我在这里调用这个方法:

Button notify = (Button)findViewById(R.id.buttonNotify);
notify.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
builder = new NotificationCompat.Builder(StockItem.this);
builder.setContentTitle(name);
builder.setContentText(getString(R.string.notifyText) + " " + new DecimalFormat("###.##").format(avg));
builder.setWhen(System.currentTimeMillis());
getBitmap();
//builder.setSmallIcon(R.drawable.ic_launcher_stock_custom_icon);
builder.setTicker(getString(R.string.notifyTicker));
builder.setSound(Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE
+ "://" + getPackageName() + "/raw/carme"));
builder.setDefaults(NotificationCompat.DEFAULT_LIGHTS | NotificationCompat.DEFAULT_VIBRATE);
builder.setAutoCancel(true);
Intent intent = new Intent(StockItem.this, ListLoaderActivity.class);
TaskStackBuilder taskStackBuilder = TaskStackBuilder.create(StockItem.this);

taskStackBuilder.addNextIntent(intent);
taskStackBuilder.addParentStack(ListLoaderActivity.class);

PendingIntent pendingIntent = taskStackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(pendingIntent);
NotificationManager manager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
manager.notify(1, builder.build());

}
});

现在通知不显示..

是否可以使用来自 imageview 的图像生成位图?

提前致谢!!!

最佳答案

自定义通知布局

  1. 通知框架允许您定义自定义通知布局,定义通知的外观一个 RemoteViews 对象。自定义布局通知类似于普通通知,但它们基于在中定义的 RemoteViews一个 XML 布局文件。

    自定义通知布局可用的高度取决于通知 View 。普通 View 布局限制为 64 dp,并且扩展 View 布局限于 256 dp。

    要定义自定义通知布局,首先要实例化一个扩充 XML 布局文件的 RemoteViews 对象。然后,相反调用 setContentTitle() 等方法,调用 setContent()。到在自定义通知中设置内容详情,使用方法RemoteViews 设置 View subview 的值:

    在单独的文件中为通知创建 XML 布局。你可以使用您想要的任何文件名,但您必须使用扩展名 .xml在您的应用程序中,使用 RemoteViews 方法来定义您的通知图标和文字。将此 RemoteViews 对象放入您的NotificationCompat.Builder 通过调用 setContent()。避免设置背景 Drawable 在您的 RemoteViews 对象上,因为您的文本颜色可能变得难以辨认。

更多详情请访问 http://developer.android.com/guide/topics/ui/notifiers/notifications.html

关于android - 如何从 Imageview 设置通知图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28525642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com