Android is an open source software stack for mobile devices that includes an operating system, middleware and key applications. It allows developers to write managed code in Java for the Dalvik virtual machine. The Android application framework provides components like activities, services and content providers that can be reused. It also supports hardware like cameras, GPS and accelerometers.