List of usage examples for android.widget RemoteViews RemoteViews
public RemoteViews(RemoteViews landscape, RemoteViews portrait)
From source file:com.sonetel.service.Downloader.java
@Override protected void onHandleIntent(Intent intent) { HttpGet getMethod = new HttpGet(intent.getData().toString()); int result = Activity.RESULT_CANCELED; String outPath = intent.getStringExtra(EXTRA_OUTPATH); boolean checkMd5 = intent.getBooleanExtra(EXTRA_CHECK_MD5, false); int icon = intent.getIntExtra(EXTRA_ICON, 0); String title = intent.getStringExtra(EXTRA_TITLE); boolean showNotif = (icon > 0 && !TextUtils.isEmpty(title)); // Build notification Builder nb = new NotificationCompat.Builder(this); nb.setWhen(System.currentTimeMillis()); nb.setContentTitle(title);/* w ww . j a v a 2s . c om*/ nb.setSmallIcon(android.R.drawable.stat_sys_download); nb.setOngoing(true); Intent i = new Intent(this, SipHome.class); nb.setContentIntent(PendingIntent.getActivity(this, 0, i, PendingIntent.FLAG_UPDATE_CURRENT)); RemoteViews contentView = new RemoteViews(getApplicationContext().getPackageName(), R.layout.download_notif); contentView.setImageViewResource(R.id.status_icon, icon); contentView.setTextViewText(R.id.status_text, getResources().getString(R.string.downloading_text)); contentView.setProgressBar(R.id.status_progress, 50, 0, false); contentView.setViewVisibility(R.id.status_progress_wrapper, View.VISIBLE); nb.setContent(contentView); final Notification notification = showNotif ? nb.getNotification() : null; notification.contentView = contentView; if (!TextUtils.isEmpty(outPath)) { try { File output = new File(outPath); if (output.exists()) { output.delete(); } if (notification != null) { notificationManager.notify(NOTIF_DOWNLOAD, notification); } ResponseHandler<Boolean> responseHandler = new FileStreamResponseHandler(output, new Progress() { private int oldState = 0; @Override public void run(long progress, long total) { //Log.d(THIS_FILE, "Progress is "+progress+" on "+total); int newState = (int) Math.round(progress * 50.0f / total); if (oldState != newState) { notification.contentView.setProgressBar(R.id.status_progress, 50, newState, false); notificationManager.notify(NOTIF_DOWNLOAD, notification); oldState = newState; } } }); boolean hasReply = client.execute(getMethod, responseHandler); if (hasReply) { if (checkMd5) { URL url = new URL(intent.getData().toString().concat(".md5sum")); InputStream content = (InputStream) url.getContent(); if (content != null) { BufferedReader br = new BufferedReader(new InputStreamReader(content)); String downloadedMD5 = ""; try { downloadedMD5 = br.readLine().split(" ")[0]; } catch (NullPointerException e) { throw new IOException("md5_verification : no sum on server"); } if (!MD5.checkMD5(downloadedMD5, output)) { throw new IOException("md5_verification : incorrect"); } } } PendingIntent pendingIntent = (PendingIntent) intent .getParcelableExtra(EXTRA_PENDING_FINISH_INTENT); try { Runtime.getRuntime().exec("chmod 644 " + outPath); } catch (IOException e) { Log.e(THIS_FILE, "Unable to make the apk file readable", e); } Log.d(THIS_FILE, "Download finished of : " + outPath); if (pendingIntent != null) { notification.contentIntent = pendingIntent; notification.flags = Notification.FLAG_AUTO_CANCEL; notification.icon = android.R.drawable.stat_sys_download_done; notification.contentView.setViewVisibility(R.id.status_progress_wrapper, View.GONE); notification.contentView.setTextViewText(R.id.status_text, getResources().getString(R.string.done) // TODO should be a parameter of this class + " - Click to install"); notificationManager.notify(NOTIF_DOWNLOAD, notification); /* try { pendingIntent.send(); notificationManager.cancel(NOTIF_DOWNLOAD); } catch (CanceledException e) { Log.e(THIS_FILE, "Impossible to start pending intent for download finish"); } */ } else { Log.w(THIS_FILE, "Invalid pending intent for finish !!!"); } result = Activity.RESULT_OK; } } catch (IOException e) { Log.e(THIS_FILE, "Exception in download", e); } } if (result == Activity.RESULT_CANCELED) { notificationManager.cancel(NOTIF_DOWNLOAD); } }
From source file:com.csipsimple.service.Downloader.java
@Override protected void onHandleIntent(Intent intent) { HttpGet getMethod = new HttpGet(intent.getData().toString()); int result = Activity.RESULT_CANCELED; String outPath = intent.getStringExtra(EXTRA_OUTPATH); boolean checkMd5 = intent.getBooleanExtra(EXTRA_CHECK_MD5, false); int icon = intent.getIntExtra(EXTRA_ICON, 0); String title = intent.getStringExtra(EXTRA_TITLE); boolean showNotif = (icon > 0 && !TextUtils.isEmpty(title)); // Build notification Builder nb = new NotificationCompat.Builder(this); nb.setWhen(System.currentTimeMillis()); nb.setContentTitle(title);//from ww w . java2 s . c om nb.setSmallIcon(android.R.drawable.stat_sys_download); nb.setOngoing(true); Intent i = new Intent(this, SipHome.class); nb.setContentIntent(PendingIntent.getActivity(this, 0, i, PendingIntent.FLAG_UPDATE_CURRENT)); RemoteViews contentView = new RemoteViews(getApplicationContext().getPackageName(), R.layout.download_notif); contentView.setImageViewResource(R.id.status_icon, icon); contentView.setTextViewText(R.id.status_text, getResources().getString(R.string.downloading_text)); contentView.setProgressBar(R.id.status_progress, 50, 0, false); contentView.setViewVisibility(R.id.status_progress_wrapper, View.VISIBLE); nb.setContent(contentView); final Notification notification = showNotif ? nb.build() : null; notification.contentView = contentView; if (!TextUtils.isEmpty(outPath)) { try { File output = new File(outPath); if (output.exists()) { output.delete(); } if (notification != null) { notificationManager.notify(NOTIF_DOWNLOAD, notification); } ResponseHandler<Boolean> responseHandler = new FileStreamResponseHandler(output, new Progress() { private int oldState = 0; @Override public void run(long progress, long total) { //Log.d(THIS_FILE, "Progress is "+progress+" on "+total); int newState = (int) Math.round(progress * 50.0f / total); if (oldState != newState) { notification.contentView.setProgressBar(R.id.status_progress, 50, newState, false); notificationManager.notify(NOTIF_DOWNLOAD, notification); oldState = newState; } } }); boolean hasReply = client.execute(getMethod, responseHandler); if (hasReply) { if (checkMd5) { URL url = new URL(intent.getData().toString().concat(".md5sum")); InputStream content = (InputStream) url.getContent(); if (content != null) { BufferedReader br = new BufferedReader(new InputStreamReader(content)); String downloadedMD5 = ""; try { downloadedMD5 = br.readLine().split(" ")[0]; } catch (NullPointerException e) { throw new IOException("md5_verification : no sum on server"); } if (!MD5.checkMD5(downloadedMD5, output)) { throw new IOException("md5_verification : incorrect"); } } } PendingIntent pendingIntent = (PendingIntent) intent .getParcelableExtra(EXTRA_PENDING_FINISH_INTENT); try { Runtime.getRuntime().exec("chmod 644 " + outPath); } catch (IOException e) { Log.e(THIS_FILE, "Unable to make the apk file readable", e); } Log.d(THIS_FILE, "Download finished of : " + outPath); if (pendingIntent != null) { notification.contentIntent = pendingIntent; notification.flags = Notification.FLAG_AUTO_CANCEL; notification.icon = android.R.drawable.stat_sys_download_done; notification.contentView.setViewVisibility(R.id.status_progress_wrapper, View.GONE); notification.contentView.setTextViewText(R.id.status_text, getResources().getString(R.string.done) // TODO should be a parameter of this class + " - Click to install"); notificationManager.notify(NOTIF_DOWNLOAD, notification); /* try { pendingIntent.send(); notificationManager.cancel(NOTIF_DOWNLOAD); } catch (CanceledException e) { Log.e(THIS_FILE, "Impossible to start pending intent for download finish"); } */ } else { Log.w(THIS_FILE, "Invalid pending intent for finish !!!"); } result = Activity.RESULT_OK; } } catch (IOException e) { Log.e(THIS_FILE, "Exception in download", e); } } if (result == Activity.RESULT_CANCELED) { notificationManager.cancel(NOTIF_DOWNLOAD); } }
From source file:dk.cafeanalog.AnalogWidget.java
private void handleIsOpen(final Context mContext, final OpeningStatus openingStatus) { final AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(mContext); final int[] appWidgetIds = appWidgetManager .getAppWidgetIds(new ComponentName(mContext, AnalogWidget.class)); final RemoteViews views = new RemoteViews(mContext.getPackageName(), R.layout.analog_widget); views.setTextViewText(R.id.appwidget_text, mContext.getText(R.string.refreshing_analog)); views.setTextColor(R.id.appwidget_text, ContextCompat.getColor(mContext, android.R.color.primary_text_dark)); // Instruct the widget manager to update the widget for (int appWidgetId : appWidgetIds) { appWidgetManager.updateAppWidget(appWidgetId, views); }// w ww. jav a2 s.c om CharSequence widgetText; if (openingStatus.open) { widgetText = mContext.getString(R.string.widget_open_analog); views.setTextColor(R.id.appwidget_text, ContextCompat.getColor(mContext, R.color.openColor)); } else { widgetText = mContext.getString(R.string.widget_closed_analog); views.setTextColor(R.id.appwidget_text, ContextCompat.getColor(mContext, R.color.closedColor)); } views.setTextViewText(R.id.appwidget_text, widgetText); views.setOnClickPendingIntent(R.id.appwidget_text, getPendingSelfIntent(mContext)); // Instruct the widget manager to update the widget for (int appWidgetId : appWidgetIds) { appWidgetManager.updateAppWidget(appWidgetId, views); } }
From source file:com.perm.DoomPlay.DownloadNotifBuilder.java
public Notification createPaused() { Notification notification = new Notification(); RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.notif_download); views.setProgressBar(R.id.progressDownload, 100, 0, false); views.setTextViewText(R.id.notifTitle, context.getResources().getString(R.string.paused)); views.setTextViewText(R.id.notifArtist, track.getArtist() + "-" + track.getTitle()); views.setImageViewResource(R.id.notifPause, R.drawable.widget_play); Intent intentClose = new Intent(PlayingService.actionClose); intentClose.putExtra("aid", track.getAid()); intentClose.setComponent(new ComponentName(context, DownloadingService.class)); Intent intentPause = new Intent(PlayingService.actionIconPlay); intentPause.putExtra("aid", track.getAid()); intentPause.setComponent(new ComponentName(context, DownloadingService.class)); views.setOnClickPendingIntent(R.id.notifClose, PendingIntent.getService(context, notificationId, intentClose, PendingIntent.FLAG_UPDATE_CURRENT)); views.setOnClickPendingIntent(R.id.notifPause, PendingIntent.getService(context, notificationId, intentPause, PendingIntent.FLAG_UPDATE_CURRENT)); notification.contentView = views;//ww w .ja v a2 s. c om notification.flags = Notification.FLAG_ONGOING_EVENT; notification.icon = R.drawable.download_icon; return notification; }
From source file:com.battlelancer.seriesguide.appwidget.ListWidgetProvider.java
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) public static RemoteViews buildRemoteViews(Context context, AppWidgetManager appWidgetManager, int appWidgetId) { // setup intent pointing to RemoteViewsService providing the views for the collection Intent intent = new Intent(context, ListWidgetService.class); intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); // When intents are compared, the extras are ignored, so we need to // embed the extras into the data so that the extras will not be // ignored.//from w w w . j av a 2 s .com intent.setData(Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME))); // determine layout (current size) and theme (user pref) final boolean isCompactLayout = isCompactLayout(appWidgetManager, appWidgetId); final boolean isLightTheme = WidgetSettings.isLightTheme(context, appWidgetId); int layoutResId; if (isLightTheme) { layoutResId = isCompactLayout ? R.layout.appwidget_v11_light_compact : R.layout.appwidget_v11_light; } else { layoutResId = isCompactLayout ? R.layout.appwidget_v11_compact : R.layout.appwidget_v11; } // build widget views RemoteViews rv = new RemoteViews(context.getPackageName(), layoutResId); rv.setRemoteAdapter(R.id.list_view, intent); // The empty view is displayed when the collection has no items. It // should be a sibling of the collection view. rv.setEmptyView(R.id.list_view, R.id.empty_view); // set the background color int bgColor = WidgetSettings.getWidgetBackgroundColor(context, appWidgetId, isLightTheme); rv.setInt(R.id.container, "setBackgroundColor", bgColor); // determine type specific values final int widgetType = WidgetSettings.getWidgetListType(context, appWidgetId); int showsTabIndex; int titleResId; int emptyResId; if (widgetType == WidgetSettings.Type.UPCOMING) { // upcoming showsTabIndex = ShowsActivity.InitBundle.INDEX_TAB_UPCOMING; titleResId = R.string.upcoming; emptyResId = R.string.noupcoming; } else if (widgetType == WidgetSettings.Type.RECENT) { // recent showsTabIndex = ShowsActivity.InitBundle.INDEX_TAB_RECENT; titleResId = R.string.recent; emptyResId = R.string.norecent; } else { // favorites showsTabIndex = ShowsActivity.InitBundle.INDEX_TAB_SHOWS; titleResId = R.string.action_shows_filter_favorites; emptyResId = R.string.no_nextepisode; } // change title and empty view based on type rv.setTextViewText(R.id.empty_view, context.getString(emptyResId)); if (!isCompactLayout) { // only regular layout has text title rv.setTextViewText(R.id.widgetTitle, context.getString(titleResId)); } // app launch button final Intent appLaunchIntent = new Intent(context, ShowsActivity.class) .putExtra(ShowsActivity.InitBundle.SELECTED_TAB, showsTabIndex); PendingIntent pendingIntent = TaskStackBuilder.create(context).addNextIntent(appLaunchIntent) .getPendingIntent(appWidgetId, PendingIntent.FLAG_UPDATE_CURRENT); rv.setOnClickPendingIntent(R.id.widget_title, pendingIntent); // item intent template, launches episode detail view TaskStackBuilder builder = TaskStackBuilder.create(context); builder.addNextIntent(appLaunchIntent); builder.addNextIntent(new Intent(context, EpisodesActivity.class)); rv.setPendingIntentTemplate(R.id.list_view, builder.getPendingIntent(1, PendingIntent.FLAG_UPDATE_CURRENT)); // settings button Intent settingsIntent = new Intent(context, ListWidgetConfigure.class) .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS) .putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); rv.setOnClickPendingIntent(R.id.widget_settings, PendingIntent.getActivity(context, appWidgetId, settingsIntent, PendingIntent.FLAG_UPDATE_CURRENT)); return rv; }
From source file:com.google.android.apps.mytracks.widgets.TrackWidgetProvider.java
/** * Updates the widget./*w w w. ja v a2 s .c o m*/ * * @param context the context * @param trackId the track id */ private void update(Context context, long trackId) { // Get the preferences long recordingTrackId = PreferencesUtils.getLong(context, R.string.recording_track_id_key); boolean recordingTrackPaused = PreferencesUtils.getBoolean(context, R.string.recording_track_paused_key, PreferencesUtils.RECORDING_TRACK_PAUSED_DEFAULT); boolean metricUnits = PreferencesUtils.getBoolean(context, R.string.metric_units_key, PreferencesUtils.METRIC_UNITS_DEFAULT); // Get track and trip statistics MyTracksProviderUtils myTracksProviderUtils = MyTracksProviderUtils.Factory.get(context); if (trackId == -1L) { trackId = recordingTrackId; } if (trackId == -1L) { trackId = PreferencesUtils.getLong(context, R.string.selected_track_id_key); } Track track = trackId != -1L ? myTracksProviderUtils.getTrack(trackId) : myTracksProviderUtils.getLastTrack(); TripStatistics tripStatistics = track == null ? null : track.getTripStatistics(); RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.track_widget); boolean isRecording = recordingTrackId != PreferencesUtils.RECORDING_TRACK_ID_DEFAULT; updateStatisticsContainer(context, remoteViews, track); updateTotalDistance(context, remoteViews, tripStatistics, metricUnits); updateTotalTime(remoteViews, tripStatistics, isRecording, recordingTrackPaused); updateAverageSpeed(context, remoteViews, tripStatistics, metricUnits); updateMovingTime(context, remoteViews, tripStatistics); updateRecordButton(context, remoteViews, isRecording, recordingTrackPaused); updateRecordStatus(context, remoteViews, isRecording, recordingTrackPaused); updateStopButton(context, remoteViews, isRecording); AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); int[] appWidgetIds = appWidgetManager .getAppWidgetIds(new ComponentName(context, TrackWidgetProvider.class)); for (int appWidgetId : appWidgetIds) { appWidgetManager.updateAppWidget(appWidgetId, remoteViews); } }
From source file:ru.gelin.android.weather.notification.skin.impl.BaseWeatherNotificationReceiver.java
@Override protected void notify(Context context, Weather weather) { Log.d(Tag.TAG, "displaying weather: " + weather); WeatherStorage storage = new WeatherStorage(context); storage.save(weather);/*from ww w. j av a 2 s .c o m*/ WeatherFormatter formatter = getWeatherFormatter(context, weather); NotificationCompat.Builder builder = new NotificationCompat.Builder(context); builder.setSmallIcon(getNotificationIconId(weather)); if (weather.isEmpty() || weather.getConditions().size() <= 0) { builder.setTicker(context.getString(formatter.getIds().id(STRING, "unknown_weather"))); } else { builder.setTicker(formatter.formatTicker()); builder.setSmallIcon(getNotificationIconId(weather), getNotificationIconLevel(weather, formatter.getStyler().getTempType().getTemperatureUnit())); } builder.setWhen(weather.getQueryTime().getTime()); builder.setOngoing(true); builder.setAutoCancel(false); builder.setContentIntent(getContentIntent(context)); //Lollipop notification on lock screen builder.setVisibility(NotificationCompat.VISIBILITY_PUBLIC); Notification notification = builder.build(); switch (formatter.getStyler().getNotifyStyle()) { case CUSTOM_STYLE: RemoteViews views = new RemoteViews(context.getPackageName(), formatter.getStyler().getLayoutId()); RemoteWeatherLayout layout = getRemoteWeatherLayout(context, views, formatter.getStyler()); layout.bind(weather); notification.contentView = views; break; case STANDARD_STYLE: builder.setContentTitle(formatter.formatContentTitle()); builder.setContentText(formatter.formatContentText()); Bitmap largeIcon = formatter.formatLargeIcon(); if (largeIcon != null) { builder.setLargeIcon(largeIcon); } notification = builder.build(); break; } getNotificationManager(context).notify(getNotificationId(), notification); notifyHandler(weather); }
From source file:id.satusatudua.sigap.service.EmergencyService.java
private void showEmergencyButton() { PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, TombolActivity.generateIntent(this, true), PendingIntent.FLAG_UPDATE_CURRENT); RemoteViews views = new RemoteViews(getPackageName(), R.layout.notification_emergency_button); Notification notification = new NotificationCompat.Builder(getApplicationContext()) .setSmallIcon(R.mipmap.ic_launcher).setContent(views).setOngoing(true) .setContentIntent(pendingIntent).setAutoCancel(false).build(); NotificationManagerCompat.from(SigapApp.pluck().getApplicationContext()).notify(696961, notification); }
From source file:de.hero.vertretungsplan.HtmlWork.java
@SuppressLint("NewApi") private void updateWidget(boolean before) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { RemoteViews widget = new RemoteViews(context.getPackageName(), R.layout.widget); AppWidgetManager appManager = AppWidgetManager.getInstance(context); ComponentName name = new ComponentName(context, WidgetProvider.class); if (before) { widget.setImageViewResource(R.id.aktButton, R.drawable.ic_action_aktualisieren_pressed); } else {/*from w w w. j a v a2 s . co m*/ widget.setImageViewResource(R.id.aktButton, R.drawable.aktualisieren_drawable); if (dataChanged) { appManager.notifyAppWidgetViewDataChanged(appManager.getAppWidgetIds(name), R.id.words); } } appManager.partiallyUpdateAppWidget(appManager.getAppWidgetIds(name), widget); } }
From source file:ch.fixme.status.Widget.java
protected static void updateWidget(final Context ctxt, int widgetId, AppWidgetManager manager, Bitmap bitmap, String text) {//w ww .ja v a 2 s . co m RemoteViews views = new RemoteViews(ctxt.getPackageName(), R.layout.widget); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(ctxt); Editor edit = prefs.edit(); if (prefs.getBoolean(Prefs.KEY_WIDGET_TRANSPARENCY, Prefs.DEFAULT_WIDGET_TRANSPARENCY)) { views.setInt(R.id.widget_image, "setBackgroundResource", 0); } else { views.setInt(R.id.widget_image, "setBackgroundResource", android.R.drawable.btn_default_small); } if (bitmap != null) { views.setImageViewBitmap(R.id.widget_image, bitmap); edit.putBoolean(Main.PREF_FORCE_WIDGET + widgetId, false); // Don't // need // to // force } else { views.setImageViewResource(R.id.widget_image, android.R.drawable.ic_popup_sync); edit.putBoolean(Main.PREF_FORCE_WIDGET + widgetId, true); // Something // went // wrong } if (text != null) { views.setTextViewText(R.id.widget_status, text); views.setViewVisibility(R.id.widget_status, View.VISIBLE); } else { views.setViewVisibility(R.id.widget_status, View.GONE); } Intent clickIntent = new Intent(ctxt, Main.class); clickIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetId); PendingIntent pendingIntent = PendingIntent.getActivity(ctxt, widgetId, clickIntent, PendingIntent.FLAG_CANCEL_CURRENT); views.setOnClickPendingIntent(R.id.widget_image, pendingIntent); manager.updateAppWidget(widgetId, views); // Is initialized edit.putBoolean(Main.PREF_INIT_WIDGET + widgetId, true); edit.commit(); }