SwallowCatcher 0.2.0 Released

Download SwallowCatcher 0.2.0

Download SwallowCatcher 0.2.0

After what seems like ages I’m proud to release a new version of SwallowCatcher – version 0.2.0, codenamed “The Black Knight (Come On Ya Pansy!)”. The reason behind the version number jump is twofold: 1. Bigger numbers are better, 2. I think the new features in this version and improved stability warrant a new version. Notable new features in this release include support for more URL schemes, cover art support and the ability to browse show notes from directly within the app.

I’ve had several contributions to this release both in the form of  bug fixes and in code and artwork. In particular I’d like to thank Nick Clark (@nrlucre on identi.ca) for contributing a great icon and Luke (~nobugs on Gitorious) for contributing bug fixes and adding itpc:// and pcast:// URL scheme support. Also, thanks to everyone who’s given me feedback and sent me bug reports.
As always, please check out the project page and the gitorious page where you can download the source code. Feedback and bug reports can again be submitted via identi.ca, email or via the comments on this post.

SwallowCatcher 0.1.3 Released

Download SwallowCatcher 0.1.3

Download SwallowCatcher 0.1.3

I’m again proud to announce a new release of SwallowCatcher. This is a small maintenance update which fixes some of the backwards compatibility issues which people have been experiencing with pre-Froyo versions of Android. Thanks to @diabalomarcus, @fdroid and Henrik Tunedal for their help with this issue.

As always, please check out the project page and the gitorious page where you can download the source code. Feedback and bug reports can again be submitted via identi.ca, email or via the comments on this post.

Using Android WebViews

Recently I’ve been working on show notes support for SwallowCatcher. Since most podcast feeds include their show notes in the feed as embedded HTML I decided to render this HTML to display the show notes. This turned out to be ridiculously simple thanks to Android’s WebView class. The API for rendering arbitrary HTML within your app is almost Pythonic in its simplicity. However, there are a couple of gotchas which caught me out, so I decided to cover them here.

I started out by creating a new Activity class and a layout XML file for it. The layout XML was taken almost directly from the Android WebView Tutorial page:

<?xml version="1.0" encoding="utf-8"?>
<WebView  xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/shownotes"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
/>

In my Activity class the XML is loaded as normal. We also need to import the WebView class and the URLEncoder class. Additionally, the UnsupportedEncodingException class is required:

import android.webkit.WebView;
import java.net.URLEncoder;
import java.io.UnsupportedEncodingException;

Next, we need to encode the text in the correct format. Weirdly, WebView requires that the text is URL escaped, but without spaces converted to ‘+’ symbols. I used URLEncoder to encode my content then replaced the ‘+’ symbols with spaces. This probably isn’t perfect, but for my purposes it works.

String text = "<html><head></head><body>Content goes here!</body></html>";
text = URLEncoder.encode(text, "utf-8");
text = text.replace('+', ' ');

Finally, we find the WebView from the XML and tell it to load the string as its content:

WebView web = (WebView)findViewById(R.id.shownotes);
web.loadData(text, "text/html", "utf-8");

All the above is encased in a try..catch statement for UnsupportedEncodingException, just in case the URLEncoder has a fit. That’s pretty much it. In SwallowCatcher the ShowNotesActivity is 56 lines, including all the verbose Java imports and bootstrapping and loading the content from the database via ORMLite.

As a wise action hero (and ex-Jedi) once said, “I love it when a plan comes together”.

SwallowCatcher 0.1.2 Released

Download SwallowCatcher 0.1.2

Download SwallowCatcher 0.1.2

I’m proud to announce the release of a new version of SwallowCatcher. This version follows hot on the heals of the 0.1.1 release and fixes several bugs reported to me over the last few days. Specific fixes include:

* Fixed empty description tag problem (scratched by Linux Outlaws feed) as reported by @andyc in identi.ca.
* Fixed feed missing scheme validation problem as reported by @andyc in identi.ca.
* Fixed download permissions problem as reported by @andyc in identi.ca.
* Fixed individual feed refresh problem.

Thankfully, I have managed to hold onto my encryption key this time, so upgrading from version 0.1.1 should be smooth. Remember to check out the project page and the gitorious page where you can download the source code. Feedback and bug reports can again be submitted via identi.ca, email or via the comments on this post.

SwallowCatcher 0.1.1 Released

Download SwallowCatcher 0.1.1

Download SwallowCatcher 0.1.1

Today sees the release of the second version of SwallowCatcher, version 0.1.1. This version contains many enhancements and bugfixes over the previous version and should so be considered as the main stable release for the 0.1.x series. Further releases in this series will contain bugfixes, with new features being added to 0.2.x.

Obligatory release notes:

Features:

* Import Podcasts from OPML;
* Add Podcasts Via Barcode or URL;
* Open podcast:// and feed:// URLs directly in SwallowCatcher;
* Download Podcast feeds;
* List newly found Episodes;
* List Subscriptions and Episodes;
* Download Podcasts;
* Share via intent (and thence via email, mustard, etc.).
* Basic playback support.

Fixed Issues from Previous Version:

* New episodes screen issue;
* Can now add podcasts directly by feed URL;
* Added basic playback support;
* Prettier downloads list;
* Podcasts list remembers scroll position;
* Fixed text on the first run dialogues;
* Fixed OPML import from Google Reader;
* More robust feed/date parsing;
* Lots of general stability fixes;
* Much improved UI with more options, etc.

Known Issues:

* Downloads still aren’t pausable/resumable;
* I need some icons!

Future Plans:

The 0.1.x series will continue to address the remaining issues above and fix bugs.
The next main release (0.2.0) will include cover art and show notes support.

SwallowCatcher is still not in the Android Market so either download above or check out the project page and the gitorious page where you can download the source code. Feedback and bug reports can again be submitted via identi.ca, email or via the comments on this post. No Spam please (only ham and eggs).