High quality content and traffic is key. If the traffic quality is poor, my earnings go way down. I don't see too much change with the type of content though.
Adsense earning depends on traffic to your blog, its placement on the page ( If its in a strategic position it will attract more traffic) and finally its ad relevancy to your blog.
The best option is to create a quality content website and then place the google adsense on your website. As google is giving preference to content it will help to increase the adsense exposure. Do not place adsense links on your website which do not have good content.