I've had some success with OpenGL and live wallpapers. I didn't really care for the implementation in the blog you mentioned, however there really isn't a better way to do it that I've found.
The GL ES code needs to be called from a separate thread which means you have to handle state changes in your rendering loop. This really isn't a big deal except I don't believe live wallpapers were ever intended to use the GL hardware.
I've come across a number of race conditions, the most troublesome being onVisibilityChanged. From the testing I've done the parent whom calls onVisibilityChanged doesn't actually wait for it to return. In the case of slower hardware the GL thread has a good chance of calling eglSwapBuffers after it's lost access to the surface.
I need to grab the source out of git and see what the parent is really doing.
It's entirely possible I'm handling the threading wrong, Java isn't my best language. Still I've got a fairly clean implementation that works pretty well on faster hardware, the Droid for example.
I'd be glad to share if you're interested.