Monday, November 15, 2010

Cover Art Downloader for Android is now even faster!



Since its release to the Android Market, Cover Art Downloader has been the quickest and easiest way to tag your music collection with the appropriate album art. Version 1.2.2, was released today with 2 new features that can save you even more time.

1) Fast scrolling
With fast scrolling, you begin scrolling through your albums and you will now notice a grab handle on the right hand side of the screen where the scrollbar is. When you grab onto this handle and slide your finger, a box on-screen will let you know where in your collection you are letting you quickly find a particular album.

2) Search suggestions
You may not know this already, but you have always had the ability to filter the albums list by a search term of your choosing by pressing your hardware search button or choosing filter from the main menu. I often will enter an artists name so I can work with only the albums by that artist. Now, as you begin typing your search term, you will be presented with a list of matching artists and albums. Save yourself a few key strokes and simply click on an item in the list to filter just that artist or album title.

Many more features are on the way shortly, if you have a feature you would like to see in a future version please let me know.

Sunday, November 14, 2010

Wallpaper Slideshow for Android


Following the success of my Gnome Wallpaper Slideshow for Linux, this was one of my first Android projects. The beta was originally uploaded to the Market on October 28 2010. Today I am happy to announce the beta tag has been removed and version 1.0 of Android Wallpaper Slideshow is now available to download FREE from the Android Market.



Android Wallpaper Slideshow allows you to select a folder from your SD card that will be cycled through at a user defined interval. Pictures are scaled and cropped as needed to fill your screen in either portrait or landscape modes while preserving aspect ratio. Images are transitioned with a nice fade effect. You can optionally select to display the images in random order instead of file order. And you can select to rotate the images to match your screen orientation. Your SD card is automatically recursively scanned for all folders containing images from which you can choose from. Hidden folders, folders containing only an AlbumArt.jpg file and folders containing a .nomedia file will not be available for selection.

Wallpaper Slideshow on AppBrain

Wallpaper Slideshow is open source, visit the project page at http://code.google.com/p/android-wallpaper-slideshow/

Sunday, November 7, 2010

Getting your album art to show on Android




Traditionally, getting your album art to show on Android has been a complicated task. If your audio tracks weren't initially tagged with embedded album art or a specially named file inside the albums folder before being loaded onto the device, there was no hope of getting the artwork to be displayed. Furthermore, embedded album art on Android is only supported for MP3's, so if your music is in another format like OGG, FLAC, MP4 or AAC, then the file naming scheme for your device was the only option. To make matters worse, the filename required is inconsistent across devices. For instance if you are running stock Android, the file needs to be named AlbumArt.jpg or if your phone is running HTC Sense, it's a cryptic filename like ~hTC_The Name of My Album.jpg.

The only way to make album art show up after initially loading it onto the device was to mount the phone to a computer with USB, copy the files back over with embedded album art or copy the album art image with the correct naming convention to the sd card and store it in the proper location. Then go to Settings > Applications > Manage Applications > All > Media Storage and press Clear data, then reboot your phone. This also would delete your playlists, video thumbnails, picture metadata, etc., and the reboot would take several minutes as it rebuilds the database. What a pain!

Normally in a case like this, you would turn to the Android Market for solutions. However, until recently the only options on the market were poorly rated expensive apps. Then, Album Art Grabber Free hit the market. This grabber worked for about 75-80% of my collection, but it has a slow interface (it takes 4 clicks to set just one cover); doesn't work with various artist releases, singles or rarities; only searches for album art by artist name; doesn't allow custom artwork to be used; doesn't save album art to sd card so it can be detected by the media scanner after a wipe; doesn't embed artwork into id3 tags; artwork won't show up in 3rd party players that don't read the metadata from Androids internal database; it has a clear album art option but it [works] only on the entire collection, you cant clear a single album, but worse when you click the button, absolutely nothing happens; it is ad supported and it nags at you to donate. There are even reports of the album art not even persisting across a reboot and no way to save album art between data wipes or moving your sd card to another device, so if you frequently flash a new rom or replace your phone you will not have your album art until you download it again.

So this prompted me to write my own, Cover Art Downloader. Version 1.0 was released free on the Android Market on November 1, followed by a quick bug fix release on November 2. I am proud to announce that version 1.2 is now available and is the quickest, easiest and most accurate way to import album artwork on any device running Android 1.6 or higher.

This release features:

* 1-Click download of artwork for any individual album
* Batch download to grab all missing artwork automatically
* Can filter albums list to make albums easier to find on larger collections
* Manual searching for unknown artwork by Artist, Album or any other term
* Can set custom artwork from Gallery (SD Card)
* Option to save album art to sd card in proper location with the proper name for your device so your artwork will still be there if you wipe your phone, get a new phone or flash a new rom
* Allows clearing of artwork from individual albums

Additionally, a donate version ($1.99) is available on the market with these additional features:

* Embed album art to id3 tags
* Automatically scan for and download artwork when new albums are detected on the device

Now, you can quickly download all of your missing album artwork, have it work in 3rd party players and persist across device reboots, factory resets or replacements.

Cover Art Downloader for Android on AppBrain

Tuesday, October 26, 2010

Is the iPhone and "walled garden" approach really that bad?

I am a software developer, and as such, I have found mobile phones a great new market to focus attention on. Naturally I started developing for what I had, a T-Mobile G1 running Android. When I first got the phone, I wanted to write a Last.fm scrobbling client, but I didn't understand the whole SDK, particularly the API calls needed for such a program. As it turns out it's a fairly advanced application to write. After some time of getting nowhere, ScrobbleDroid showed up in the Market, then some time later A Simple Last.fm Scrobbler and finally the official Last.fm application. By that time I had already abandoned my efforts since I was beat to the market. What's great, is all 3 of those applications are not just free, they are open source. I could view the source code and figure out where I went wrong, which has been a huge help in what I am currently working on.

Next I decided to write an unknown call blocker. Monitoring incoming calls, and if the number was unknown or blocked it would send the call immediately to voicemail. This could be further expanded by checking numbers against an online known spammer registry. I was very disappointed then to learn that the Android SDK which supports outgoing call interception does not support intercepting incoming calls. Your application cannot prevent the phone from ringing on an incoming call.

After those two projects failed to materialise, I went back to the drawing board, but at the rate new applications were pouring into the Market I couldn't think of an original idea that really filled a gap in the Android software stack (there weren't many of them). So I continued to study the SDK and continued to think about a new app, but never wrote any code. I even would periodically check out what's cool on the iPhone for inspiration, but I never could find any cool iPhone apps that really did anything Android or an Android app didn't already do better. They were just sound makers or stupid games, and they weren't open source, in fact people were charging $1.49 - $4.99 for completely pointless and stupid software.

Finally, I had my idea, and not just 1, but 5! Two of them are not original, just a different, better approach or extra features. The first was a Phase 10 (card game) scoring application, which beats the others on the market by actually calculating score (simple I know), having a better workflow and automatically sorting the players by phase and score.

My second application was a wallpaper slideshow. It lets you select a photo gallery on your phone and will cycle through the images at a user defined interval as the phones wallpaper. It crops, resizes and rotates as needed to fill your screen.

Next I did a Starbucks card manager that lets you select a card to display as a desktop widget, so you can quickly see your balance at a glance from your home screen.

Following that I started working on another homescreen widget, to show your PS3 player score and trophies.

And finally, a Dynamic Playlist application that monitors what you listen to using your stock music player and adds recommendations from Last.fm to keep a cohesive playlist running instead of shuffle all or party shuffle which would randomly pick music from different genres. Currently, I am adding in support for popular third-party players.

A few things recently occurred to me. None of these applications would even be possible on an iPhone. First, Phase 10 Score on iOS wouldn't allow me to keep the same workflow. iOS only lets you set a single static photo as a wallpaper, it doesn't have a "live wallpapers" concept. Background applications are only supported on iOS4 and Wallpaper Slideshow would not fall into one of the seven allowable background APIs. iOS has no widgets that can be placed on your homescreen, so Starbucks Card Manager and PS3 Trophies Widget are out. iOS has no content providers and doesn't allow you to bind to other application services so I couldn't write a Dynamic Playlist plugin for iTunes. To this day you still can't even live scrobble your iTunes to Last.fm even with the official application, it requires syncing to iTunes running on your computer.

The Android emulator is great, but if I want to test my applications on one of my devices, I simply connect it to the debugger and push it onto the device. 10 seconds later it is up and running. I can then put it through an automated stress test and memory profiler to make sure it won't crash on various hardware. I don't have to pay $99 and wait 1 month for the application to be approved by Apple to run it on my own device.

If I want to test my application on any specific hardware, I simply send someone the installer. This is so simple on Android as I can send it to their Gmail account which is pushed directly to their phone. The user simply clicks 'Install' right from Gmail on their Android phone and I can even have it send me dumps and stack traces directly. Again, no paying Apple or Google for this privilege and no approval process or waiting period.

When it comes time to publish, a single $25 developer certificate covers ALL of my applications, and my applications are available to download from the Android Market in 5-10 minutes, and pushed to all mirrors in all supported markets in less than 24 hours.

The Android SDK, developer tools and emulator run on ANY computer, not just Apples OS X, and you can upload your applications to the Android Market from ANY computer. You don't have to borrow a friends Mac to test or upload your applications.

So from this developers perspective, the iPhone and walled garden approach simply does not work, and there is next to no chance that I will ever take the initiative to publish an application to iOS. The iOS platform and Apple Store are just too restrictive to develop creative applications, and I don't want to spend several months developing an application just to have it repeatedly rejected by Apple before I can even test on my own devices.

From what I can gather, I am not alone in this thinking. Android Market now has over 100,000 applications, is selling faster and iPhone and as more users leave their iPhones behind and jump ship to Android, more and more developers no longer wish to deal with the headaches of iOS development. So, Is the iPhone and "walled garden" approach really that bad? YES.

Sunday, October 10, 2010

How to secure your Ubuntu Linux desktop

A big reason a lot of people install Linux is for the extra security. While Ubuntu is a pretty secure operating system, new exploits and viruses are found every day. There are still a few simple steps you can take to secure your computer against intruders and internet exploits.

Anti-Virus is a pretty controversial topic on Linux. The popular belief is that Linux is by design immune to virues. Even though your Linux computer may not be infected, you can still host virus infected files. If you are downloading and sharing files via P2P, email or across your network with other Windows computers, anti-virus is essential. The method we take here will not consume vast amounts of system resources that slow your computer down, as is the case with most security suites on Microsoft Windows.

Regardless of operating system any computer connected to the internet should:

1) Install security updates automatically
2) Configure a firewall with a minimal set of rules
3) Install anti-virus software with updated virus definitions and regular scans
4) Protect their browser from XSS and link jacking exploits

This video will show you how to set up all of the above, simply, using only the Linux GUI. No terminal is needed.



This just scratches the surface of securing Ubuntu. Check back later for more advanced topics such as: port scan detection, brute force detection, application profiles, logging and more.

Thursday, October 7, 2010

Getting ADB (Android Debugger) to work on Ubuntu 10.04+

In my spare time I enjoy writing Android applications and exploring the vast Android SDK. Though I have not yet published any apps to the Market, I have a few going through final QA testing which will be released soon.

Often times, I will need to get an adb shell, watch the logfiles on the phone, or want push my apps to my devices for testing or debugging on a real device. I do most of my coding in my spare time on my laptop which was running Ubuntu 10.04, and any time I tried to open adb it wouldn't connect to the device. I would just see "????????" as the serial number and "no permissions" as the device name. As a result, I have been having to use my workstation which runs Ubuntu 9.10 for all of my debugging.

I upgraded early to Ubuntu 10.10 as I often like to test the latest Ubuntu betas and release candidates. I was also hoping the latest release would fix my issue, which unfortunately, was not the case. So I started out on a quest to get to the bottom of things.

It didn't take long to discover that it's a permissions issue, and the recommended fix I found repeatedly was to kill adb server and restart it as root. I quickly tested that and surely it worked, however that doesn't work so well for starting it via Eclipse and ADT and I never want to run a program as root without good reason.

It works in 9.10, it's just a permissions issue, so I thought a quick change to the new hal rules in Ubuntu were in order, but I couldn't find any such documentation on the workings of hal and its permissions. Lots of digging around and I found a comment on XDA with a udev rule. Opened up the terminal and typed 'lsusb -v | grep 0bb4' and sure enough that was the correct vendor id for my HTC Evo.

So here are the steps I took to get it working:

echo "SUBSYSTEM==\"usb\", SYSFS{idVendor}==\"0bb4\", MODE=\"0666\"" | sudo tee /etc/udev/rules.d/51-android.rules
sudo restart udev

I hope that helps you. If you need to find your devices vendor id you can try this:
$ sudo lsusb -v | grep -C5 Android 2>/dev/null
  bMaxPacketSize0        64
  idVendor           0x0bb4 High Tech Computer Corp.
  idProduct          0x0c8d 
  bcdDevice            2.26
  iManufacturer           1 HTC
  iProduct                2 Android Phone
  iSerial                 3 HT05JHL0XXXX
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2

P.S. Please feel free to add your device and vendor id in the comments to save others some trouble.

Monday, June 28, 2010

My top 10 Android apps

Of course a phones priority should be to make calls, but today people expect so much more from these powerful mini computers resting in their pockets and purses. The Android operating system is the most powerful and fastest selling mobile phone operating system available today. Not only does it enable you to make phone calls, but to send text messages and chat with your friends online; browse the web; check your email; purchase and listen to music; take and share pictures and video; manage your contacts, calendar and to-do lists, gps navigation and much more. With Android smartphones using more data monthly than all other smartphones combined, they are truly connecting the masses online wherever they may be.

Android definitely does not fall short when it comes to customization however. With a market accessible directly from the phone and growing in applications by thousands every week, it can be difficult for a new user to sift through everything out there and pick the few that really make the phone their own. I have pointed out my top 10 favorite applications with a short description of each to help you as a starting point.

1: Google Voice (free)

Seems like people are doing more playing than talking on their mobile phones these days, but when you do talk there is no better way to do it than with Google Voice. Screen and block unwanted callers, personal greetings for individual contacts or groups, record your conversations, get voicemail transcribed to text with lots of delivery options, a new number to ring all your phones (mobile and landlines), free unlimited text messaging. Full integration with Android makes it simple to use as a full phone and messaging replacement. The Google Voice beta just ended, so it is now open to everyone to try.

2: Swype (beta, free, android exclusive)

Why type when you can Swype? This software keyboard replacement is not only fun, it is the fastest way to enter text on your mobile devices. Full replacement means it is available for use directly in all of your apps, (no copy & paste needed on Android). Run the tutorial after installation to quickly get you up to pace on this awesome input method. I also recommend using MyTextSpeed to really learn how to swype fast. The latest round of beta just ended, but hopefully they will do another soon or release the final product shortly.

3: Launcher Pro (beta, free, android exclusive)

This home screen replacement is the best i've seen. It takes the standard Android desktop and makes it faster while adding some new features and customization. Includes up to 7 home screens, expose effect, a scrollable dock bar with customizable apps and icons, 3d app drawer, landscape mode and more. The only negative is losing the Sense Widgets, but there are many widget packs available in the market to replace them. Updates are frequent and it just gets better as they get closer to a final release.

4: Trackmaster ($4.99, android exclusive)

Trackmaster is a very precise lap timer, but that just barely scratches the surface of this apps features. It is also a great data logger and gives you very useful statistics. If you participate in any type of motor sports, you will not know how you ever did it without Trackmaster. Take it with you to your club racing, lapping or hpde days, rallycross, autocross, etc. While it's not something everyone will use, it is simply an amazing app and really showcases what is possible on Android. For drag racers and tuners, check out Dynomaster by the same author.

5: Connectbot (free, android exclusive)

This is a full featured SSH and telnet client which supports public key authentication and port forwarding. Works with hardware or software keyboards and maps essential keys like ctrl, alt & esc. I use this to remotely and securely manage my servers, home DVR and connect Andchat (below) to my IRC proxy (which is only possible using true multi-tasking only available on Android). Not an essential app for everyone, but no SSH application on any other mobile platform can compare to Connectbot when you really need it.

6: Pandora (free)

Pandora really needs no introduction. You can use it without any account or registration, but if you are willing to part with $3/mo you get some good premium options including no ads and high quality audio. Pandora for Android is great and the desktop widget and stations folder make it a better experience than other mobile platforms. You can get Widget Locker from the market and use the Pandora widget on your lock screen for a truly immersive experience.

7: Last.fm (free)

I have invested a lot of time writing algorithms to create the perfect playlist and while Pandora does a good job for casual listening, when I really want to rock out I will play my music directly from my SD card using the built-in Android music player. Since my algorithms depend heavily on Last.fm data it is only right to give it back. The official Last.fm application is the most full featured and also works with ScrobbleDroid and Simple Last.fm Scrobbler API's so it is the only scrobbler you need. On Android, Last.fm can scrobble music played from any application immediately and directly from the phone, no syncing with your PC required.

8: Andchat (free, android exclusive)

Most of my online social interaction happens on IRC instead of Facebook or Twitter. It is one of the first real-time chat protocols and one of the last places online where you can find any sort of privacy these days. It is a great place to go if you need some Linux or programming help (just don't be surprised if someone tells you to RTFM if you haven't done a simple Google search first). You can find me on AfterNET.

9: ShopSavvy (free)

First winner of the Android Developers Challenge, ShopSavvy is a great tool that can save you some time and more importantly some money. Simply scan a barcode or search by product name and it will find the cheapest prices for item online and local. You can even set up shopping lists (or wish lists) and price alerts to be notified when a product falls below a certain price. Unfortunately it is no longer an Android exclusive.

10: WRC (free)

I am a rally fan and the recently released official WRC application for Android is perfect. It gives complete access to the latest rankings and news, event information, driver and team bios, stats, photos, and even videos from the events. It's everything a rally fan could ask for besides a seat next to Loeb as he dominates the competition in Bulgaria next week.

Honorable mentions:

Facebook: An essential app to most, however the featured Android phones these days usally come with Facebook support built right in with much better integration than the offical application.

Twitter: Same as Facebook, most phones come with better support built-in and the official app requires Android 2.0 or higher. Twidroid is a good Twitter client, but I have a strict policy about giving my sensitive login information to 3rd parties.

Spare Parts: Some developers don't know how to write applications for mobile devices and can eat through your battery pretty quickly. This is a great utility to see what applications are using up your battery as well as tweaking some phone options for longer battery life, but if you stick to well known programs from good developers shouldn't needed. If you find your battery isn't performing well download it and look for applications with high partial wake lock usage.

Astro File Manager: A good utility for managing phone storage, all of which can be accomplished using the built-in operating system tools or by connecting your phone to a computer via USB. It is good to keep around but will not be needed daily.

Techbuzz: A nice RSS reader and widget, however it lacks the ability to add your own feeds and I much prefer the news app included with Sense UI. Newsrob is supposed to be a good reader also, but requires your Google account login and password which makes it a deal killer for me.

Shazam: Pretty cool program that uses the phones mic to identify music playing. If the list was the top 15 applications, it would be included for sure.

ShootMe: Takes screenshots (like the ones here), but unless you are using an HTC Evo, it requires the device to be rooted.

Weatherbug: Good weather application with current conditions and forecast, a good widget also, but it eats through your battery like crazy and I have no problems with the default Sense UI weather app.

Fring: Video chat. Supposed to be good but is currently broken on the Evo and suffers horrible video lag.

I hope this list helps you get started using and customizing your new Android phone, or can introduce long time users to new applications. If you have a favorite I missed, please leave it in the comments below.