FeedViewer for Android

FeedViewer is an HTML viewer for Android devices, optimized for offline reading of RSS feeds such as news sites, blogs and science sites.

I wrote about what it's for and my motivation for developing it in: Android tablet as an ebook/RSS reader. To some extent, it's a replacement for Plucker on PalmOS.

This is my first Android app, so be gentle.

It's free and open source (licensed under the GNU Public License version 2 or, at your option, any later version).

The first release of the source code is here: FeedViewer-2011-09-12.tar.gz or you can download the latest binary here: FeedViewer-2011-09-12.apk

FeedViewer is not currently available in the Android marketplace or on any other Android sites, mostly because I'm brand new to this and haven't looked into how that all works. That's also why I don't have one of those nifty barcode things (besides, my Archos doesn't have a camera so I couldn't test them anyway).

Controls

To scroll down or up, long-press near the bottom or top of the screen. Of course, normal Android fling-scrolling also works.

Dragging along the left edge of the screen will adjust the screen brightness. (It also scrolls at the same time; I haven't figured out a way to disable the scrolling, sorry.)

<< and >> go back and forward like a browser (flinging left and right also work). On Android 1.6, at least, it's fairly inconsistent where you'll end up, but that seems to be a bug in Android's WebView (I hope it's better in later versions).

Feeds shows the overview of all the feeds you have available to read; ToC goes to the table of contents for the current feed.

The Scroll menu scrolls approximately to the top, 20%, 40%, 60%, 80% or bottom of the document. This isn't very accurate yet.

To adjust font size, use the menu button to make the font smaller or larger.

Where does it look for articles?

FeedViewer looks for directories named "feeds" on the android's storage and/or on its SD card.
I've only tested it on one device, my Archos 5 running Android 1.6. I think Archos may mount the filesystem in a nonstandard place. If you try FeedViewer and it can't see your feeds, let me know where your device mounts them and I'll add it to the search list.

Any directory inside "feeds" is taken to be a specific site and day, and FeedViewer will look for an index page named index.html inside that.

For instance, if feeds/12-19-Sun/ contains BBC_News_Science/, Slate/ and The_Register/, FeedViewer's top-level "Feeds" page will show something like:

/storage/feeds/12-19-Sun feeds:
12-19-Sun BBC_News_Science
12-19-Sun Slate
12-19-Sun The Register

Each of those individual feeds is a link, so click on the Slate line to read today's new Slate stories.

Typical use pattern

Here's how I use FeedViewer each day. Of course, you may invent other models.

  1. Plug in the Archos, click Mount and mount the device's SD card on my desktop machine as /androidsd.
  2. Run a script to collect any saved URLs from my FeedViewer reading, generate a fake RSS file from them so we'll get them in the next feedme run, and save a copy of the URLs to a file in case I ever want to go back and find them. You may want to do that a different way, but if you want my script, it's archosbak.
  3. Run feedme on my desktop machine to gather simplified HTML for the RSS feeds in my list. This creates a directory named something like ~/feeds/12-19-Sun. (The naming scheme varies, and that one depends on the latest feedme, which I haven't released yet but am about to.) In feedme.conf I set formats = none so it produces only HTML, no plucker or epub or other translations.
  4. cp -r ~/feeds/12-19-Sun /androidsd/
  5. Periodically remove old directories inside ~/feeds. Right now I do this manually (while I'm testing) but eventually will use an automated command like find ~/feeds -ctime +6 -exec rm "{}" \;

Once you're in the reader, Feeds goes to the index page, ToC goes to the index page for the current feed, the << and >> buttons go back and forward (horizontal swipes do that too), a long press at the bottom or top of the screen pages down or up (or you can scroll with vertical swipes).

Colors and Stylesheet

Android's WebView defaults to a white background and black text. They let you change the white background to something else, but you can't change the text color, so if you want light-on-dark default colors (like "Night mode" in Aldiko), you're out of luck.

But of course individual web pages can use any colors they want. So here's what I do: in FeedMe, when I download HTML pages, I add a stylesheet at the beginning of each page that looks like this:

<link rel="stylesheet" type="text/css" title="Feeds" href="../../feeds.css"/>

Then feeds.css contains something like this:

body { 
  color: white;
  background: #011;
}

a:link { color: #ffff00; }
a:visited { color: #aaffaa; }
a:hover, a:active { color: #ffffaa; }

These should probably have !important at the ends, since occasionally you hit portions of a page where the text reverts to black and you can't read it. I need to experiment more.

Eventually I'll probably add controls to FeedViewer so you can change the colors interactively (by writing to feeds.css), but right now I'm the only user (as far as I know) so it hasn't been a priority.

ChangeLog

2011-01-30:
Clean up some of the changes from the last release; greatly improve the brightness control's sensitivity.
2011-01-26:
Revert the goBack() change from yesterday: turns out WebView's canGoBack() is broken for generated pages (reports that it can when it really can't).
2011-01-25:
Launcher icons; set timer to guard against false clicks; better error handling; better handing of saved preferences; lots of other improvements.
2011-01-03:
Lots of improvements.
2010-12-30:
First public upload; basic functionality works.

feedme
More Software
Shallowsky Home
mail me