I have just about completely ditched the android emulator because it is irritatingly slow and I'm constantly finding it with its pants down trying to talk to eclipse. At our company we've also found that it doesn't give an accurate idea of how readable the text is in your interface, or how easy it is to interact with, partly because it's just too big on the screen and partly because it's sluggish.
It is at its most useful when I want to pull a file from internal storage, which often isn't possible on a device, or when I don't have a device handy, in which case it is a passable solution. It's never, ever my first choice, though.
I use the emulator for continuous integration. Its really helpful for unit- and integration-testing. Combine it with Robotium and you can thoroughly test you application across screen sizes and Android OS Versions.
I'd like to second a thank you for pointing out Robotium, since I was trashing the emulator in the first place. I will definitely be checking that out for my next project.
I use the maven-android-plugin to build the dependencies in seperate modules. I have a patched version of bouncycastles crypto implementation (to have openpgp in android). Then there is the network code which also contains no android dependencies so it can be tested without the emulator.
The testapp and the app are copied to the emulator or a real device. Then the instrumentation is started. The maven build fails if any error or failure occurs while building, installing or testing.
The continuous integration is done by hudson. The emulator can be started "headless" (-no-window) so it doesn't need to connect to the running XWindow-Server. Currently I am starting the emulator from maven with a special profile that is only used in hudson. When testing locally I usually have my phone already connected. It seems to be possible to have hudson start the emulator. With that setup logcat-output would be captured by hudson. Thats were I want to go.
Also missing in my setup is an multi environment build with all screen resolutions, locales and OS-Versions.
It is at its most useful when I want to pull a file from internal storage, which often isn't possible on a device, or when I don't have a device handy, in which case it is a passable solution. It's never, ever my first choice, though.