package cgeo.geocaching.apps.navi;
import cgeo.geocaching.R;
import cgeo.geocaching.location.Geopoint;
import cgeo.geocaching.utils.ProcessUtils;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.support.annotation.NonNull;
import android.support.annotation.StringRes;
/**
* http://developers.sygic.com/documentation.php?action=customurl_android
*
*/
abstract class SygicNavigationApp extends AbstractPointNavigationApp {
private final String mode;
private static final String PACKAGE_NORMAL = "com.sygic.aura";
/**
* there is a secondary edition of this app
*/
private static final String PACKAGE_VOUCHER = "com.sygic.aura_voucher";
private SygicNavigationApp(@StringRes final int nameResourceId, final String mode) {
super(getString(nameResourceId), null, PACKAGE_NORMAL);
this.mode = mode;
}
@Override
public boolean isInstalled() {
return ProcessUtils.isLaunchable(PACKAGE_NORMAL) || ProcessUtils.isLaunchable(PACKAGE_VOUCHER);
}
@Override
public void navigate(@NonNull final Context context, @NonNull final Geopoint coords) {
final String str = "com.sygic.aura://coordinate|" + coords.getLongitude() + "|" + coords.getLatitude() + "|" + mode;
context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(str)));
}
static class SygicNavigationWalkingApp extends SygicNavigationApp {
SygicNavigationWalkingApp() {
super(R.string.cache_menu_sygic_walk, "walk");
}
}
static class SygicNavigationDrivingApp extends SygicNavigationApp {
SygicNavigationDrivingApp() {
super(R.string.cache_menu_sygic_drive, "drive");
}
}
}