[Android] Google Service Play & Google Maps

26
Google Service Play Google Maps Natã Melo

Transcript of [Android] Google Service Play & Google Maps

Page 1: [Android] Google Service Play & Google Maps

Google Service Play Google Maps

Natã Melo

Page 2: [Android] Google Service Play & Google Maps

Google Services Play

Google ServicesExamples: Google Plus and MapsAdvantages: Updates and Integration

Easy and Fast to Implement

Page 3: [Android] Google Service Play & Google Maps

Google Services Play

Standard AuthorizationGoogle AccountOAuth2: Consistent and Safe

Independent Versions: GP and Android

Page 4: [Android] Google Service Play & Google Maps

Google Services Play

Background Services

Easy-to-use Authorization

GPS Updates GPS APK

Android SDK Manager

Page 5: [Android] Google Service Play & Google Maps

Google Services Play

Install the Google Play services library in your Android SDK!

Page 6: [Android] Google Service Play & Google Maps

Setting Up Google Play ServicesModule build.gradle

apply plugin: 'com.android.application'

dependencies {

compile 'com.android.support:appcompat-v7:21.0.3'

compile 'com.google.android.gms:play-services:7.3.0'

compile 'com.google.android.gms:play-services-fitness:7.3.0'

compile 'com.google.android.gms:play-services-wearable:7.3.0'

}

Page 7: [Android] Google Service Play & Google Maps

Setting Up Google Play ServicesGoogle+ com.google.android.gms:play-services-plus:7.3.0

Google Account Login com.google.android.gms:play-services-identity:7.3.0

Google Actions, Base Client Library com.google.android.gms:play-services-base:7.3.0

Google App Indexing com.google.android.gms:play-services-appindexing:7.3.0

Google Analytics com.google.android.gms:play-services-analytics:7.3.0

Google Cloud Messaging com.google.android.gms:play-services-gcm:7.3.0

Google Drive com.google.android.gms:play-services-drive:7.3.0

Google Fit com.google.android.gms:play-services-fitness:7.3.0

Google Location, Activity Recognition, and Places com.google.android.gms:play-services-location:7.3.0

Google Maps com.google.android.gms:play-services-maps:7.3.0

Google Mobile Ads com.google.android.gms:play-services-ads:7.3.0

...

Page 8: [Android] Google Service Play & Google Maps

Setting Up Google Play Services In Activity... implements ConnectionCallbacks, OnConnectionFailedListener

private GoogleApiClient mGoogleApiClient;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

mGoogleApiClient = new GoogleApiClient.Builder(this)

.addApi(Drive.API)

.addScope(Drive.SCOPE_FILE)

.addConnectionCallbacks(this)

.addOnConnectionFailedListener(this)

.build();

}

Page 9: [Android] Google Service Play & Google Maps

Setting Up Google Play Services In Activity...

@Override protected void onStart() { super.onStart(); if (!mResolvingError) { // more about this later mGoogleApiClient.connect(); } }

@Override protected void onStop() { mGoogleApiClient.disconnect(); super.onStop(); }

Page 10: [Android] Google Service Play & Google Maps

Handle connection failures In Activity...

@Override

public void onConnected(Bundle connectionHint) { }

@Override

public void onConnectionSuspended(int cause) { }

@Override

public void onConnectionFailed(ConnectionResult result) { }

Page 11: [Android] Google Service Play & Google Maps

Handle Connection Failures In Activity...

int REQUEST_RESOLVE_ERROR = 1001; String DIALOG_ERROR = "dialog_error"; boolean mResolvingError = false;

@Override public void onConnectionFailed(ConnectionResult result) { if (mResolvingError) { return; } else if (result.hasResolution()) { try { mResolvingError = true; result.startResolutionForResult(this, REQUEST_RESOLVE_ERROR); } catch (SendIntentException e) { mGoogleApiClient.connect(); } } else { showErrorDialog(result.getErrorCode()); mResolvingError = true; } }

Page 12: [Android] Google Service Play & Google Maps

Handle Connection Failures In Activity...

private void showErrorDialog(int errorCode) { ErrorDialogFragment dialogFragment = new ErrorDialogFragment();

Bundle args = new Bundle(); args.putInt(DIALOG_ERROR, errorCode); dialogFragment.setArguments(args); dialogFragment.show(getSupportFragmentManager(), DIALOG_ERROR); }

public void onDialogDismissed() { mResolvingError = false; }

Page 13: [Android] Google Service Play & Google Maps

Handle Connection Failures In Activity...

public static class ErrorDialogFragment extends DialogFragment { public ErrorDialogFragment() { }

@Override public Dialog onCreateDialog(Bundle savedInstanceState) { int errorCode = this.getArguments().getInt(DIALOG_ERROR); return GooglePlayServicesUtil.getErrorDialog(errorCode, this.getActivity(), REQUEST_RESOLVE_ERROR); }

@Override public void onDismiss(DialogInterface dialog) { ((MainActivity)getActivity()).onDialogDismissed(); } }

Page 14: [Android] Google Service Play & Google Maps

Handle Connection Failures In Activity...

public static class ErrorDialogFragment extends DialogFragment { public ErrorDialogFragment() { }

@Override public Dialog onCreateDialog(Bundle savedInstanceState) { int errorCode = this.getArguments().getInt(DIALOG_ERROR); return GooglePlayServicesUtil.getErrorDialog(errorCode, this.getActivity(), REQUEST_RESOLVE_ERROR); }

@Override public void onDismiss(DialogInterface dialog) { ((MainActivity)getActivity()).onDialogDismissed(); } }

Page 15: [Android] Google Service Play & Google Maps

Handle Connection Failures In Activity...

@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_RESOLVE_ERROR) { mResolvingError = false;

if (resultCode == RESULT_OK) { if (!mGoogleApiClient.isConnecting() && !mGoogleApiClient.isConnected()) { mGoogleApiClient.connect(); } } } }

Page 16: [Android] Google Service Play & Google Maps

Handle Connection Failures In Activity...

@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_RESOLVE_ERROR) { mResolvingError = false;

if (resultCode == RESULT_OK) { if (!mGoogleApiClient.isConnecting() && !mGoogleApiClient.isConnected()) { mGoogleApiClient.connect(); } } } }

Page 17: [Android] Google Service Play & Google Maps

Google Maps Android API v2

Features3D maps; Indoor, satellite, terrain, and hybrid maps; Vector-based tiles for efficient caching and drawing; Animated transitionsCustomize the map; Control the user's view; Street View

Page 18: [Android] Google Service Play & Google Maps

Android CertificateSign Your App; Identification

1. keytool -genkey -v -keystore [name_key_store].keystore -alias [alias_name] -keyalg RSA -keysize 2048 -validity 10000

2. keytool -list -v -keystore [name_key_store].keystore

Result: SHA1: DF:F0:91:5A:DF:AA … 2C:44:98:6A:0D:3D

Page 19: [Android] Google Service Play & Google Maps

Android Certificate and API KeyCreate Project On: https://console.developers.google.com/projectActivate Google Maps Android APICreate a New Key for Android: [SHAI Key];[Prject Path]Get the Google Maps API key Generated: AIz … VgHcNL7Sg

Page 20: [Android] Google Service Play & Google Maps

Configure Your Manifest<meta-data

android:name="com.google.android.gms.version"

android:value="@integer/google_play_services_version"

/>

<meta-data

android:name="com.google.android.geo.API_KEY"

android:value="API_KEY"

/>

“Re-build Project”

Page 21: [Android] Google Service Play & Google Maps

Configure Your Manifest<uses-permission android:name="android.permission.INTERNET"/>

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> Wifi/Mobile

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> GPS

<uses-feature android:glEsVersion="0x00020000" android:required="true"/> OpenGL ES

Page 22: [Android] Google Service Play & Google Maps

Map TypeGoogleMap map; map.setMapType(GoogleMap.MAP_TYPE_HYBRID);

MAP_TYPE_HYBRID - Satellite maps with a transparent layer of major streets.

MAP_TYPE_NONE - No base map tiles.

MAP_TYPE_NORMAL - Basic maps.

MAP_TYPE_SATELLITE - Satellite maps with no labels.

MAP_TYPE_TERRAIN - Terrain maps.

Page 23: [Android] Google Service Play & Google Maps

Add a Marker

map.addMarker(new MarkerOptions()

.position(new LatLng(10, 10))

.title("I’m here!")

.draggable(false)

.icon(BitmapDescriptorFactory.defaultMarker(

BitmapDescriptorFactory.HUE_AZURE)));

Page 24: [Android] Google Service Play & Google Maps

Add a Marker

Page 25: [Android] Google Service Play & Google Maps

Let’s Practice!Use: Google Plus and Goolge Maps!

Page 26: [Android] Google Service Play & Google Maps

Get Slides: http://bit.ly/1P7GyYN