I have used proguard. It works well. It took me a couple hours learning how it works and optimizing settings. The basic concept is the scramble and shorten variables names and methods so the code still works, but a human would have a hard time reverse engineering the code without considerable effort. One side benefit is that it compresses the size of your classes.
Proguard is a little slow (maybe all obfuscators are). Recently it quit working on my code. It may be running out of memory.