Improved ski maps plugin
This commit is contained in:
parent
4f886351a0
commit
1e6ea8386c
9 changed files with 271 additions and 26 deletions
|
@ -13,6 +13,7 @@
|
||||||
android:label="OsmAnd Ski Maps" >
|
android:label="OsmAnd Ski Maps" >
|
||||||
<activity
|
<activity
|
||||||
android:name="net.osmand.skimaps.SkiMapsActivity"
|
android:name="net.osmand.skimaps.SkiMapsActivity"
|
||||||
|
android:theme="@style/AppTheme"
|
||||||
android:label="@string/app_name" >
|
android:label="@string/app_name" >
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN" />
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
apply plugin: 'com.android.application'
|
apply plugin: 'com.android.application'
|
||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdkVersion 21
|
compileSdkVersion 23
|
||||||
buildToolsVersion "23.0.1"
|
buildToolsVersion "23.0.1"
|
||||||
|
|
||||||
signingConfigs {
|
signingConfigs {
|
||||||
|
@ -64,4 +64,11 @@ repositories {
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
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'
|
||||||
|
|
125
plugins/Osmand-Skimaps/google-services.json
Normal file
125
plugins/Osmand-Skimaps/google-services.json
Normal file
|
@ -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"
|
||||||
|
}
|
|
@ -1,13 +1,71 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="fill_parent" >
|
android:layout_height="fill_parent"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
android:background="@color/white">
|
||||||
|
|
||||||
<TextView
|
<LinearLayout
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="fill_parent"
|
android:layout_height="wrap_content"
|
||||||
android:gravity="center_vertical|center_horizontal"
|
android:orientation="vertical">
|
||||||
android:text="@string/parking_plugin_installed"
|
|
||||||
android:textSize="22sp"/>
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="@color/blue_background"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:paddingLeft="24dp"
|
||||||
|
android:paddingRight="24dp"
|
||||||
|
android:paddingTop="16dp"
|
||||||
|
android:paddingBottom="16dp">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="fill_parent"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:text="@string/plugin_title"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:textSize="18sp"
|
||||||
|
android:textStyle="bold"/>
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:src="@drawable/icon"/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingLeft="24dp"
|
||||||
|
android:paddingRight="24dp"
|
||||||
|
android:paddingTop="24dp"
|
||||||
|
android:paddingBottom="16dp"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/descriptionTextView"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="fill_parent"
|
||||||
|
android:text="@string/plugin_description"
|
||||||
|
android:textColor="@color/primary_text_light"
|
||||||
|
android:textSize="16sp"/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<android.support.v7.widget.AppCompatButton
|
||||||
|
android:id="@+id/buyButton"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:backgroundTint="@color/blue_background"
|
||||||
|
android:layout_marginLeft="20dp"
|
||||||
|
android:layout_marginRight="20dp"
|
||||||
|
android:layout_marginBottom="16dp"
|
||||||
|
android:text="@string/install_osmand"/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
</FrameLayout>
|
</FrameLayout>
|
9
plugins/Osmand-Skimaps/res/values/colors.xml
Normal file
9
plugins/Osmand-Skimaps/res/values/colors.xml
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
|
||||||
|
<color name="blue_background">#2e73ef</color>
|
||||||
|
<color name="white">#fff</color>
|
||||||
|
<color name="primary_text_light">#de000000</color>
|
||||||
|
<color name="secondary_text_light">#8a000000</color>
|
||||||
|
|
||||||
|
</resources>
|
|
@ -1,5 +1,8 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
|
<string name="plugin_title">Ski Map — OsmAnd</string>
|
||||||
|
<string name="plugin_description">Thank you for installing Ski Map!<br/><br/>It\'s a plugin for OsmAnd Maps & Navigation. To start using ski maps, please install <b>OsmAnd Maps & Navigation</b>.</string>
|
||||||
|
<string name="install_osmand">Install OsmAnd</string>
|
||||||
<string name="shared_string_no">No</string>
|
<string name="shared_string_no">No</string>
|
||||||
<string name="shared_string_yes">Yes</string>
|
<string name="shared_string_yes">Yes</string>
|
||||||
<string name="osmand_app_not_found">OsmAnd is not installed</string>
|
<string name="osmand_app_not_found">OsmAnd is not installed</string>
|
||||||
|
|
14
plugins/Osmand-Skimaps/res/values/styles.xml
Normal file
14
plugins/Osmand-Skimaps/res/values/styles.xml
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||||
|
<resources xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
|
||||||
|
<style name="AppTheme" parent="Theme.AppCompat.Light.Dialog">
|
||||||
|
<item name="android:windowNoTitle">true</item>
|
||||||
|
<item name="android:buttonStyle">@style/AppButton</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="AppButton" parent="Widget.AppCompat.Button.Colored">
|
||||||
|
<item name="android:textColor">@color/white</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
|
||||||
|
</resources>
|
|
@ -1,61 +1,87 @@
|
||||||
package net.osmand.skimaps;
|
package net.osmand.skimaps;
|
||||||
|
|
||||||
import net.osmand.skimapsPlugin.R;
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.app.AlertDialog;
|
|
||||||
import android.content.ActivityNotFoundException;
|
import android.content.ActivityNotFoundException;
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
import android.content.DialogInterface;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.content.pm.ResolveInfo;
|
import android.content.pm.ResolveInfo;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
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 {
|
public class SkiMapsActivity extends Activity {
|
||||||
private static final String OSMAND_COMPONENT = "net.osmand"; //$NON-NLS-1$
|
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_COMPONENT_PLUS = "net.osmand.plus"; //$NON-NLS-1$
|
||||||
private static final String OSMAND_ACTIVITY = "net.osmand.plus.activities.MapActivity"; //$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) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
setContentView(R.layout.main);
|
setContentView(R.layout.main);
|
||||||
|
|
||||||
|
TextView descriptionTextView = (TextView) findViewById(R.id.descriptionTextView);
|
||||||
|
descriptionTextView.setText(Html.fromHtml(getString(R.string.plugin_description)));
|
||||||
|
|
||||||
Intent intentPlus = new Intent();
|
Intent intentPlus = new Intent();
|
||||||
intentPlus.setComponent(new ComponentName(OSMAND_COMPONENT_PLUS, OSMAND_ACTIVITY));
|
intentPlus.setComponent(new ComponentName(OSMAND_COMPONENT_PLUS, OSMAND_ACTIVITY));
|
||||||
intentPlus.setFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
|
intentPlus.setFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
|
||||||
ResolveInfo resolved = getPackageManager().resolveActivity(intentPlus, PackageManager.MATCH_DEFAULT_ONLY);
|
ResolveInfo resolved = getPackageManager().resolveActivity(intentPlus, PackageManager.MATCH_DEFAULT_ONLY);
|
||||||
if(resolved != null) {
|
if (resolved != null) {
|
||||||
|
logEvent(this, "open_osmand_plus");
|
||||||
stopService(intentPlus);
|
stopService(intentPlus);
|
||||||
startActivity(intentPlus);
|
startActivity(intentPlus);
|
||||||
|
finish();
|
||||||
} else {
|
} else {
|
||||||
Intent intentNormal = new Intent();
|
Intent intentNormal = new Intent();
|
||||||
intentNormal.setFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
|
intentNormal.setFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
|
||||||
intentNormal.setComponent(new ComponentName(OSMAND_COMPONENT, OSMAND_ACTIVITY));
|
intentNormal.setComponent(new ComponentName(OSMAND_COMPONENT, OSMAND_ACTIVITY));
|
||||||
resolved = getPackageManager().resolveActivity(intentNormal, PackageManager.MATCH_DEFAULT_ONLY);
|
resolved = getPackageManager().resolveActivity(intentNormal, PackageManager.MATCH_DEFAULT_ONLY);
|
||||||
if (resolved != null) {
|
if (resolved != null) {
|
||||||
|
logEvent(this, "open_osmand");
|
||||||
stopService(intentNormal);
|
stopService(intentNormal);
|
||||||
startActivity(intentNormal);
|
startActivity(intentNormal);
|
||||||
|
finish();
|
||||||
} else {
|
} else {
|
||||||
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
logEvent(this, "open_dialog");
|
||||||
builder.setMessage(getString(R.string.osmand_app_not_found));
|
findViewById(R.id.buyButton).setOnClickListener(new View.OnClickListener() {
|
||||||
builder.setPositiveButton(getString(R.string.shared_string_yes), new DialogInterface.OnClickListener() {
|
|
||||||
@Override
|
@Override
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
public void onClick(View v) {
|
||||||
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://search?q=pname:" + OSMAND_COMPONENT));
|
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 {
|
try {
|
||||||
stopService(intent);
|
//stopService(intent);
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
|
finish();
|
||||||
} catch (ActivityNotFoundException e) {
|
} 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();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -1,6 +1,8 @@
|
||||||
include ':OsmAnd-java', ':OsmAndCore-sample'
|
include ':OsmAnd-java', ':OsmAndCore-sample', ':Osmand-Skimaps', ':Osmand-Nautical'
|
||||||
include ':OsmAnd'
|
include ':OsmAnd'
|
||||||
include ':plugins:OsmAnd-AddressPlugin'
|
include ':plugins:OsmAnd-AddressPlugin'
|
||||||
include ':plugins:Osmand-ParkingPlugin'
|
include ':plugins:Osmand-ParkingPlugin'
|
||||||
include ':plugins:Osmand-Sherpafy'
|
include ':plugins:Osmand-Sherpafy'
|
||||||
include ':plugins:Osmand-SRTMPlugin'
|
include ':plugins:Osmand-SRTMPlugin'
|
||||||
|
project(':Osmand-Skimaps').projectDir = new File('plugins/Osmand-Skimaps')
|
||||||
|
project(':Osmand-Nautical').projectDir = new File('plugins/Osmand-Nautical')
|
Loading…
Reference in a new issue