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 | |
| 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
| -rw-r--r-- | main/res/values/ids.xml | 3 | ||||
| -rw-r--r-- | main/res/values/preference_keys.xml | 1 | ||||
| -rw-r--r-- | main/res/values/strings.xml | 1 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/Intents.java | 2 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/apps/cache/navi/AndroidWearApp.java | 52 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java | 1 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/utils/ProcessUtils.java | 4 |
7 files changed, 62 insertions, 2 deletions
diff --git a/main/res/values/ids.xml b/main/res/values/ids.xml index e8cb74b..99a2311 100644 --- a/main/res/values/ids.xml +++ b/main/res/values/ids.xml @@ -24,6 +24,7 @@ <item name="cache_app_show_static_maps" type="id"/> <item name="cache_app_locus" type="id"/> <item name="cache_app_pebble" type="id"/> + <item name="cache_app_android_wear" type="id"/> <item name="cache_app_mapswithme" type="id"/> -</resources>
\ No newline at end of file +</resources> diff --git a/main/res/values/preference_keys.xml b/main/res/values/preference_keys.xml index 4bb908d..d800717 100644 --- a/main/res/values/preference_keys.xml +++ b/main/res/values/preference_keys.xml @@ -142,6 +142,7 @@ <string name="pref_navigation_menu_google_maps_directions">navigationMapsDirections</string> <string name="pref_navigation_menu_where_you_go">navigationWhereYouGo</string> <string name="pref_navigation_menu_pebble">navigationPebble</string> + <string name="pref_navigation_menu_android_wear">navigationAndroidWear</string> <string name="pref_navigation_menu_mapswithme">navigationMapsWithMe</string> <string name="pref_ocpl_tokensecret">ocpl_tokensecret</string> <string name="pref_ocpl_tokenpublic">ocpl_tokenpublic</string> diff --git a/main/res/values/strings.xml b/main/res/values/strings.xml index 0c72bb6..6c0e3a5 100644 --- a/main/res/values/strings.xml +++ b/main/res/values/strings.xml @@ -709,6 +709,7 @@ <string name="cache_menu_oruxmaps">OruxMaps</string> <string name="cache_menu_navigon">Navigon</string> <string name="cache_menu_pebble">Pebble</string> + <string name="cache_menu_android_wear">Android Wear</string> <string name="cache_status">Status</string> <string name="cache_status_offline_log">Saved Log</string> <string name="cache_status_found">Found</string> 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); } } |
