From 1e6ea8386c06872e99a9c83547e07d7ef2caec80 Mon Sep 17 00:00:00 2001 From: Alexey Kulish Date: Fri, 9 Dec 2016 17:37:50 +0300 Subject: [PATCH] Improved ski maps plugin --- plugins/Osmand-Skimaps/AndroidManifest.xml | 1 + plugins/Osmand-Skimaps/build.gradle | 9 +- plugins/Osmand-Skimaps/google-services.json | 125 ++++++++++++++++++ plugins/Osmand-Skimaps/res/layout/main.xml | 74 +++++++++-- plugins/Osmand-Skimaps/res/values/colors.xml | 9 ++ plugins/Osmand-Skimaps/res/values/strings.xml | 3 + plugins/Osmand-Skimaps/res/values/styles.xml | 14 ++ .../net/osmand/skimaps/SkiMapsActivity.java | 58 +++++--- settings.gradle | 4 +- 9 files changed, 271 insertions(+), 26 deletions(-) create mode 100644 plugins/Osmand-Skimaps/google-services.json create mode 100644 plugins/Osmand-Skimaps/res/values/colors.xml create mode 100644 plugins/Osmand-Skimaps/res/values/styles.xml diff --git a/plugins/Osmand-Skimaps/AndroidManifest.xml b/plugins/Osmand-Skimaps/AndroidManifest.xml index 523eb58d5c..a32abeae55 100644 --- a/plugins/Osmand-Skimaps/AndroidManifest.xml +++ b/plugins/Osmand-Skimaps/AndroidManifest.xml @@ -13,6 +13,7 @@ android:label="OsmAnd Ski Maps" > diff --git a/plugins/Osmand-Skimaps/build.gradle b/plugins/Osmand-Skimaps/build.gradle index 17aa1d99f2..48d2555a3a 100644 --- a/plugins/Osmand-Skimaps/build.gradle +++ b/plugins/Osmand-Skimaps/build.gradle @@ -1,7 +1,7 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 21 + compileSdkVersion 23 buildToolsVersion "23.0.1" signingConfigs { @@ -64,4 +64,11 @@ repositories { } dependencies { + compile 'com.google.firebase:firebase-core:9.8.0' + compile 'com.google.firebase:firebase-config:9.8.0' + compile 'com.android.support:appcompat-v7:23.3.0' + compile 'com.android.support:design:23.3.0' } + +println "Apply GMS plugin" +apply plugin: 'com.google.gms.google-services' diff --git a/plugins/Osmand-Skimaps/google-services.json b/plugins/Osmand-Skimaps/google-services.json new file mode 100644 index 0000000000..de9416f039 --- /dev/null +++ b/plugins/Osmand-Skimaps/google-services.json @@ -0,0 +1,125 @@ +{ + "project_info": { + "project_number": "521675454867", + "firebase_url": "https://osmand-1e236.firebaseio.com", + "project_id": "osmand-1e236", + "storage_bucket": "osmand-1e236.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:521675454867:android:be0477f14dc015f4", + "android_client_info": { + "package_name": "net.osmand" + } + }, + "oauth_client": [ + { + "client_id": "521675454867-te1hdssotqq2dhu7pj2pjm17eulm1tvf.apps.googleusercontent.com", + "client_type": 1, + "android_info": { + "package_name": "net.osmand", + "certificate_hash": "49A9ACE0BFEE7BB91506D7921F93A47808CB62AB" + } + }, + { + "client_id": "521675454867-ttjur3617a74qj0a9rkbkbcjavvuebjp.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyBMaRMiPY-mS3J_-aX30sRBFB-WGIm-M-U" + } + ], + "services": { + "analytics_service": { + "status": 1 + }, + "appinvite_service": { + "status": 2, + "other_platform_oauth_client": [ + { + "client_id": "521675454867-ttjur3617a74qj0a9rkbkbcjavvuebjp.apps.googleusercontent.com", + "client_type": 3 + }, + { + "client_id": "521675454867-ta1aisohg7g0k542gdh9fbeb2v4qsncf.apps.googleusercontent.com", + "client_type": 2, + "ios_info": { + "bundle_id": "net.osmand.maps", + "app_store_id": "934850257" + } + } + ] + }, + "ads_service": { + "status": 2 + } + } + }, + { + "client_info": { + "mobilesdk_app_id": "1:521675454867:android:89d7051c910a2ed6", + "android_client_info": { + "package_name": "net.osmand.plus" + } + }, + "oauth_client": [ + { + "client_id": "521675454867-ttjur3617a74qj0a9rkbkbcjavvuebjp.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyBMaRMiPY-mS3J_-aX30sRBFB-WGIm-M-U" + } + ], + "services": { + "analytics_service": { + "status": 1 + }, + "appinvite_service": { + "status": 1, + "other_platform_oauth_client": [] + }, + "ads_service": { + "status": 2 + } + } + }, + { + "client_info": { + "mobilesdk_app_id": "1:521675454867:android:7e1b6333fdbe27e4", + "android_client_info": { + "package_name": "net.osmand.skimapsPlugin" + } + }, + "oauth_client": [ + { + "client_id": "521675454867-ttjur3617a74qj0a9rkbkbcjavvuebjp.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyBMaRMiPY-mS3J_-aX30sRBFB-WGIm-M-U" + } + ], + "services": { + "analytics_service": { + "status": 1 + }, + "appinvite_service": { + "status": 1, + "other_platform_oauth_client": [] + }, + "ads_service": { + "status": 2 + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/plugins/Osmand-Skimaps/res/layout/main.xml b/plugins/Osmand-Skimaps/res/layout/main.xml index 35e8b132cc..2e6fdf93cc 100644 --- a/plugins/Osmand-Skimaps/res/layout/main.xml +++ b/plugins/Osmand-Skimaps/res/layout/main.xml @@ -1,13 +1,71 @@ + android:layout_width="fill_parent" + android:layout_height="fill_parent" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:background="@color/white"> - + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/plugins/Osmand-Skimaps/res/values/colors.xml b/plugins/Osmand-Skimaps/res/values/colors.xml new file mode 100644 index 0000000000..a40ae6872e --- /dev/null +++ b/plugins/Osmand-Skimaps/res/values/colors.xml @@ -0,0 +1,9 @@ + + + + #2e73ef + #fff + #de000000 + #8a000000 + + \ No newline at end of file diff --git a/plugins/Osmand-Skimaps/res/values/strings.xml b/plugins/Osmand-Skimaps/res/values/strings.xml index 1ac4c0dcad..4cb7d7d8b4 100644 --- a/plugins/Osmand-Skimaps/res/values/strings.xml +++ b/plugins/Osmand-Skimaps/res/values/strings.xml @@ -1,5 +1,8 @@ + Ski Map — OsmAnd + Thank you for installing Ski Map!

It\'s a plugin for OsmAnd Maps & Navigation. To start using ski maps, please install <b>OsmAnd Maps & Navigation</b>.
+ Install OsmAnd No Yes OsmAnd is not installed diff --git a/plugins/Osmand-Skimaps/res/values/styles.xml b/plugins/Osmand-Skimaps/res/values/styles.xml new file mode 100644 index 0000000000..7004259b03 --- /dev/null +++ b/plugins/Osmand-Skimaps/res/values/styles.xml @@ -0,0 +1,14 @@ + + + + + + + + + \ No newline at end of file diff --git a/plugins/Osmand-Skimaps/src/net/osmand/skimaps/SkiMapsActivity.java b/plugins/Osmand-Skimaps/src/net/osmand/skimaps/SkiMapsActivity.java index 18a4e12c04..144fc3ddb4 100644 --- a/plugins/Osmand-Skimaps/src/net/osmand/skimaps/SkiMapsActivity.java +++ b/plugins/Osmand-Skimaps/src/net/osmand/skimaps/SkiMapsActivity.java @@ -1,61 +1,87 @@ package net.osmand.skimaps; -import net.osmand.skimapsPlugin.R; import android.app.Activity; -import android.app.AlertDialog; import android.content.ActivityNotFoundException; import android.content.ComponentName; -import android.content.DialogInterface; +import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.net.Uri; import android.os.Bundle; +import android.text.Html; +import android.view.View; +import android.widget.TextView; + +import net.osmand.skimapsPlugin.R; + +import java.lang.reflect.Method; public class SkiMapsActivity extends Activity { private static final String OSMAND_COMPONENT = "net.osmand"; //$NON-NLS-1$ private static final String OSMAND_COMPONENT_PLUS = "net.osmand.plus"; //$NON-NLS-1$ private static final String OSMAND_ACTIVITY = "net.osmand.plus.activities.MapActivity"; //$NON-NLS-1$ - - /** Called when the activity is first created. */ - @Override + + /** + * Called when the activity is first created. + */ + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); + TextView descriptionTextView = (TextView) findViewById(R.id.descriptionTextView); + descriptionTextView.setText(Html.fromHtml(getString(R.string.plugin_description))); + Intent intentPlus = new Intent(); intentPlus.setComponent(new ComponentName(OSMAND_COMPONENT_PLUS, OSMAND_ACTIVITY)); intentPlus.setFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); ResolveInfo resolved = getPackageManager().resolveActivity(intentPlus, PackageManager.MATCH_DEFAULT_ONLY); - if(resolved != null) { + if (resolved != null) { + logEvent(this, "open_osmand_plus"); stopService(intentPlus); startActivity(intentPlus); + finish(); } else { Intent intentNormal = new Intent(); intentNormal.setFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); intentNormal.setComponent(new ComponentName(OSMAND_COMPONENT, OSMAND_ACTIVITY)); resolved = getPackageManager().resolveActivity(intentNormal, PackageManager.MATCH_DEFAULT_ONLY); if (resolved != null) { + logEvent(this, "open_osmand"); stopService(intentNormal); startActivity(intentNormal); + finish(); } else { - AlertDialog.Builder builder = new AlertDialog.Builder(this); - builder.setMessage(getString(R.string.osmand_app_not_found)); - builder.setPositiveButton(getString(R.string.shared_string_yes), new DialogInterface.OnClickListener() { + logEvent(this, "open_dialog"); + findViewById(R.id.buyButton).setOnClickListener(new View.OnClickListener() { @Override - public void onClick(DialogInterface dialog, int which) { - Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://search?q=pname:" + OSMAND_COMPONENT)); + public void onClick(View v) { + String appName = OSMAND_COMPONENT; + logEvent(SkiMapsActivity.this, "open_play_store_" + appName); + Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://search?q=pname:" + appName)); try { - stopService(intent); + //stopService(intent); startActivity(intent); + finish(); } catch (ActivityNotFoundException e) { + // ignore } } }); - builder.setNegativeButton(getString(R.string.shared_string_no), null); - builder.show(); } } } - + + public void logEvent(Activity ctx, String event) { + try { + Class cl = Class.forName("com.google.firebase.analytics.FirebaseAnalytics"); + Method mm = cl.getMethod("getInstance", Context.class); + Object inst = mm.invoke(null, ctx == null ? this : ctx); + Method log = cl.getMethod("logEvent", String.class, Bundle.class); + log.invoke(inst, event, new Bundle()); + } catch (Exception e) { + e.printStackTrace(); + } + } } \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index 234ab0eb96..66941763eb 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,6 +1,8 @@ -include ':OsmAnd-java', ':OsmAndCore-sample' +include ':OsmAnd-java', ':OsmAndCore-sample', ':Osmand-Skimaps', ':Osmand-Nautical' include ':OsmAnd' include ':plugins:OsmAnd-AddressPlugin' include ':plugins:Osmand-ParkingPlugin' include ':plugins:Osmand-Sherpafy' include ':plugins:Osmand-SRTMPlugin' +project(':Osmand-Skimaps').projectDir = new File('plugins/Osmand-Skimaps') +project(':Osmand-Nautical').projectDir = new File('plugins/Osmand-Nautical') \ No newline at end of file