diff --git a/plugins/Osmand-Nautical/AndroidManifest.xml b/plugins/Osmand-Nautical/AndroidManifest.xml index 28628db102..e99e2054e5 100644 --- a/plugins/Osmand-Nautical/AndroidManifest.xml +++ b/plugins/Osmand-Nautical/AndroidManifest.xml @@ -14,13 +14,12 @@ android:label="OsmAnd Nautical" > - diff --git a/plugins/Osmand-Nautical/build.gradle b/plugins/Osmand-Nautical/build.gradle index 17aa1d99f2..6b10503e13 100644 --- a/plugins/Osmand-Nautical/build.gradle +++ b/plugins/Osmand-Nautical/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' \ No newline at end of file diff --git a/plugins/Osmand-Nautical/google-services.json b/plugins/Osmand-Nautical/google-services.json new file mode 100644 index 0000000000..5627ab1b77 --- /dev/null +++ b/plugins/Osmand-Nautical/google-services.json @@ -0,0 +1,156 @@ +{ + "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 + } + } + }, + { + "client_info": { + "mobilesdk_app_id": "1:521675454867:android:b53cc47c00e16275", + "android_client_info": { + "package_name": "net.osmand.nauticalPlugin" + } + }, + "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-Nautical/res/layout/main.xml b/plugins/Osmand-Nautical/res/layout/main.xml index 35e8b132cc..2e6fdf93cc 100644 --- a/plugins/Osmand-Nautical/res/layout/main.xml +++ b/plugins/Osmand-Nautical/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-Nautical/res/values/strings.xml b/plugins/Osmand-Nautical/res/values/strings.xml index e51be9daf3..9ebf7a78f8 100644 --- a/plugins/Osmand-Nautical/res/values/strings.xml +++ b/plugins/Osmand-Nautical/res/values/strings.xml @@ -1,5 +1,8 @@ + Nautical — OsmAnd + Thank you for installing OsmAnd Nautical!<br/><br/>It\'s a plugin for OsmAnd Maps & Navigation. To start using nautical, please install <b>OsmAnd Maps & Navigation</b>. + Install OsmAnd No Yes OsmAnd is not installed diff --git a/plugins/Osmand-Nautical/src/net/osmand/nautical/NauticalActivity.java b/plugins/Osmand-Nautical/src/net/osmand/nautical/NauticalActivity.java index 3a69fd7a56..fe4e262ce8 100644 --- a/plugins/Osmand-Nautical/src/net/osmand/nautical/NauticalActivity.java +++ b/plugins/Osmand-Nautical/src/net/osmand/nautical/NauticalActivity.java @@ -1,16 +1,21 @@ package net.osmand.nautical; -import net.osmand.nauticalPlugin.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.nauticalPlugin.R; + +import java.lang.reflect.Method; public class NauticalActivity extends Activity { private static final String OSMAND_COMPONENT = "net.osmand"; //$NON-NLS-1$ @@ -23,6 +28,9 @@ public class NauticalActivity extends Activity { 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); @@ -30,6 +38,7 @@ public class NauticalActivity extends Activity { if(resolved != null) { stopService(intentPlus); startActivity(intentPlus); + finish(); } else { Intent intentNormal = new Intent(); intentNormal.setFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); @@ -38,24 +47,37 @@ public class NauticalActivity extends Activity { if (resolved != null) { 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_PLUS)); + public void onClick(View v) { + String appName = OSMAND_COMPONENT; + logEvent(NauticalActivity.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