Java tutorial
/* * Copyright (C) 2013 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.ashwini.location.notification; import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.GooglePlayServicesUtil; import android.app.Activity; import android.app.Dialog; import android.content.Context; import android.location.Location; import android.os.Bundle; import android.support.v4.app.DialogFragment; import android.support.v4.app.FragmentActivity; import android.util.Log; /** * Defines app-wide constants and utilities */ public final class LocationUtils { // Debugging tag for the application public static final String APPTAG = "LocationSample"; // Name of shared preferences repository that stores persistent state public static final String SHARED_PREFERENCES = "com.example.android.location.SHARED_PREFERENCES"; // Key for storing the "updates requested" flag in shared preferences public static final String KEY_UPDATES_REQUESTED = "com.example.android.location.KEY_UPDATES_REQUESTED"; /* * Define a request code to send to Google Play services * This code is returned in Activity.onActivityResult */ public final static int CONNECTION_FAILURE_RESOLUTION_REQUEST = 9000; /* * Constants for location update parameters */ // Milliseconds per second public static final int MILLISECONDS_PER_SECOND = 1000; // The update interval public static final int UPDATE_INTERVAL_IN_SECONDS = 5; // A fast interval ceiling public static final int FAST_CEILING_IN_SECONDS = 1; // Update interval in milliseconds public static final long UPDATE_INTERVAL_IN_MILLISECONDS = MILLISECONDS_PER_SECOND * UPDATE_INTERVAL_IN_SECONDS; // A fast ceiling of update intervals, used when the app is visible public static final long FAST_INTERVAL_CEILING_IN_MILLISECONDS = MILLISECONDS_PER_SECOND * FAST_CEILING_IN_SECONDS; // Create an empty string for initializing strings public static final String EMPTY_STRING = new String(); /** * Get the latitude and longitude from the Location object returned by * Location Services. * * @param currentLocation A Location object containing the current location * @return The latitude and longitude of the current location, or null if no * location is available. */ public static String getLatLng(Context context, Location currentLocation) { // If the location is valid if (currentLocation != null) { // Return the latitude and longitude as strings return context.getString(R.string.latitude_longitude, currentLocation.getLatitude(), currentLocation.getLongitude()); } else { // Otherwise, return the empty string return EMPTY_STRING; } } public static boolean servicesConnected(Activity activty) { // Check that Google Play services is available int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(activty); // If Google Play services is available if (ConnectionResult.SUCCESS == resultCode) { // In debug mode, log the status Log.d(LocationUtils.APPTAG, activty.getString(R.string.play_services_available)); // Continue return true; // Google Play services was not available for some reason } else { // Display an error dialog Dialog dialog = GooglePlayServicesUtil.getErrorDialog(resultCode, activty, 0); if (dialog != null) { ErrorDialogFragment errorFragment = new ErrorDialogFragment(); errorFragment.setDialog(dialog); errorFragment.show(((FragmentActivity) activty).getSupportFragmentManager(), LocationUtils.APPTAG); } return false; } } /** * Define a DialogFragment to display the error dialog generated in * showErrorDialog. */ public static class ErrorDialogFragment extends DialogFragment { private Dialog mDialog; public ErrorDialogFragment() { super(); mDialog = null; } public void setDialog(Dialog dialog) { mDialog = dialog; } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { return mDialog; } } }