package cgeo.geocaching.apps.cache.navi; import cgeo.geocaching.R; import cgeo.geocaching.geopoint.Geopoint; import cgeo.geocaching.utils.Log; import android.app.Activity; import android.content.Intent; import android.net.Uri; abstract class GoogleNavigationApp extends AbstractPointNavigationApp { private final String mode; protected GoogleNavigationApp(final int nameResourceId, final String mode) { super(getString(nameResourceId), null); this.mode = mode; } @Override public boolean isInstalled() { return true; } @Override public void navigate(Activity activity, Geopoint coords) { try { activity.startActivity(new Intent(Intent.ACTION_VIEW, Uri .parse("google.navigation:ll=" + coords.getLatitude() + "," + coords.getLongitude() + mode))); } catch (Exception e) { Log.i("GoogleNavigationApp.navigate: No navigation application available.", e); } } static class GoogleNavigationWalkingApp extends GoogleNavigationApp { GoogleNavigationWalkingApp() { super(R.string.cache_menu_navigation_walk, "&mode=w"); } } static class GoogleNavigationDrivingApp extends GoogleNavigationApp { GoogleNavigationDrivingApp() { super(R.string.cache_menu_navigation_drive, "&mode=d"); } } }