Google Reader Widgets

This app has been removed from the Google Play Store. See full announcement here.

I’m a bit of a Google Reader addict. I wanted something on my Android device that could summarize the status of my account without having to load the browser and log in or refresh. So I decided to create an app consisting of Google Reader Widgets. The app contains four widget sizes: small, medium, large and extra large.

There are two versions of my application in the Google Play Store. The free version which is ad supported and the Pro version.
Both versions can be found by searching for “reader widget” in the Play Store on any Android phone or by scanning these QR codes:

Reader Widget Free:
Free QR code
Reader Widget Pro:
Pro QR code

Requirements:

  • Android 1.5 (cupcake) or above
  • Google Reader Account
  • Data package for your mobile phone

Features:

  • Four different widget sizes: small, medium, large and XL (Honeycomb tablets only)
  • Automatic authorization against Google Reader API (no username and password required)
  • Manual login option for users with Google Reader accounts separate from their Android account. Passwords are encrypted for security. Automatic login is there for everyone else (and selected by default).
  • Configurable update period from 10 mins to 24 hours
  • Caches data locally for when there’s no network connection
  • Show unread count of a particular tag
  • Add more than one widget and configure it independently
  • Tapping on the widget (or the folder icon in the large or XL ones) can be configured to: launch a webview, launch a Reader app, launch a new browser window for the Google Reader site or show a tag list pop-up showing unread counts for each tag and feed. Apps supported: Greed, Newsrob, Google Listen and the Official Google Reader Client
  • Pressing the menu button on one of the pop-up windows brings up a menu with the options: Update widget or Settings .
  • Manual refresh option. On the second configuration screen this can be selected if the user does not want the widget to refresh periodically.
  • The refresh period on the second configuration screen is used across all instances of the widgets. This is because one background service is used to refresh all widget data to save on battery power and data.
  • Choose from either black or white widget backgrounds to match the theme of your Android phone

widgets

The small widget (top right) is 1×1 cell that can show the unread count of the whole Reader account of the unread count of a particular tag. The timestamp at the bottom of the widget is configurable to show either the latest unread item time or the refresh time.

The medium widget (bottom left) is 2×2 cells shows the unread counts of all tags. Alternatively it can be configured to show the feed unread counts for a particular tag. Both the last refresh time and latest unread item time are displayed at the bottom.

The large version (center) is 4×1 cells and displays the headlines of unread items at 5 second intervals. It has a refresh button on the left to update the widget information. It has another button on the right which can be configured to launch the webview, a Reader app or tag list. Tapping on the text area shows a list of all the headlines. If a headline is tapped on it expands to show the article summary in text.

headlines

Tapping on the summary launches a new browser window for that story (not the Google Reader site, the site for the story itself). The list can be sorted by feed name by tapping on the “Feed” link at the top of the list. It can also be sorted by time by tapping on the “Time” link. Tapping each of these links again reverses the order from ascending to descending. Arrow icons show the current order. For example, the list above is sorted by time in descending order.

The large widget can be configured to show the unread headlines for a particular tag but also for a particular feed. Both the last refresh time and latest unread item time are displayed at the bottom.

The XL widget is a resizable one for Honeycomb tablets. It displays the headlines and post times with the newest ones at the top in a scrolling list. Tapping on the headline launches a new browser tab for that story. It is just as configurable as the other widgets.

XL

Useful configuration combinations:

  • A long refresh period (or manual refresh only) with the last refresh time displayed. Then you can decide if its been too long since you last refreshed.
  • A small widget on the main home screen for “All items” (where you are probably stuck for space) and a large/medium/lots of small ones on a secondary screen for more detailed information.
  • One widget configured to launch a Reader app, one to launch the webview, one to launch the tag list and one to launch the browser (OK maybe not that useful)

Changelog:

  • V2.36
    • Refresh widgets button added to main app (only appears if you have widgets added to the home screen)
    • Possible fix for Asus Padphone issue after dock/undock
    • Press added to list of launch apps
    • Medium widget made scrollable on Android 3.0+
    • Small widget can be added to lock screen in Android 4.2+
    • Manual login text fields fixed for Android 3.0+
  • V2.35
    • Fixed adding to homescreen on Android 4.2 Jellybean
    • Medium, Large and XL widgets can be added to lock screen in Android 4.2
    • Medium widget resizeable in Android 3.1+
  • V2.34
    • Fixed adding to homescreen on Android 4.1 Jellybean
    • Fixed tag and headline list pop-ups
  • V2.33
    • Fixed crash in Ice Cream Sandwich
    • Fixed crash on Android 1.x
    • Updated help text for ICS and Honeycomb
  • V2.32
    • Bug fix: XL and large widgets would get stuck on the “Loading…” message when 0 unread items were available.
  • V2.31
    • Bug fix: XL widget would sometimes display no items erroneously
  • V2.30
    • Resizable XL widget for Honeycomb tablets added
    • Second configuration screen sped up
    • Bug fix: Out of memory force close error on configuration screens
    • Widget previews for Honeycomb tablets added
    • Honeycomb hardware acceleration enabled
  • V2.20
    • Sped things up
    • Force close fixes
    • Dialogue appearance made Gingerbready
    • Reduced app size
    • Updates stopping on Gingerbread devices fixed
    • Option to launch Google Listen
  • V2.19
    • Fixed app icons in chooser dialog
    • Fixed force close issues (thanks for the reports!)
    • Fixed widgets not getting updated
    • Fixed webview alignment
  • V2.18
    • New option to launch a Reader app. This supports Greed, Newsrob and the official Google Reader client. If the app isn’t installed then it gives you the option to go to the Play Store and download it.
    • New icon
    • Bug fix: Nexus S now updates widget on reboot.
    • Bug fix: going back to the time configuration screen no longer disables the next button
  • V2.17
    • Fixed for Android 1.5 devices
  • V2.16
    • Auto sign in for Froyo devices added.
    • Removed progress dialog from 2nd config screen.
    • Handling “denied” message from API. This would cause the widget show zero unread items.
    • Various force close fixes.
    • Built against Froyo SDK and set install location to “internalOnly”. This means it can’t be moved to SD card which should be the case for any widget apps.
    • Bug fix: rotating to landscape mode on homescreen would clear some of the data from the large widget and stop it responding.
    • Removed location permission from free version
  • V2.15
    • Bug fix: filtered app upgrade listener
  • V2.14
    • Bug fix: added check for background data permission. If SettingsAccounts & syncBackground data setting is disabled then no data is downloaded.
    • Bug fix: added listener for when app is upgraded. This will restart the update service so new data is retrieved. This was particularly a problem on Android 2.2 (Froyo) which blanks out widgets when they are upgraded.
    • Data no longer downloaded on boot-up when a Reader Widget is active. This should speed up boot times slightly when running the widgets.
  • V2.13
    • Enabled plugins in the Webview. This allows Adobe flash to run on Froyo devices.
    • Bug fix: when exiting the Webview in certain situations it would get stuck in a bad state and be unresponsive.
    • Bug fix: one thread now used to rotate headlines in all large widgets. This fixes an issue where the headlines would stop rotating if more than one large widget was running. It should also save battery life.
  • V2.12
    • WebView authorization saved after first sign in
    • Bug fix: rare force close when network coverage is poor
  • V2.11
    • Automatic login option disabled for Froyo devices
    • Reconfiguration no longer leaves widget in “Tap to setup” state if cancelled
  • V2.10
    • Memory usage of large widget reduced
    • Added clear cache button to webview menu. This can be used to free up some of the disk space without having to go into the Android application settings menu.
    • Widget background defaulted to the dark version
    • When the configuration screen was exited prematurely the widgets were just blank and needed adding again. This has now been changed so that the widgets can be tapped to re-launch the configuration screens.
    • Bug fix: back button now works as expected in configuration screens.
  • V2.9
    • Bug fix: webview authorization fixed when using manual login option.
    • Bug fix: JavaScript pop-ups enabled in webview. This means when marking more than 100 items as read with “mark all as read” it behaves exactly as the browser does*
  • V2.8
    • Added zoom controls to the WebView. This means multitouch also works on Nexus Ones running update 1.
    • Bug fix: users upgrading from V2.6 to 2.7 may have experienced problems with the WebView requesting a username and password.
    • Bug fix: after 2 weeks the authorization with the Google Reader API times out and the widgets stop updating. I thought the widgets were handling this correctly but I was wrong.
  • V2.7
    • Updated authentication with Google Reader API ahead of some changes Google will be making in April
    • Unread count JSON response parsing now performed with jackson for slight speed increase
    • Removed some legacy code to reduce app size
  • V2.6:
    • Option to select from either black or white widget backgrounds
    • Bug fix: duplicate tags in medium widget or tag list. This was introduced in V2.5
    • Bug fix: force close error in a situation when there is no network connection and a new authorization token is needed
    • Bug fix: gzip response now elicited from Google Reader API for fetching subscriptions list. This should speed up the configuration screen.
  • V2.5:
    • Bug fix: handle Google’s daily invalidation of Google Reader API authorization token.
  • V2.4:
    • Speed improved by requesting gzip compression from the Google Reader API. I have tried to get this working before and the solution turned out to be using a real User Agent string in the requests to the API.
    • Icon moved to title bar in configuration screens
    • Ads aligned to bottom of screen properly in free version. This was a problem on higher resolution devices like the Droid and Nexus One.
    • Icon added to title bar in WebView
    • WebView made full screen. This means scrolling is smoother on the Nexus One as it doesn’t have to animate the live wallpaper in the background
  • V2.3:
    • Migrated to JSON stream for headlines using Jackson. This speeds up updates for the large widget by about 25% and uses 25% less data.
    • Webview layout tweaks for landscape on larger screened devices like the Droid
    • Radio buttons on last config screen selected from preferences already saved
    • Bug fix: email links in the webview now work
    • Bug fix: reconfiguring time displayed on small widget used to display the wrong icon.
    • Bug fix: sometimes menus on the dialogue boxes (tag list and headline list) would not be at the bottom of the screen
  • V2.2:
    • Bug fix: Motorola Droid force close on docking
    • Bug fix: browser launch option goes to Reader start page as configured on the Reader site instead of the “Feeds” view
    • Bug fix: HTC Hero sometimes got stuck launching webview
    • Bug fix: headline list in large widget force closes if the widget is configured for a single feed.
    • Bug fix: headline list in large widget can now be sorted by headline title if the widget is configured for a single feed.
    • Exit button added to menus in pop-ups (headline list, webview, tag list).
    • Separate styles for spinner (drop down list) and spinner drop downs on the final configuration screen. This saves room and looks better
  • V2.1:
    • Bug fix: handling of single quote characters in tag names fixed
    • Bug fix: back button in webview now works as expected (goes back a page or exits if it can’t go back any further)
    • Added an option to launch a new browser window straight from the widgets
  • V2.0:
    • Option to launch webview straight from each widget. This loads the Android Google Reader site in a large pop-up window with no login needed. If there is no network connection it falls back to the tag list.
    • Option to launch Greed straight from the widget (if it’s installed).
    • Pressing menu in webview, headline list or tag list windows brings up a menu to update the widget, launch Greed (if it’s installed) or change settings. The buttons in the tag list have been moved to this menu, freeing up space.
    • No loading dialogue for tag list window.
    • Bug fix: launching headline list when phone in landscape orientation caused a force close
    • Bug fix: time text and icons in large widget cut off slightly on QVGA phones (e.g. HTC Tattoo).
  • V1.81:
    • Bug fix: database code tidied up. There was an issue when docking the Motorola Droid causing a force close.
    • Bug fix: Small widget landscape orientation
    • Bug fix: Large widget landscape orientation time text and icons getting cut off
    • Bug fix: Large widget landscape orientation gap on the right on new large screen devices like the Droid
  • V1.8:
    • New layout using 9 patch PNG file. This saves space compared to the old separate backgrounds for each widget size.
    • Built with Android 1.6 SDK
    • Supports larger screens e.g. WVGA 800×480
  • V1.7:
    • Time shown next to headlines in pop-up list.
    • Sort headlines by feed name or time in ascending or descending order.
    • Bug fix: on boot up with no network connection widgets would be blank. Now the data is loaded from the local database.
    • Ran zipalign on the apk file. This should improve performance.
    • Ran Optipng on all the PNG files to compress them.
  • V1.6:
    • New feature: headline list is now expandable to view article summaries. The summary is text only at present but this might change in the future. Tapping on the summary launches a new browser window for that article.
    • Improved clean up on last widget deletion
    • Bug fix: the loading message on the large widget was too brief.
    • Bug fix: duplicate headlines in pop-up list.
    • Bug fix: relaunching tag list after launching Greed from it no longer goes back to Greed. This is part of Android’s default activity behaviour and I found it confusing so put a stop to it.
    • Bug fix: tag and headline lists now relaunch properly. Sometimes they wouldn’t launch, freezing the screen until the back button was pressed.
  • V1.5:
    • Friend’s starred items support added. This is for when a friend has shared their starred items with you.
    • Handling of no network connectivity improved.
    • Rotation handling on configuration screens improved
    • Blank headlines handled in large widget.
    • Bug fix: Sometimes the large widget would Force close when updating. This was because the retrieval of headlines timed out. This is now handled properly.
    • Bug fix: Timestamp default value for small widget added.
    • Bug fix: adding two widgets in quick succession would sometimes cause the tags and feeds unread count to get zeroed.
  • V1.4:
    • Manual login option for users with Google Reader accounts separate from their Android account. Automatic login is still there for everyone else (and selected by default).
    • Switching orientation now supported in configuration screens.
    • XML parser changed from XML Pull to SAX which should improve speed of headline processing. Some people complained of slow updates when they had hundreds of unread items. This should help.
    • Icon next to timestamp in small widget.
    • Bug fix: Some headlines when clicked on in the list would not spawn a browser window.
    • Bug fix: Untagged feeds not visible in tag list pop-up.
    • Other efficiency improvements.
  • V1.3:
    • Force closes in large widget when launching headline list fixed.
  • V1.2:
    • Headline list pops-up when tapping the headline section of the large widget. Tapping on a headline in the list spawns a browser window for that story.
    • Both last refresh and unread item times shown on medium and large widgets. This means people won’t have to choose between them on these widgets.
    • Slightly enlarged tag list button on large widget to make it easier to tap on.
    • “People you follow” tag now in list.
  • V1.1:
    • Fix for occasional force closes in the large widget
    • New option to view feed in Greed (full) when tapping on feed name in pop-up list

Old Free changelog:

  • V2.0:
    • Same as pro version with ads
  • V1.8:
    • Bug fix: Landscape orientation time text and icon getting cut off
    • Explicitly stated supported screen sizes in manifest
    • V1.7:
    • New layout using 9 patch PNG file
    • Built with Android 1.6 SDK
    • Supports larger screens e.g. WVGA 800×480
    • PNG files run through optipng to save space
    • zipaligned APK file to improve performance
  • V1.6:
    • Bug fix to the Adfonic code.
  • V1.5:
    • Manual login option for users with Google Reader accounts separate from their Android account. Automatic login is still there for everyone else (and selected by default).
    • Text ads from Adfonic in the configuration screens
    • Handling of no network connectivity improved
    • Tidy up on widget deletion improved
    • JSON version of Google Reader API used for lower data usage
  • V1.4:
    • Using https for API calls
    • Orientation locked to portrait for configuration screen
    • Minor tweaks and tidying up
  • V1.3:
    • Loading from cache when network is down fixed
    • Dialog box shown when opened from Play Store after installation (it showed an error message before)
    • Small performance tweaks
  • V1.2:
    • Configuration screen appearance improved
    • Configuration screen scrolls when phone is horizontal
  • V1.1:
    • Fixed the onclick action so that it works for browsers other than the default e.g. Steel.

Limitations of both versions

  • The widgets are not full Google Reader clients. It is not possible to share items, mark them as read or mark all as read. For a full client please try the various Android apps in the Play Store.
  • The Google Reader API tops out at 1000 items and so this is highest unread count that can be displayed by the widgets
  • The Android App Widget framework for phones does not allow scrolling (so webview widgets are out) lists or any kind of animation in widget layouts. However, Honeycomb tablets do support scrolling list views so the XL widget since version 2.30 uses this functionality.
  • Custom home screens like Launcher Pro are not supported as some of them have there own particular ways of dealing with widgets.
  • Custom builds of Android are not supported as there are just too many of them now.
  • Using a task killer app may interfere with the background service used to keep the widgets up-to-date.

2 replies on “Google Reader Widgets”