diff options
| author | Samuel Tardieu <sam@rfc1149.net> | 2014-10-16 13:08:23 +0200 |
|---|---|---|
| committer | Samuel Tardieu <sam@rfc1149.net> | 2014-10-16 13:08:23 +0200 |
| commit | 0cb75b2829cc585e4f0257124e6469e1e3685b98 (patch) | |
| tree | 2b39024d0ed62d9f23a5e42b5be15a0227a5c86a /main/src | |
| parent | 0904e2a00d54c5e7e4c68aca52009a55537b7048 (diff) | |
| parent | bcc0bdd1a837c80d6291c0970d9e181da2359779 (diff) | |
| download | cgeo-0cb75b2829cc585e4f0257124e6469e1e3685b98.zip cgeo-0cb75b2829cc585e4f0257124e6469e1e3685b98.tar.gz cgeo-0cb75b2829cc585e4f0257124e6469e1e3685b98.tar.bz2 | |
Merge pull request #4417 from culmor30/master
Implemented support for external Android Wear apps
Diffstat (limited to 'main/src')
4 files changed, 58 insertions, 1 deletions
diff --git a/main/src/cgeo/geocaching/Intents.java b/main/src/cgeo/geocaching/Intents.java index 2cbc1b0..5b57aba 100644 --- a/main/src/cgeo/geocaching/Intents.java +++ b/main/src/cgeo/geocaching/Intents.java @@ -18,6 +18,8 @@ public class Intents { public static final String EXTRA_ADDRESS = PREFIX + "address"; public static final String EXTRA_COORDS = PREFIX + "coords"; + public static final String EXTRA_LATITUDE = PREFIX + "latitude"; + public static final String EXTRA_LONGITUDE = PREFIX + "longitude"; public static final String EXTRA_COUNT = PREFIX + "count"; public static final String EXTRA_GEOCODE = PREFIX + "geocode"; public static final String EXTRA_GUID = PREFIX + "guid"; diff --git a/main/src/cgeo/geocaching/apps/cache/navi/AndroidWearApp.java b/main/src/cgeo/geocaching/apps/cache/navi/AndroidWearApp.java new file mode 100644 index 0000000..f083a26 --- /dev/null +++ b/main/src/cgeo/geocaching/apps/cache/navi/AndroidWearApp.java @@ -0,0 +1,52 @@ +package cgeo.geocaching.apps.cache.navi; + +import cgeo.geocaching.Geocache; +import cgeo.geocaching.Intents; +import cgeo.geocaching.R; +import cgeo.geocaching.Waypoint; +import cgeo.geocaching.geopoint.Geopoint; +import cgeo.geocaching.utils.ProcessUtils; + +import android.app.Activity; +import android.content.Intent; + +/** + * For use with any Android Wear geocaching apps which can handle the intent action below. + */ +public class AndroidWearApp extends AbstractPointNavigationApp { + public static final String INTENT_ACTION = "cgeo.geocaching.wear.NAVIGATE_TO"; + + public AndroidWearApp() { + super(getString(R.string.cache_menu_android_wear), R.id.cache_app_android_wear, INTENT_ACTION, null); + } + + @Override + public boolean isInstalled() { + return ProcessUtils.isIntentAvailable(INTENT_ACTION); + } + + @Override + public void navigate(final Activity activity, final Geopoint coords) { + navigate(activity, null, null, coords); + } + + @Override + public void navigate(final Activity activity, final Geocache cache) { + navigate(activity, cache.getName(), cache.getGeocode(), cache.getCoords()); + } + + @Override + public void navigate(final Activity activity, final Waypoint waypoint) { + navigate(activity, waypoint.getName(), waypoint.getGeocode(), waypoint.getCoords()); + } + + private static void navigate(final Activity activity, final String destName, + final String destCode, final Geopoint coords) { + final Intent launchIntent = new Intent(INTENT_ACTION); + launchIntent.putExtra(Intents.EXTRA_NAME, destName) + .putExtra(Intents.EXTRA_GEOCODE, destCode) + .putExtra(Intents.EXTRA_LATITUDE, coords.getLatitude()) + .putExtra(Intents.EXTRA_LONGITUDE, coords.getLongitude()); + activity.startService(launchIntent); + } +} diff --git a/main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java b/main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java index 4d98e42..efc988b 100644 --- a/main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java +++ b/main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java @@ -73,6 +73,7 @@ public final class NavigationAppFactory extends AbstractAppFactory { WHERE_YOU_GO(new WhereYouGoApp(), 16, R.string.pref_navigation_menu_where_you_go), PEBBLE(new PebbleApp(), 17, R.string.pref_navigation_menu_pebble), + ANDROID_WEAR(new AndroidWearApp(), 18, R.string.pref_navigation_menu_android_wear), MAPSWITHME(new MapsWithMeApp(), 22, R.string.pref_navigation_menu_mapswithme); NavigationAppsEnum(final App app, final int id, final int preferenceKey) { diff --git a/main/src/cgeo/geocaching/utils/ProcessUtils.java b/main/src/cgeo/geocaching/utils/ProcessUtils.java index 4a9ebdb..ce05483 100644 --- a/main/src/cgeo/geocaching/utils/ProcessUtils.java +++ b/main/src/cgeo/geocaching/utils/ProcessUtils.java @@ -98,7 +98,9 @@ public final class ProcessUtils { } final List<ResolveInfo> list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); - return CollectionUtils.isNotEmpty(list); + final List<ResolveInfo> servicesList = packageManager.queryIntentServices(intent, + PackageManager.MATCH_DEFAULT_ONLY); + return CollectionUtils.isNotEmpty(list) || CollectionUtils.isNotEmpty(servicesList); } } |
