Am geschicktesten ist es meiner Meinung nach, tatsächlich auf Java zu setzen, wenn man (zunächst) nur Apps für Android anbieten möchte. Alle Beispiele von Google, jede Menge auf die Plattform zurecht geschnittene Open Source-Komponenten usw. sind in und für Java vorhanden. Alle anderen Technologien zur App-Entwicklung hinken hier und da meistens etwas hinterher.
So kann man mit Apache Cordova (ehemals Phonegap) mit Javascript und
HTML Apps schreiben, die beste Voraussetzungen dafür mitbringen, sich ohne größere Anpassungen auf andere Plattformen wie iOS oder Windows Phone portieren zu lassen. Diese Apps fühlen sich aber in der Regel nicht so an, wie "richtige" Apps. Die Funktionalität dieser Apps ist auch limitiert (soweit mir bekannt ist, ist es nicht möglich Bluetooth zu verwenden, oder Services im Hintergrund laufen zu lassen usw.). Oft sieht es so aus, als ob man eine mobile Website in eine App verwandelt hat.
Dann gibt es noch Xamarin. Da schreibst Du Deine App in C# und programmierst direkt gegen die Android-APIs ohne weitere Zwischenschickt. Xamarin-Apps sehen dann vom Aufbau genau so aus wie Java-Apps, nur dass eben C# im Spiel ist. Interessant wird es dadurch, dass man bei geschickter Trennung von Logik und Oberfläche, seine App auch für iOS und Windows Phone anbieten kann. Am Ende fällt für also drei Plattformen etwas heraus, dass ein "natives Erlebnis" bietet.