Android Map Tutorials Updated to v1.5 (Cupcake) – MapView & MapActivity

I updated the map tutorials to v1.5 as well.  There were enough tricky challenges to getting maps working on Android that I thought it best to pass the information along. Here are the source files for this tutorial as well as all my other tutorials.

Tutorial 1: Transparent Panel (Linear Layout) On MapView (Google Map)
Tutorial 2: “Hit” testing on a View (MapView)

The first challenge to using Google’s Maps in Android is simply informing Eclipse that you’ll need access to Google’s mapping API.  Instead of writing my own tutorial on this, I’ll simply point you to the same well-documented Android v1.5 MapActivity setup that I followed.

The second challenge as always is getting your Map API key to function properly. Google provides full details on installing your Google Map key.  I spent several hours trying to figure out why my API key wasn’t working though…my Google maps always displayed as empty white/gray tiles.  Eventually I tracked the problem down to the fact that Android had created multiple debug.keystore files on my computer.  I’m running Vista so my .keystores were located in both of these directories:

Incorrect: C:\Users\acopernicus\AppData\Local\Android\debug.keystore
Correct: C:\users\<username>\.android\debug.keystore

I wasted time by using the .keystore in my AppData folder as this was the original place where the .keystores were stored in Android v1.0.  However it now seems that Android now uses the .android directory instead.  If you have problems, figure out which directory Eclipse is pulling your .keystore from when signing your apps.
 

Android Streaming MediaPlayer Tutorial – Updated to v1.5 (Cupcake)

After spending the last year game programming on the iPhone, I’ve finally returned to Android.  My six prior tutorials were outdated (Android v1.0) so I took the time to update them to v1.5 (Cupcake).  The most popular of those tutorials was the Streaming MediaPlayer tutorial so that’s the primary focus of this post. 

Tutorial #3 results screenshots

At the time of initially writing the streaming tutorial, Android’s media streaming function didn’t work well so I wrote my own.  As of v1.5 however, Android’s MediaPlayer streams very well.  That said, it’s still useful to know how to retrieve a media file from a server and store it on the device.  This would be useful to immediate replay of the file at a later date or for caching files for later playback ‘off the grid’.

Download the source files to get started immediately and then view the rest of the tutorial after the jump.

Continue reading ‘Android Streaming MediaPlayer Tutorial – Updated to v1.5 (Cupcake)’

Android Challenge 1 Round 2

First we want to thank everyone for their comments about our prior Android tutorials.  We’re very glad to have helped you guys.  Many of you have asked why we haven’t posted new tutorials, and the reason is that happily, we’ve spent the few months working hard on our submission into Round 2 of Android Challenge #1.  Yes…if you hadn’t heard already, we were one of the top 50 finalists.

As soon as Google releases the next SDK, we’ll write up more tutorials based on the lessons we’ve learned over the past months.

Until then, we’re getting out to exercise and enjoy some sunshine away from our desks.

Cheers,

Anthony (Biosopher)

Android Application Lifecycle Demo

An excellent video on Android’s application lifecycle has been posted today by Sleepy Droid:

Demo video here

I thought I already knew everything about Android’s app lifecycle, but this visual refresher and sample application were a great refresher. Understanding the application lifecycle is crucial to writing good Android apps so this video shoud be useful to pros and newbies alike.

Sleepy Droid says they’ll be creating more videos if the response is positive so visit Sleepy Droid to see if new videos have been posted.

Thanks Sleepy Droid!

iPhone Getting GPS & SDK Getting Maps API…?

Since I dissed the iPhone SDK earlier this month (iPhone SDK lacks mapping function), I wanted to pass on this update. Looks like a GPS-enabled iPhone is in the works for Apple’s upcoming World Wide Dev Conference. Even if the announcement doesn’t come then, looks like it will come soon according to EnGadget:

Second-gen iPhone: 3G, GPS, only slightly thicker

Click to see new GPS-iPhone at EndGadget

This is great news for mobile map-based application developers but don’t count on the API being as slick and open as Android’s. Given Apple’s approach so far, they’ll still withhold the vital functionality to get your app really humming.

Why do I say that?

Well for example, Apple’s SDK doesn’t allow applications to run in the background. That means death to any Pocket Journey app that would run on an iPhone as the audio/video would be killed along with your application as soon as someone called. Apple says this is for security reasons, but we know it’s due to Apple’s “control freakish” corporate nature. Happily for us, Android solved this challenge through their Service API.

Seems like Apple wants to step back to the dark ages of the Palm OS which can only handle single-threaded tasks as well

Android Tutorial #4.2: Passing custom attributes via XML resource files

In tutorial #4.1, I mentioned that we passed custom attributes for the text and image variables from the XML resource file to our custom class. This is a critical skill for performing true object-oriented programming and how to do it wasn’t obvious from Google’s Android API Demos.

Luckily I was pointed to the solution myself by an experienced Android programmer in Guatemala by the username of cadlg (thanks again!). If you want to see the official Google Android example though, look at Android’s APIDemos’ custom LabelView example.

So here we go. We’ll use the same code as Tutorial 4.1 to keep this simple.

Continue reading ‘Android Tutorial #4.2: Passing custom attributes via XML resource files’

Android Tutorial #4.1: Image & Text-Only Buttons (UPDATED)

This very simple tutorial will add to your Android UI (user interface) development arsenal. How? Buttons that display as simple text or as images are basic elements of any application. By following the two steps below, these buttons can be easily created with Google’s Android by simply extending the current Button and ImageButton classes.

We will create these two new Button extensions as shown:

Text and Image Buttons

Continue reading ‘Android Tutorial #4.1: Image & Text-Only Buttons (UPDATED)’

iPhone SDK lacks mapping function (Android doesn’t of course)

Here’s a quick insight from research into the iPhone SDK in comparison to the Android OS.

Yes…you read this post’s title correctly. The iPhone SDK lacks the basic mapping API required by applications developers hoping to tie the mobile experience to a geo-specific location (GPS). The only GPS mapping function provided by the iPhone SDK is to send a URL to the iPhone’s built-in Google map application and to let Google handle the rest.

Curiously the iPhone SDK does provide a basic location service API providing the user’s location using cell signal triangulation, but without a map, this information is all-but-useless.

At first glance you might say, “that makes sense as the iPhone doesn’t have GPS built-in because it would have raised the price of an already expensive phone.”

Point taken but all this leaves me to believe that Apple’s take on the iPhone is too media focused and lacks clear understanding of the power provided by location-awareness. That’s great news for the upcoming GPS-enabled Android phones. They’ll have time to widely proliferate before the soon-to-be almost 10M iPhones out there will be replaced with GPS-enabled iPhones.

Imagine if Android had lacked the MapActivity API…?!? From my count, 90% of the most interesting Android Challenge entries would never exist. Without Android’s MapActivity API, we would be left with a few accelerometer-based games and non-SMS messaging apps.

This is great news for Google and perhaps that’s the point. Google wrote the iPhone’s map application and was either not given incentive to make expose its iPhone map through an API or perhaps decided it was smart to keep the iPhone limited in this crucial manner. OK…maybe Apple has a bigger plan as it always does. Maybe Apple is preparing to launch its own mapping application or perhaps AT&T didn’t want Apple to expose such location-based apps because AT&T has its own GPS agenda.

Thoughts anyone?

Android Video & Screenshots Released

We were inspired by all the great videos presenting other Android-enabled applications being entered into Google’s Android Challenge so we created a short (4 minute) video about Pocket Journey.

Video Splash

Continue reading ‘Android Video & Screenshots Released’

Android Tutorial 3: Custom Audio Streaming with MediaPlayer

Introduction

NOTE: This tutorial was written for Android v1.0.  I have just updated the code to v1.5 (Cupcake) and written a quick addendum to that streaming media post with some additional information on the updated code.  You should read that post as well as this one.

This is a long tutorial, but for those of you that have been struggling with streaming of .mp3 audio to Google’s Android’s MediaPlayer, then I hope this tutorial proves useful as you finalize your entries into Google’s Android Challenge

This tutorial will show how to roll your own streaming audio utility for Android’s MediaPlayer. We will buffer 10 seconds of audio and start playing that audio while the rest of the audio loads in the background. We store the streamed audio locally so you could cache it on device for later use or simply let it be garbage collected.

Here’s the source code for those that just want to jump in. You’ll also notice code for the other tutorials as I didn’t have time to strip them out.

Here are a few screenshots of what we’ll be creating:

Tutorial #3 results screenshots

Continue reading ‘Android Tutorial 3: Custom Audio Streaming with MediaPlayer’

Next Page »


a