Você está na página 1de 6

Programando em C# com o Mono for Android

Conforme ansiosamente aguardado, eis nosso primeiro tutorial sobre C# no Android! Baixamos a verso Trial do MonoDroid e do Visual Studio 2010 para podermos estudar o uso da plataforma, e criamos um projeto novo para voc, cujo fonte j est no Google Code. Os meus colegas Javistas que me desculpem, mas no d para discutir: o Visual Studio um dos melhores ambientes de desenvolvimento que existem. Tudo fcil, descomplicado e funciona. S quem vive de "lutar" contra o eclipse e seus plugins que entende o que quero dizer. E o C#? uma linguagem de programao moderna, baseada em cdigo gerenciado, muito parecida com a linguagem Java. Para mim, como estar em casa, pois os conceitos so quase os mesmos. Como temos um grande nmero de leitores que desenvolve em plataforma .NET, resolvemos investigar uma das melhores opes disponveis para desenvolvimento profissional neste ambiente: o Mono for Android, da empresa Xamarin. Ele pode ser utilizado com o Microsoft Visual Studio 2010 ou ento com o MonoDevelop, que um ambiente Open Source para desenvolvimento em Mono, a verso Open Source do .NET Framework, com o C# e o Comon Language Runtime. Ns escolhemos o Visual Studio porque a IDE mais utilizada pelos programadores .NET. Preparao Ns utilizamos o Windows XP e instalamos os seguintes componentes:

Java SE 6 SDK - tem que ser o SDK e no o JRE; Microsoft Visual Studio 2010 verso de avaliao; Android SDK para Windows (verso ZIP); Mono For Android verso trial; ankhSvn, plugin para usar SVN com o Visual Studio;

A instalao do Visual Studio demora bastante, logo, no tenha pressa. Assim como o download das plataformas e APIs necessrias para o Android SDK. Aps baixar o ZIP do Android SDK, descompacte-o e rode o programa "SDK Manager", que fica na pasta raiz dele. Selecione as plataformas e componentes que deseja baixar (assim como fez na instalao do Android SDK - Veja aqui como fazer).

O Download dos complementos do Android SDK tambm demora muito. Depois de tudo instalado, crie um AVD: clique em "virtual devices" e no boto "new", criando um AVD da mesma forma que voc faz no eclipse. Ao concluir tudo, abra o Visual Studio e crie um novo Projeto Mono for Android:

Voc j deve ter o projeto prontinho para executar:

Mas agora, vamos rechear com um pouquinho de cdigo. A ideia criar um programa gerador de senhas alfanumricas aleatrias. Voc informar o tamanho da senha desejada, e ele vai criar e mostrar a nova senha em um alerta. Neste artigo, estamos assumindo que voc j conhece a programao Android. Caso contrrio, melhor dar uma olhada no curso bsico de programao Android. A activity uma classe C# (deixamos o nome padro: "Activity1.cs"), os string resources esto dentro de "Resources/Values/Strings.xml". O Mono For Android usa uma classe

"Resource", dentro do arquivo "Resource.Designer.cs", que equivalente classe "R" do Android em Java. Todo o cdigo-fonte do projeto est no Google Code: http://code.google.com/p/criasenha-monodroid e voc pode navegar pelo cdigo ou ento usar o SVN para baixar para o Visual Studio (veremos mais adiante como fazer). Nosso programa A nossa aplicao muito simples: recebe um tamanho de senha e gera um string alfanumrico com uma senha aleatria. Nem vamos entrar em detalhes sobre como criar o layout, que, alis, fica em: "Layout/Main.axml". O cdigo-fonte est todo resumido dentro da prpria Activity ("Activity1.cs"): view plainprint? 1. using System; 2. 3. using Android.App; 4. using Android.Content; 5. using Android.Runtime; 6. using Android.Views; 7. using Android.Widget; 8. using Android.OS; 9. using Android.Util; 10. using System.Text; 11. 12. namespace CriaSenha 13. { 14. [Activity(Label = "CriaSenha", MainLauncher = true, Icon = "@drawable/ico n")] 15. public class Activity1 : Activity 16. { 17. 18. protected override void OnCreate(Bundle bundle) 19. { 20. base.OnCreate(bundle); 21. SetContentView(Resource.Layout.Main); 22. Button button = FindViewById<Button>(Resource.Id.MyButton); 23. EditText txtTam = FindViewById<EditText>(Resource.Id.TxtTamSenha ); 24. 25. button.Click += delegate { 26. int tamanho = int.Parse(txtTam.Text.ToString()); 27. string senha = calcSenha(tamanho); 28. AlertDialog.Builder dialogo = new AlertDialog.Builder(this); 29. dialogo.SetMessage(senha); 30. dialogo.SetNeutralButton("Ok", 31. (o, e) => { Log.Debug("CriaSenha", "Clicou no OK"); }); 32. dialogo.Show();

33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. } 59. }

}; } protected string calcSenha(int tamanho) { StringBuilder saida = new StringBuilder(); int pos = 0; for (pos = 0; pos < tamanho; pos++) { int AsciiCode = 0; while(true) { Random random = new Random(); AsciiCode = Convert.ToChar(random.Next(48, 122)); if (AsciiCode < 58 || (AsciiCode > 64 && AsciiCode < 91) || (AsciiCode > 96 && AsciiCode < 123)) { break; } } Char letra = Convert.ToChar(AsciiCode); saida.Append(letra); } return saida.ToString(); }

Apesar de ser muito parecido com Java, existem algumas diferenas importantes, como no "Cast" dos elementos do Layout, e o uso de "delegate" ao invs de Anonimous Inner Class, no listener (SetNeutralButton) do boto ((o, e) => {<cdigo>}). O funcionamento simples: ao clicar no boto, o mtodo "calcSenha" chamado e retorna a senha, que exibida na tela com um AlertDialog. O mtodo para gerao de senhas tem um loop duplo: um para o nmero de caracteres e outro para selecionar caracteres vlidos (0-9, A-Z e a-z). Para executar, clique no boto "play" (ou ento menu "Debug / Start Debugging"). Vai aparecer uma janela informando que a verso trial (do Mono For Android) s permite rodar no emulador. Selecione o emulador, clique sobre ele. Vai demorar MUITO, MAS MUUUUUIIIITO tempo mesmo at que ele rode a aplicao, porm, isto s na primeira vez (jamais feche o AVD!!!):

Eis o resultado da execuo do programa:

Todos os recursos que voc precisa esto l: depurao, logcat etc. Para abrir o LogCat, quando depurando o programa, clique em "View / Other Windows / Android Console Log". Sincronizando com o SVN Para sincronizar com o SVN, necessrio ter um plugin apropriado. O ankhSvn faz isto. s instalar o plugin, depois abrir o menu "Tools / Options", selecionar "Source Control" e selecionar o plugin "AnkhSvn":

Isto feito, s ir no menu "File / Subversion" e selecionar o que quer fazer: "Add Solution to Subversion", para colocar toda a sua WorkSpace no servidor SVN, ou "Open from Subversion" para abrir um projeto. Ele tambm tem a opo "Commit". Nossa opinio O Visual Studio um ambiente maduro de desenvolvimento, o que facilita bastante a programao, e o C# uma linguagem muito prtica e simples. Quando ao Mono For Android, no tivemos queixa alguma. Ele funcionou muito bem e fez o que promete. Os custos das licenas podem ser um impeditivo, para a maioria dos desenvolvedores:

Visual Studio 2010 Professional (no serve nenhuma verso Express!): R$ 985,00 (aproximadamente); Mono For Android Professional: US$ 399,00;

claro que voc pode tentar usar a IDE MonoDevelop, ao invs do Visual Studio. Tudo uma questo de avaliar o custo x benefcio. Antes que voc deixe o queixo cair, lembre-se de uma coisa: o custo de licena apenas UM dos componentes do custo de desenvolvimento! E no o maior! Por exemplo, quanto custa uma hora do seu tempo? E quanto tempo perde configurando dezenas de componentes Open Source, com suporte da "comunidade"? Pois ... Se voc est desenvolvendo um projeto srio, profissional e para ganhar dinheiro, deve pensar no custo das licenas como um investimento, o qual vai se transformar em reduo de tempo gasto no desenvolvimento. Para quem conhece Visual Studio e C#, isto muito valioso. A deciso de usar ou no Open Source e software livre no deve se basear apenas no custo da licena!

Autor: Cleuton Sampaio

Você também pode gostar