Depende da plataforma
Android - JAVA, C # (via MonoDroid)
IPhone - Objetivo C, C # (via MonoTouch)
Windows Phone - C # (Silverlight)
Meego - C ++ (QT)
Symbian - C ++, JAVA
Acho que o Symbian será descartado pela maioria das empresas. Telefones inteligentes são o futuro. E para todo tipo de sistema operacional para smartphone, o C # / mono estará disponível (você precisa pagar mais, mas a usabilidade vale a pena) junto com o idioma da plataforma nativa. Então, você pode ir para C #.
A verdadeira independência da plataforma pode não ser alcançada, mas se você usar C # em qualquer lugar, poderá usar as mesmas bibliotecas principais e ajustar a interface do usuário da plataforma.
Mas para telefones de baixo custo, o C # não funciona. Você tem que ir para JAVA.
Não é possível falar especificamente sobre o Motorolla ou a Nokia, mas é preciso ter em mente qual é a plataforma de suporte deste telefone. Você desenvolveria melhor em Java, pois é uma plataforma mais popular e não precisa depender apenas de celulares com Windows. Mais uma coisa que o C # é tão descaradamente próximo ao Java que um compilador cruzado faz o truque para aplicativos de área de trabalho, pois isso também se aplica a aplicativos móveis.
fonte
Se você deseja desenvolver para o Windows Phone 7, o C # é perfeito (o VB.NET estará disponível em breve.) Você também pode aproveitar qualquer conhecimento sobre Silverlight ou XNA que possui. Não sei se a plataforma será bem-sucedida, mas por que não refinar seu aplicativo usando um idioma que você conhece e depois portá-lo para outros idiomas quando estiver confiante em sua experiência do usuário, lógica, cálculos etc.? Aparentemente, o emulador é muito bom e pode ser complementado com o emulador acelerômetro e o emulador GPS para fazer tudo, exceto fazer uma ligação. (E realmente, quem usa smartphones para fazer chamadas?)
fonte
Comecei a escrever aplicativos Android em Java com experiência anterior em C #. Eu descobri que muitos conceitos fundamentais da linguagem são semelhantes, então era simplesmente uma questão de aprender as poucas diferenças, especialmente com as bibliotecas. Se você pode aprender, codificar no outro seria muito simples (com base na minha experiência).
Eu recomendaria começar com Java. O Android está a caminho de se tornar o sistema operacional móvel mais popular, então você sabe que definitivamente estará por aí por um tempo. Além disso, o Java é mais antigo; portanto, existem inúmeras bibliotecas e tutoriais disponíveis para você usar e aprender. Depois de entender os principais conceitos do Java, aprender C # deve ser fácil - e você realmente apreciará alguns dos recursos interessantes (como atributos e LINQ) que o C # tem a oferecer.
Isenção de responsabilidade: comecei com C # (principalmente para desenvolvimento na Web ASP.NET MVC) e depois aprendi Java para escrever aplicativos para Android. Eu não fiz nenhuma programação móvel com C #, então não posso lhe dizer como é.
fonte
Talvez arquive isso em "pensamento lateral", mas se você tiver habilidades decentes em tecnologias "puras" da web - HTML, JavaScript, CSS - e, dependendo do que estiver tentando alcançar, consulte algo como o PhoneGap (http: // www .phonegap.com / sobre). Além do suporte de dispositivos iOS (iPhone, iPad) e Android, eles também têm suporte para Symbian. No entanto, você geralmente precisará das ferramentas "nativas" para criar seus aplicativos binários nativos. Por exemplo, se você deseja fazer o desenvolvimento do iPhone, precisará do iPhone sdk, XCode e estará executando o OSX.
fonte