Updated "Making your App Location Aware" class to include information on location provider enable check.

Change-Id: I97e0a6b02bccbfbdc5697953d2d8b63cb6089370
diff --git a/samples/training/location-aware/libs/android-support-v4.jar b/samples/training/location-aware/libs/android-support-v4.jar
new file mode 100644
index 0000000..99e063b
--- /dev/null
+++ b/samples/training/location-aware/libs/android-support-v4.jar
Binary files differ
diff --git a/samples/training/location-aware/res/drawable-hdpi/button_default.9.png b/samples/training/location-aware/res/drawable-hdpi/button_default.9.png
index f19682e..ced6dc8 100644
--- a/samples/training/location-aware/res/drawable-hdpi/button_default.9.png
+++ b/samples/training/location-aware/res/drawable-hdpi/button_default.9.png
Binary files differ
diff --git a/samples/training/location-aware/res/drawable-hdpi/button_on.9.png b/samples/training/location-aware/res/drawable-hdpi/button_on.9.png
index 0efa25c..1192396 100644
--- a/samples/training/location-aware/res/drawable-hdpi/button_on.9.png
+++ b/samples/training/location-aware/res/drawable-hdpi/button_on.9.png
Binary files differ
diff --git a/samples/training/location-aware/res/drawable-hdpi/button_pressed.9.png b/samples/training/location-aware/res/drawable-hdpi/button_pressed.9.png
index 7ce743c..240ef81 100644
--- a/samples/training/location-aware/res/drawable-hdpi/button_pressed.9.png
+++ b/samples/training/location-aware/res/drawable-hdpi/button_pressed.9.png
Binary files differ
diff --git a/samples/training/location-aware/res/drawable-mdpi/button_default.png b/samples/training/location-aware/res/drawable-mdpi/button_default.png
new file mode 100644
index 0000000..ac6e834
--- /dev/null
+++ b/samples/training/location-aware/res/drawable-mdpi/button_default.png
Binary files differ
diff --git a/samples/training/location-aware/res/drawable-mdpi/button_on.9.png b/samples/training/location-aware/res/drawable-mdpi/button_on.9.png
index edc31c6..1523ad5 100644
--- a/samples/training/location-aware/res/drawable-mdpi/button_on.9.png
+++ b/samples/training/location-aware/res/drawable-mdpi/button_on.9.png
Binary files differ
diff --git a/samples/training/location-aware/res/drawable-mdpi/button_pressed.9.png b/samples/training/location-aware/res/drawable-mdpi/button_pressed.9.png
index 7e818ee..cc1f46c 100644
--- a/samples/training/location-aware/res/drawable-mdpi/button_pressed.9.png
+++ b/samples/training/location-aware/res/drawable-mdpi/button_pressed.9.png
Binary files differ
diff --git a/samples/training/location-aware/res/drawable-xhdpi/button_default.9.png b/samples/training/location-aware/res/drawable-xhdpi/button_default.9.png
index 800dd00..f19682e 100644
--- a/samples/training/location-aware/res/drawable-xhdpi/button_default.9.png
+++ b/samples/training/location-aware/res/drawable-xhdpi/button_default.9.png
Binary files differ
diff --git a/samples/training/location-aware/res/drawable-xhdpi/button_on.9.png b/samples/training/location-aware/res/drawable-xhdpi/button_on.9.png
index cec21b4..0efa25c 100644
--- a/samples/training/location-aware/res/drawable-xhdpi/button_on.9.png
+++ b/samples/training/location-aware/res/drawable-xhdpi/button_on.9.png
Binary files differ
diff --git a/samples/training/location-aware/res/drawable-xhdpi/button_pressed.9.png b/samples/training/location-aware/res/drawable-xhdpi/button_pressed.9.png
index 15375d5..7ce743c 100644
--- a/samples/training/location-aware/res/drawable-xhdpi/button_pressed.9.png
+++ b/samples/training/location-aware/res/drawable-xhdpi/button_pressed.9.png
Binary files differ
diff --git a/samples/training/location-aware/res/values/strings.xml b/samples/training/location-aware/res/values/strings.xml
index 4d6a87f..cad1046 100644
--- a/samples/training/location-aware/res/values/strings.xml
+++ b/samples/training/location-aware/res/values/strings.xml
@@ -17,10 +17,12 @@
 <resources>
     <string name="app_name">Android Training: Location Update</string>
     <string name="address">Address:</string>
+    <string name="enable_gps">Enable GPS</string>
+    <string name="enable_gps_dialog">GPS provider not enabled. Would you like to enable it?</string>
     <string name="latlng">Lat/Long:</string>
     <string name="unknown">--Unknown--</string>
     <string name="not_support_gps">GPS provider not supported</string>
     <string name="not_support_network">Network provider not supported</string>
-    <string name="use_fine_provider">Use fine provider</string>
-    <string name="use_both_providers">Use both providers</string>
+    <string name="use_fine_provider">Fine-grain provider</string>
+    <string name="use_both_providers">Both providers</string>
 </resources>
diff --git a/samples/training/location-aware/src/com/example/android/location/LocationActivity.java b/samples/training/location-aware/src/com/example/android/location/LocationActivity.java
index 93f4ce1..117c0cf 100644
--- a/samples/training/location-aware/src/com/example/android/location/LocationActivity.java
+++ b/samples/training/location-aware/src/com/example/android/location/LocationActivity.java
@@ -17,8 +17,11 @@
 package com.example.android.location;
 
 import android.annotation.SuppressLint;
-import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.Dialog;
 import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
 import android.location.Address;
 import android.location.Geocoder;
 import android.location.Location;
@@ -29,6 +32,9 @@
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
+import android.provider.Settings;
+import android.support.v4.app.DialogFragment;
+import android.support.v4.app.FragmentActivity;
 import android.view.View;
 import android.widget.Button;
 import android.widget.TextView;
@@ -38,7 +44,7 @@
 import java.util.List;
 import java.util.Locale;
 
-public class LocationActivity extends Activity {
+public class LocationActivity extends FragmentActivity {
     private TextView mLatLng;
     private TextView mAddress;
     private Button mFineProviderButton;
@@ -122,6 +128,32 @@
         setup();
     }
 
+    @Override
+    protected void onStart() {
+        super.onStart();
+
+        // Check if the GPS setting is currently enabled on the device.
+        // This verification should be done during onStart() because the system calls this method
+        // when the user returns to the activity, which ensures the desired location provider is
+        // enabled each time the activity resumes from the stopped state.
+        LocationManager locationManager =
+                (LocationManager) getSystemService(Context.LOCATION_SERVICE);
+        final boolean gpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
+
+        if (!gpsEnabled) {
+            // Build an alert dialog here that requests that the user enable
+            // the location services, then when the user clicks the "OK" button,
+            // call enableLocationSettings()
+            new EnableGpsDialogFragment().show(getSupportFragmentManager(), "enableGpsDialog");
+        }
+    }
+
+    // Method to launch Settings
+    private void enableLocationSettings() {
+        Intent settingsIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
+        startActivity(settingsIntent);
+    }
+
     // Stop receiving location updates whenever the Activity becomes invisible.
     @Override
     protected void onStop() {
@@ -338,4 +370,24 @@
             return null;
         }
     }
+
+    /**
+     * Dialog to prompt users to enable GPS on the device.
+     */
+    private class EnableGpsDialogFragment extends DialogFragment {
+
+        @Override
+        public Dialog onCreateDialog(Bundle savedInstanceState) {
+            return new AlertDialog.Builder(getActivity())
+                    .setTitle(R.string.enable_gps)
+                    .setMessage(R.string.enable_gps_dialog)
+                    .setPositiveButton(R.string.enable_gps, new DialogInterface.OnClickListener() {
+                        @Override
+                        public void onClick(DialogInterface dialog, int which) {
+                            enableLocationSettings();
+                        }
+                    })
+                    .create();
+        }
+    }
 }