bloovis.com

06/30/2010 (3:53 am)

Reading non-DRM ebooks using the Amazon Kindle app for Android

Filed under: android, kindle ::

The new Amazon Kindle app for Android stores its books in the “kindle” directory on the phone’s SD card. I naively assumed that I could copy any non-Amazon but Kindle-compatible books into that directory and have the app recognize them. I tried this with a mobipocket Jane Austen collection (a .prc file) that works just fine on the Kindle, but the Android app crashed immediately after display the book’s title and author.

The trick to getting such a book to be recognized on Android is to use Amazon’s free personal documents service to convert the file to a DRM-ified .azw file.

First, I emailed the .prc file as an attachment to my free personal documents email address: EXAMPLE@free.kindle.com (obviously, you must replace EXAMPLE with your configured Kindle email address). Within a few minutes Amazon converted the file to a .azw (DRM-ified version of the original file), and replied with an email that included a download link for the converted file.

I saved the file to a temporary directory on my computer and renamed it by changing the .azw extension back to .prc. This renaming is very important; otherwise, the Android app won’t recognize the file.

Finally, I copied the file to the kindle directory on the phone’s SD card. The Kindle app can see the file and display its contents.

03/25/2010 (8:02 pm)

Moving from Keyring on Palm to KeePass on Linux and Android

Filed under: android, centro, linux, nexus one ::

Keyring is a fine little open source application for Palm OS that stores and generates passwords. There is no Android version of this program, so I decided to move to KeePass 1.x, both the Linux version and the Android version.

Then I hunted for way to import my Keyring data into KeePass 1.x. I couldn’t find a tool to do this, so I had to invent my own method, which included writing a conversion script in Ruby.

The first step is to generate an XML version of the Keyring data file, using this Java program. I fed it the Keyring data, a file called Keys-Gtkr.pdb that I had previously backed up onto my Linux machine using pilot-xfer. It produced the XML equivalent, which I redirected to a file.

Then I wrote a Ruby script called kr2kp, which reads the Keyring XML file and outputs KeePass-compatible XML. I saved the output of this script to another file.

The Android version of KeyPass doesn’t import XML, so I turned to the Linux version, and used it to import the XML file I had created in the previous step. Then I saved the resulting database into a file called keyring.kdb.

Next, I copied keyring.kdb to the keepass directory on the Android device’s SD card. (The exact path of the SD card will depend on the directory where your computer mounts the SD card when you connect the Android device via USB.)

Finally, I ran the Android KeePass app and opened the keyring.kdb file. The Android app is somewhat limited, and doesn’t let you move entries between groups or rename groups. So that kind of manipulation has to be done on the Linux side, and then the .kdb file has to be copied to the Android SD card, as described above.

03/25/2010 (5:31 am)

The impoverished state of Android Apps

Filed under: android, centro, nexus one, ruby, software, treo ::

One of the reasons why I decided to buy an Android device was to investigate the possibility of writing applications for that platform. After spending a couple of days with Android, it’s pretty clear there are huge voids in the app space waiting to be filled. The transition from Palm OS is going to be painful because the following apps have no equivalent on Android:

  • Adarian Money. This is lovely little financial app that I’ve used for several years to track every penny I spend. The Android checkbook apps do not come close; the best-selling one doesn’t even track expense accounts, let alone support double-entry accounting. Clearly, a lightweight version of GnuCash is needed here.
  • DateBk. I’ve used this program for nearly ten years in its various incarnations, from DateBk+ on a Handspring Visor, to DateBk5 on a Centro. It’s the king of calendar apps and nothing on the iPhone or Android comes close. The Google Calendar app does sync with the web version, but is otherwise very minimal. It also has a serious bug: its ringtone reminders do not work when the screen is turned off, so you’ll miss appointments and meetings constantly. Pimlico has hinted that they might be porting DateBk to other platforms, but who knows when or if Android will ever be supported.
  • ListPro. This is a checklist app on steroids, almost a mini-database. I use this for packing lists, lists of items lent out to other people, notes on things to look up when I get home, to-do lists, etc. The Android apps are the usual mix: either seriously broken or only supporting a tiny subset of ListPro’s features.

If I didn’t have a full-time job, I’d start working on filling these gaps myself. I may do that anyway as a rainy-day weekend hobby. The prospect of writing in Java is not pleasant, so I may start working on the algorithms and data structures (or Models and Controllers, in newspeak) in Ruby, and hope that Duby is usable on Android by the time I need to start thinking about the UI (or View in newspeak).

03/22/2010 (7:06 pm)

Moving contacts from Palm OS to Android

Filed under: android, centro, nexus one, treo ::

After nearly ten years of using Palm OS PDAs and cell phones, I’m moving to an Android phone. I didn’t want to enter over 100 contacts manually on the new device. Some Google searching turned up ways to migrate the contact list, but most of them involved running Palm Desktop software on Windows. It turns out there is a non-obvious, Windows-free method, described here. In case that forum posting goes away, here’s a repeat of this method (slightly modified):

  1. On the Palm device, run the Phone app, then select Contacts.
  2. Choose the category to display; I chose All.
  3. Press MENU button and choose Send Category.
  4. Choose Email; this will send your contacts as an attachment file called All.vcf, and will bring up the email app to send it.
  5. In a web browser on your desktop computer, open your Gmail account.
  6. Find the message containing the attachment All.vcf. Click on the download link for the attachment and save it somewhere on your computer.
  7. In Gmail, select Contacts, then Import, and locate the file you saved in the previous step. Gmail will merge the contacts contained in that file into your existing Gmail contacts. Your Android device will find those contacts when it syncs.