maps-xamarin-android

Maps – Xamarin.Android

Whatsup Fellas?

Ensinamos a instalar… Falamos do ciclo de vida e de como a ferramenta funciona…. Agora é hora de ver a ferramenta funcionando, né?

Fiquei umas semanas pensando em como começar a falar sobre a o desenvolvimento, e cheguei a conclusão de que não existe uma maneira de como começar LoL

Então pensei, o que vou colocar lá hoje, e ai me veio a ideia de fazer algo simples, mas permita que vocês façam coisas muito maiores. Decidi então falar sobre Geolocalização!

Vamos hoje desenvolver um app, apenas para android, utilizando as funcionalidades de Mapa e Geolocalização.

Usaremos para esse tutorial o Visual Studio 2013 Ultimate Edition + Nexus5 with Android L

Caso use o Xamarin Studio, não verá muita diferença no que faremos, já que a IDE é bem fácil de ser usada e parecida com o Visual Studio. O Aparelho e Versão do Android também não vão causar impacto.

Let’s Go!?

CONFIGURANDO SEU APARELHO ANDROID

Algumas pessoas me perguntaram se podiam utilizar o aparelho para rodar o App e “Debugar”  o mesmo, sim, isso é possível e até mais rápido e confiável do que o emulador. Para isso vá em configurações no seu aparelho android, Opções de desenvolvedor (caso esteja desabilitada aprenda a habilitar aqui), e ative a Depuração USB. Caso o seu aparelho não seja reconhecido, instale os driver (aprenda aqui). Após isso remova e conecte ele no computador novamente, e você estará pronto para usar seu aparelho como “cobaia” :)

NEW PROJECT

Primeiro vamos criar nosso projeto, Abra o Visual Studio, no menu superior clique em File(Arquivo) -> New(Novo) -> Project(Projeto). Na janela que se abriu, clique em Android, seleccione uma Blank App (Android), dê um nome para ela, usarei o seguinte “com.android.xamarin.maptutorial”

Criando Projeto Maps

Após isso teremos nosso APP criado e funcionando. O mesmo possui um botão com a ação de somar um número inteiro a cada clique que o mesmo recebe. Vamos observar no topo da ferramenta uma seta verde que executa o código, nela temos todos os possíveis dispositivos que podem executar o app, neles estão emuladores e dispositivos conectados no DebugMode. Caso esteja utilizando um celular e ele não esteja selecionado, clique na seta que aponta para baixo, apareça toda a lista de dispositivos, seleccione o de seu desejo.

Selecionando Device para rodar o projeto de Maps

Após selecionado, você pode executar a aplicação e verá que mesmo o nosso projeto ser feito em C# .NET, ele está funcionando no Android. Agora que sabemos que a ferramenta realmente funciona, vamos dar inicio a nossa pequena criação.

Vamos precisar instalar um pacote na nossa aplicação, vá na solution explorer, clique com o botão direito em Components e clique em Get More Components:

Adquirir componente Maps

Na tela que apareceu, vamos procurar por Google Play Services, clicar nele, alterar para a versão 19.0.0.0 e após isso clicar em Add to App. Após isso, clique com o botão direito no seu projeto, vá em propriedades, acessa o submenu Android Options, Advanced e preencha o campo “Java Max Heap Size” com “1G”. Salve. Vá na aba Application, e coloque as seguintes configurações:

.Configurando projeto para plugin Maps

Pode-se colocar a Compile using Android version como a “Api Level 14 (4.0)”.

Tente gerar a BUILD do projeto, se estiver tudo o.k. vamos prosseguir

CRIANDO O MAPA E GERENCIANDO PERMISSÕES

Vamos primeiramente conceder as permissões ao aplicativo necessárias para o funcionamento correto da API de mapas.

Expanda as Properties do seu projeto e abra o arquivo AndroidManifest.xml e deixe ele da seguinte forma:


<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.xamarin.maptutorial" android:versionCode="1" android:versionName="1.0">
<uses-sdk android:targetSdkVersion="21" android:minSdkVersion="14" />
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
android:name="android.permission.INTERNET" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
android:name="android.permission.ACCESS_NETWORK_STATE" />
<permission android:name="com.android.xamarin.maptutorial.permission.MAPS_RECEIVE" android:protectionLevel="signature" />
<uses-permission android:name="com.android.xamarin.maptutorial.permission.MAPS_RECEIVE" />
android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_CHECKIN_PROPERTIES" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<application android:label="com.android.xamarin.maptutorial" android:icon="@drawable/Icon">
</manifest>

Existem algumas permissões adicionais no arquivo, que utilizaremos em futuros post :)

Depois disso, vamos instanciar nosso mapa. Abra o Arquivo MainActivity.cs adicione os using

using Android.Gms.Maps;
using Android.Locations;

E crie os fields

MapFragment mapFragment;
LocationManager locMgr;

Vamos Abrir o Arquivo Main.axml no diretório  Resourcers -> layout, na parte inferior da aba aberta, clique em “Source” e na Tag LinearLayout existente, adicione o atributo:  android:id=”@+id/mainLL e remova a tag Button do arquivo. Dê Build no projeto.

No método OnCreate, após a chamada de base.OnCreate(bundle); adicione a seguinte criação do objeto:

GoogleMapOptions mapOptions = new GoogleMapOptions()
.InvokeMapType(GoogleMap.MapTypeNormal)
.InvokeZoomControlsEnabled(true)
.InvokeCompassEnabled(true);

Esse objeto representa as configurações do Mapa.

Agora vamos criar uma instância de MapFragment para essas configurações, adicione as linhas a seguir:

mapFragment = MapFragment.NewInstance(mapOptions);

FragmentTransaction fragmentTx = this.FragmentManager.BeginTransaction();
fragmentTx.Add(Resource.Id.mainLL, mapFragment);
fragmentTx.Commit();

GoogleMap gm = mapFragment.Map;

if (gm != null)
{
gm.MyLocationEnabled = true;
}

Execute o projeto.

O aplicativo ira parar, teremos o seguinte erro na janela de OutPut do VisualStudio: Caused by: java.lang.RuntimeException: API key not found.  Check that is in the element of AndroidManifest.xml

Precisamos de uma chave para nossa aplicação. Aqui você aprendera a conseguir a chave para DEBUG, futuramente criaremos um post sobre isso. Lembre-se de que, quando for criar o projeto no gerenciador do google, coloque o nome que está no seu package no seu arquivo “AndroidManifest.xml”, se estiver seguindo usara “com.android.xamarin.maptutorial”.

Após adquirir a API Key, na tag application do “AndroidManifest.xml” adicione as duas tags internas:

<application android:label="com.android.xamarin.maptutorial" android:icon="@drawable/Icon">
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="SUACHAVE" />
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
</application>

Logo após feito isso, execute seu projeto novamente e o mapa ira aparecer sem algum problema.

Nosso próximo post mostrara um pouco sobre os atributos de localização e alterações que podemos fazer nos mapas. Por hora, veja o nosso webinar onde conversamos como trabalhar com o Xamarin.Forms.Maps

Avalie nosso post

Rafael Moura

Desenvolvedor .NET, mais de 5 anos de experiência, apaixonado por tecnologia, Xamarin Student Partner Regional Lead Central/South America, Xamarin Comunity Speaker, Xamarin Certified Mobile Developer e Windows Phone Developer.

2 comentários em “Maps – Xamarin.Android

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

%d blogueiros gostam disto: