Centro Universitário UniBH
Oficina de desenvolvimento de aplicações móveis - Circuito Acadêmico
Professor: Lucas Schmidt - Professor/Aluno: Israel Almeida
Projeto Android - Criando uma aplicação de mapa
Atenção: Para a realização deste exemplo primeiramente verifique se seu Android Studio possui o Google Play services instalado no SDK Manager. Caso contrário, no SDK Manager, instale o pacote Google Play services que corresponde a API a ser utilizada no projeto:
____________________________________________________________________________________________________
Aula: Nesta aula vamos criar nosso primeiro projeto Android.
Criação de um projeto Android:
Para inicialmente criarmos um projeto Android siga os passos abaixo:
Passo 1: Inicie a ferramenta Android Studio e selecione a opção Start a new Android Studio project.
Caso um projeto já tenha sido iniciado, selecione no menu superior a opção File -> New Project...
Passo 2: Caso não exista um nome, defina o nome My Application para seu novo projeto e o local onde irá salvar o projeto, além disso defina o campo Company Domain como example e pressione o botão Next.
Passo 3: Defina a versão mínima do Android a ser usada como SDK. (Default: A última versão) Pressione o botão Next
Passo 4: Selecione o formato de Activity GoogleMapsActivity que será utilizada no projeto. Pressione o botão Next
Passo 5: Acesse o diretório app -> res -> values e abra o arquivo google_maps_api.xml:
Passo 6: Altere o arquivo google_maps_api.xml colocando o valor da chave:
____________________________________________________________________________________________________
<resources>
<!--
TODO: Before you run your application, you need a Google Maps API key.
To get one, follow this link, follow the directions and press "Create" at the end:
https://console.developers.google.com/flows/enableapi?apiid=maps_android_backend&keyType=
CLIENT_SIDE_ANDROID&r=5D:63:96:E6:D1:FA:D2:65:7E:D5:03:BC:82:FE:C1:1B:58:5B:44:05%3
Bcom.example.lucas.myapplication
You can also add your credentials to an existing key, using this line:
5D:63:96:E6:D1:FA:D2:65:7E:D5:03:BC:82:FE:C1:1B:58:5B:44:05;com.example.lucas.myapplication
Alternatively, follow the directions here:
https://developers.google.com/maps/documentation/android/start#get-key
Once you have your key (it starts with "AIza"), replace the "google_maps_key"
string in this file.
-->
<string name="google_maps_key" templateMergeStrategy="preserve"
translatable="false">AIzaSyD2FPpk5nn4R1IOGj3_K_B2Z3lcabPMB1U</string>
</resources>
____________________________________________________________________________________________________
Passo 7: Acesse o diretório app -> manifests e abra o arquivo AndroidManifest.xml:
Passo 8: Altere o seu arquivo AndroidManifest.xml conforme abaixo:
____________________________________________________________________________________________________
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.lucas.myapplication">
<!--
The ACCESS_COARSE/FINE_LOCATION permissions are not required to use
Google Maps Android API v2, but you must specify either coarse or fine
location permissions for the 'MyLocation' functionality.
-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<!--
The API key for Google Maps-based APIs is defined as a string resource.
(See the file "res/values/google_maps_api.xml").
Note that the API key is linked to the encryption key used to sign the APK.
You need a different API key for each encryption key, including the release key that is used to
sign the APK for publishing.
You can define the keys for the debug and release targets in src/debug/ and src/release/.
-->
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="@string/google_maps_key" />
<activity
android:name=".MapsActivity"
android:label="@string/title_activity_maps">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
</manifest>
____________________________________________________________________________________________________
Passo 9: Acesse o diretório app -> java -> example.myapplication e abra o arquivo MapsActivity:
Passo 10: Altere o arquivo MapsActivity conforme abaixo:
____________________________________________________________________________________________________
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {
private GoogleMap mMap;
private LatLng pontoMap;
// ---------------------------------------------------------------------------------------------
// Método onCreate que inicia toda a aplicação!!!
// ---------------------------------------------------------------------------------------------
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
// Inicia GPS
startGPS();
// Inicia a criação do mapa
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
// ---------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------
// Método que inicia o GPS do dispositivo!!!
// ---------------------------------------------------------------------------------------------
public void startGPS(){
LocationManager lManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
LocationListener lListener = new LocationListener() {
public void onLocationChanged(Location locat) {
// A cada nova alteração de coordenada geográfica detectada chama o método
// changeLocation para alterar o ponto no mapa
changeLocation(locat);
}
public void onStatusChanged(String provider, int status, Bundle extras) {}
public void onProviderEnabled(String provider) {}
public void onProviderDisabled(String provider) {}
};
if (ActivityCompat.checkSelfPermission(
this, Manifest.permission.ACCESS_FINE_LOCATION) !=
PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(
this, Manifest.permission.ACCESS_COARSE_LOCATION) !=
PackageManager.PERMISSION_GRANTED)
{
return;
}
lManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, lListener);
}
// ---------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------
// Método que altera ponto no mapa!!!
// ---------------------------------------------------------------------------------------------
public void changeLocation(Location locat)
{
pontoMap = new LatLng(locat.getLatitude(),locat.getLongitude());
mMap.clear();
mMap.addMarker(new MarkerOptions().position(pontoMap).title("ESTOU AQUI"));
mMap.getUiSettings().setZoomControlsEnabled(true);
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(pontoMap, 18));
}
// ---------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------
// Método que inicia a criação de um novo mapa!!!
// ---------------------------------------------------------------------------------------------
@Override
public void onMapReady(GoogleMap googleMap)
{
mMap = googleMap;
pontoMap = new LatLng(-19.9705417,-43.9647519); // unibh
mMap.addMarker(new MarkerOptions().position(pontoMap).title("ESTOU AQUI"));
mMap.getUiSettings().setZoomControlsEnabled(true);
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(pontoMap, 18));
}
}
____________________________________________________________________________________________________
Passo 11: Inicie seu emulador e execute seu projeto para testar sua aplicação!
Teste sua aplicação e veja os resultados!!! Obs.: Nas versões a partir do Android 5.0 é necessário ativar a permissão de Localização no próprio dispositivo ou emulador. Para isso vá nas configurações do seu dispositivo ou emulador -> Aplicativos -> Gerenciador de aplicações -> Selecione a aplicação (My Application) -> Acesse o menu Permissões e ative a permissão de Local.
App: Para executar a aplicação gerada nesta aula em seu dispositivo móvel Android você pode ir na opção Build -> Build APK e assim que for gerado o app clicar no link Show in Explorer. A pasta aberta conterá o arquivo app-debug.apk. Copie este arquivo para dentro do seu dispositivo móvel Android e execute-o para instalar. Pronto! Seu aplicativo poderá ser executado em seu dispositivo. (Não se esqueça de ativar as permissões de Local no seu dispositivo!!!) Caso queira, o mesmo aplicativo encontra-se aqui neste link para download.