Showing
13 changed files
with
458 additions
and
9 deletions
| ... | @@ -116,6 +116,7 @@ | ... | @@ -116,6 +116,7 @@ |
| 116 | <entry key="..\:/Users/Warply/Documents/Warply/Android/warply_android_sdk_maven_plugin/warply_android_sdk/src/main/res/layout/activity_more_for_you.xml" value="0.22" /> | 116 | <entry key="..\:/Users/Warply/Documents/Warply/Android/warply_android_sdk_maven_plugin/warply_android_sdk/src/main/res/layout/activity_more_for_you.xml" value="0.22" /> |
| 117 | <entry key="..\:/Users/Warply/Documents/Warply/Android/warply_android_sdk_maven_plugin/warply_android_sdk/src/main/res/layout/activity_past_coupons.xml" value="0.358695652173913" /> | 117 | <entry key="..\:/Users/Warply/Documents/Warply/Android/warply_android_sdk_maven_plugin/warply_android_sdk/src/main/res/layout/activity_past_coupons.xml" value="0.358695652173913" /> |
| 118 | <entry key="..\:/Users/Warply/Documents/Warply/Android/warply_android_sdk_maven_plugin/warply_android_sdk/src/main/res/layout/activity_shops.xml" value="0.36666666666666664" /> | 118 | <entry key="..\:/Users/Warply/Documents/Warply/Android/warply_android_sdk_maven_plugin/warply_android_sdk/src/main/res/layout/activity_shops.xml" value="0.36666666666666664" /> |
| 119 | + <entry key="..\:/Users/Warply/Documents/Warply/Android/warply_android_sdk_maven_plugin/warply_android_sdk/src/main/res/layout/activity_shops_huawei.xml" value="0.23157894736842105" /> | ||
| 119 | <entry key="..\:/Users/Warply/Documents/Warply/Android/warply_android_sdk_maven_plugin/warply_android_sdk/src/main/res/layout/activity_steps.xml" value="0.358695652173913" /> | 120 | <entry key="..\:/Users/Warply/Documents/Warply/Android/warply_android_sdk_maven_plugin/warply_android_sdk/src/main/res/layout/activity_steps.xml" value="0.358695652173913" /> |
| 120 | <entry key="..\:/Users/Warply/Documents/Warply/Android/warply_android_sdk_maven_plugin/warply_android_sdk/src/main/res/layout/activity_telco.xml" value="0.36666666666666664" /> | 121 | <entry key="..\:/Users/Warply/Documents/Warply/Android/warply_android_sdk_maven_plugin/warply_android_sdk/src/main/res/layout/activity_telco.xml" value="0.36666666666666664" /> |
| 121 | <entry key="..\:/Users/Warply/Documents/Warply/Android/warply_android_sdk_maven_plugin/warply_android_sdk/src/main/res/layout/activity_webview.xml" value="0.4282238442822384" /> | 122 | <entry key="..\:/Users/Warply/Documents/Warply/Android/warply_android_sdk_maven_plugin/warply_android_sdk/src/main/res/layout/activity_webview.xml" value="0.4282238442822384" /> | ... | ... |
| 1 | apply plugin: 'com.android.application' | 1 | apply plugin: 'com.android.application' |
| 2 | //apply plugin: 'com.google.gms.google-services' | 2 | //apply plugin: 'com.google.gms.google-services' |
| 3 | +//apply plugin: 'com.huawei.agconnect' | ||
| 3 | 4 | ||
| 4 | android { | 5 | android { |
| 5 | compileSdkVersion 31 | 6 | compileSdkVersion 31 |
| ... | @@ -23,16 +24,22 @@ android { | ... | @@ -23,16 +24,22 @@ android { |
| 23 | signingConfigs { | 24 | signingConfigs { |
| 24 | config { | 25 | config { |
| 25 | // Set the parameters based on the actual signing information. | 26 | // Set the parameters based on the actual signing information. |
| 26 | - keyAlias 'warplydemo' | 27 | + keyAlias 'democosmote' |
| 27 | - keyPassword 'warplydemo' | 28 | + keyPassword 'democosmote' |
| 28 | - storeFile file('../keystore/warplydemo.jks') | 29 | + storeFile file('../keystore/democosmote.jks') |
| 29 | - storePassword 'warplydemo' | 30 | + storePassword 'democosmote' |
| 31 | + } | ||
| 32 | + debug { | ||
| 33 | + keyAlias 'androiddebugkey' | ||
| 34 | + keyPassword 'android' | ||
| 35 | + storeFile file('../keystore/debug.keystore') | ||
| 36 | + storePassword 'android' | ||
| 30 | } | 37 | } |
| 31 | } | 38 | } |
| 32 | 39 | ||
| 33 | buildTypes { | 40 | buildTypes { |
| 34 | debug { | 41 | debug { |
| 35 | - | 42 | + signingConfig signingConfigs.debug |
| 36 | } | 43 | } |
| 37 | release { | 44 | release { |
| 38 | signingConfig signingConfigs.config | 45 | signingConfig signingConfigs.config | ... | ... |
| ... | @@ -10,7 +10,7 @@ buildscript { | ... | @@ -10,7 +10,7 @@ buildscript { |
| 10 | dependencies { | 10 | dependencies { |
| 11 | classpath 'com.android.tools.build:gradle:7.0.4' | 11 | classpath 'com.android.tools.build:gradle:7.0.4' |
| 12 | classpath 'com.google.gms:google-services:4.3.10' | 12 | classpath 'com.google.gms:google-services:4.3.10' |
| 13 | - classpath 'com.huawei.agconnect:agcp:1.6.2.300' | 13 | + classpath 'com.huawei.agconnect:agcp:1.7.2.300' |
| 14 | classpath 'io.github.gradle-nexus:publish-plugin:1.1.0' | 14 | classpath 'io.github.gradle-nexus:publish-plugin:1.1.0' |
| 15 | 15 | ||
| 16 | // NOTE: Do not place your application dependencies here; they belong | 16 | // NOTE: Do not place your application dependencies here; they belong | ... | ... |
keystore/debug.keystore
0 → 100644
No preview for this file type
| ... | @@ -2,7 +2,7 @@ apply plugin: 'com.android.library' | ... | @@ -2,7 +2,7 @@ apply plugin: 'com.android.library' |
| 2 | 2 | ||
| 3 | ext { | 3 | ext { |
| 4 | PUBLISH_GROUP_ID = 'ly.warp' | 4 | PUBLISH_GROUP_ID = 'ly.warp' |
| 5 | - PUBLISH_VERSION = '4.5.4.6rc41' | 5 | + PUBLISH_VERSION = '4.5.4.6rc42' |
| 6 | PUBLISH_ARTIFACT_ID = 'warply-android-sdk' | 6 | PUBLISH_ARTIFACT_ID = 'warply-android-sdk' |
| 7 | } | 7 | } |
| 8 | 8 | ||
| ... | @@ -89,6 +89,8 @@ dependencies { | ... | @@ -89,6 +89,8 @@ dependencies { |
| 89 | implementation 'com.huawei.hms:base:6.6.0.300' | 89 | implementation 'com.huawei.hms:base:6.6.0.300' |
| 90 | implementation 'com.huawei.hms:push:6.7.0.300' | 90 | implementation 'com.huawei.hms:push:6.7.0.300' |
| 91 | implementation 'com.huawei.hms:ads-identifier:3.4.56.300' | 91 | implementation 'com.huawei.hms:ads-identifier:3.4.56.300' |
| 92 | + implementation 'com.huawei.hms:maps:6.9.0.300' | ||
| 93 | + implementation 'com.huawei.hms:maps-basic:6.9.0.300' | ||
| 92 | 94 | ||
| 93 | //------------------------------ SQLCipher -----------------------------// | 95 | //------------------------------ SQLCipher -----------------------------// |
| 94 | api "net.zetetic:android-database-sqlcipher:4.5.2" | 96 | api "net.zetetic:android-database-sqlcipher:4.5.2" | ... | ... |
| ... | @@ -12,6 +12,8 @@ | ... | @@ -12,6 +12,8 @@ |
| 12 | <uses-permission | 12 | <uses-permission |
| 13 | android:name="android.permission.REQUEST_INSTALL_PACKAGES" | 13 | android:name="android.permission.REQUEST_INSTALL_PACKAGES" |
| 14 | tools:node="remove" /> | 14 | tools:node="remove" /> |
| 15 | + <uses-permission android:name="com.huawei.appmarket.service.commondata.permission.GET_COMMON_DATA"/> | ||
| 16 | + <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/> | ||
| 15 | 17 | ||
| 16 | <application android:largeHeap="true"> | 18 | <application android:largeHeap="true"> |
| 17 | <!-- <meta-data--> | 19 | <!-- <meta-data--> |
| ... | @@ -88,6 +90,12 @@ | ... | @@ -88,6 +90,12 @@ |
| 88 | android:theme="@style/SDKAppTheme" /> | 90 | android:theme="@style/SDKAppTheme" /> |
| 89 | 91 | ||
| 90 | <activity | 92 | <activity |
| 93 | + android:name="ly.warp.sdk.activities.ShopsHuaweiActivity" | ||
| 94 | + android:exported="false" | ||
| 95 | + android:screenOrientation="portrait" | ||
| 96 | + android:theme="@style/SDKAppTheme" /> | ||
| 97 | + | ||
| 98 | + <activity | ||
| 91 | android:name="ly.warp.sdk.activities.CouponShareActivity" | 99 | android:name="ly.warp.sdk.activities.CouponShareActivity" |
| 92 | android:exported="false" | 100 | android:exported="false" |
| 93 | android:screenOrientation="portrait" | 101 | android:screenOrientation="portrait" | ... | ... |
| ... | @@ -36,6 +36,7 @@ import ly.warp.sdk.io.models.Coupon; | ... | @@ -36,6 +36,7 @@ import ly.warp.sdk.io.models.Coupon; |
| 36 | import ly.warp.sdk.io.models.Couponset; | 36 | import ly.warp.sdk.io.models.Couponset; |
| 37 | import ly.warp.sdk.io.models.Merchant; | 37 | import ly.warp.sdk.io.models.Merchant; |
| 38 | import ly.warp.sdk.services.EventCouponsService; | 38 | import ly.warp.sdk.services.EventCouponsService; |
| 39 | +import ly.warp.sdk.utils.WarplyDeviceInfoCollector; | ||
| 39 | import ly.warp.sdk.utils.WarplyManagerHelper; | 40 | import ly.warp.sdk.utils.WarplyManagerHelper; |
| 40 | import ly.warp.sdk.utils.managers.WarplyAnalyticsManager; | 41 | import ly.warp.sdk.utils.managers.WarplyAnalyticsManager; |
| 41 | 42 | ||
| ... | @@ -131,10 +132,17 @@ public class CouponInfoActivity extends Activity implements View.OnClickListener | ... | @@ -131,10 +132,17 @@ public class CouponInfoActivity extends Activity implements View.OnClickListener |
| 131 | if (view.getId() == R.id.ll_shops) { | 132 | if (view.getId() == R.id.ll_shops) { |
| 132 | WarplyAnalyticsManager.logTrackersEvent(this, "click", "SeeShops"); | 133 | WarplyAnalyticsManager.logTrackersEvent(this, "click", "SeeShops"); |
| 133 | 134 | ||
| 135 | + if (WarplyDeviceInfoCollector.isPackageInstalled("com.android.vending", getPackageManager())) { | ||
| 134 | Intent intent = new Intent(CouponInfoActivity.this, ShopsActivity.class); | 136 | Intent intent = new Intent(CouponInfoActivity.this, ShopsActivity.class); |
| 135 | intent.putExtra("couponset", (Serializable) mCouponset); | 137 | intent.putExtra("couponset", (Serializable) mCouponset); |
| 136 | startActivity(intent); | 138 | startActivity(intent); |
| 137 | return; | 139 | return; |
| 140 | + } else { | ||
| 141 | + Intent intent = new Intent(CouponInfoActivity.this, ShopsHuaweiActivity.class); | ||
| 142 | + intent.putExtra("couponset", (Serializable) mCouponset); | ||
| 143 | + startActivity(intent); | ||
| 144 | + return; | ||
| 145 | + } | ||
| 138 | } | 146 | } |
| 139 | if (view.getId() == R.id.ll_website) { | 147 | if (view.getId() == R.id.ll_website) { |
| 140 | WarplyAnalyticsManager.logTrackersEvent(this, "click", "SeeShopWebsite"); | 148 | WarplyAnalyticsManager.logTrackersEvent(this, "click", "SeeShopWebsite"); | ... | ... |
| ... | @@ -69,7 +69,7 @@ public class ShopsActivity extends FragmentActivity implements View.OnClickListe | ... | @@ -69,7 +69,7 @@ public class ShopsActivity extends FragmentActivity implements View.OnClickListe |
| 69 | private Couponset mCouponset; | 69 | private Couponset mCouponset; |
| 70 | private GoogleMap mMap; | 70 | private GoogleMap mMap; |
| 71 | private ClusterManager<Merchant> mClusterManager; | 71 | private ClusterManager<Merchant> mClusterManager; |
| 72 | - SupportMapFragment mMapView; | 72 | + private SupportMapFragment mMapView; |
| 73 | private MerchantList mMerchantList = new MerchantList(); | 73 | private MerchantList mMerchantList = new MerchantList(); |
| 74 | private AlertDialog mAlertDialogNoShopsAvailable; | 74 | private AlertDialog mAlertDialogNoShopsAvailable; |
| 75 | private Merchant mMerchant; | 75 | private Merchant mMerchant; | ... | ... |
| 1 | +package ly.warp.sdk.activities; | ||
| 2 | + | ||
| 3 | +import android.Manifest; | ||
| 4 | +import android.content.ActivityNotFoundException; | ||
| 5 | +import android.content.Context; | ||
| 6 | +import android.content.Intent; | ||
| 7 | +import android.content.pm.PackageManager; | ||
| 8 | +import android.net.Uri; | ||
| 9 | +import android.os.Bundle; | ||
| 10 | +import android.os.Handler; | ||
| 11 | +import android.os.Looper; | ||
| 12 | +import android.text.TextUtils; | ||
| 13 | +import android.util.Log; | ||
| 14 | +import android.view.View; | ||
| 15 | +import android.widget.ImageView; | ||
| 16 | +import android.widget.LinearLayout; | ||
| 17 | +import android.widget.TextView; | ||
| 18 | + | ||
| 19 | +import androidx.annotation.NonNull; | ||
| 20 | +import androidx.appcompat.app.AlertDialog; | ||
| 21 | +import androidx.core.app.ActivityCompat; | ||
| 22 | +import androidx.core.content.ContextCompat; | ||
| 23 | +import androidx.fragment.app.FragmentActivity; | ||
| 24 | + | ||
| 25 | +import com.bumptech.glide.Glide; | ||
| 26 | +import com.bumptech.glide.load.engine.DiskCacheStrategy; | ||
| 27 | +import com.google.android.material.bottomsheet.BottomSheetDialog; | ||
| 28 | +import com.huawei.hms.maps.CameraUpdate; | ||
| 29 | +import com.huawei.hms.maps.CameraUpdateFactory; | ||
| 30 | +import com.huawei.hms.maps.HuaweiMap; | ||
| 31 | +import com.huawei.hms.maps.MapsInitializer; | ||
| 32 | +import com.huawei.hms.maps.OnMapReadyCallback; | ||
| 33 | +import com.huawei.hms.maps.SupportMapFragment; | ||
| 34 | +import com.huawei.hms.maps.model.LatLng; | ||
| 35 | +import com.huawei.hms.maps.model.Marker; | ||
| 36 | +import com.huawei.hms.maps.model.MarkerOptions; | ||
| 37 | + | ||
| 38 | +import java.util.ArrayList; | ||
| 39 | + | ||
| 40 | +import io.github.inflationx.viewpump.ViewPumpContextWrapper; | ||
| 41 | +import ly.warp.sdk.R; | ||
| 42 | +import ly.warp.sdk.io.callbacks.CallbackReceiver; | ||
| 43 | +import ly.warp.sdk.io.models.Couponset; | ||
| 44 | +import ly.warp.sdk.io.models.Merchant; | ||
| 45 | +import ly.warp.sdk.io.models.MerchantList; | ||
| 46 | +import ly.warp.sdk.io.request.WarplyMerchantsRequest; | ||
| 47 | +import ly.warp.sdk.utils.WarplyManagerHelper; | ||
| 48 | +import ly.warp.sdk.utils.constants.WarpConstants; | ||
| 49 | +import ly.warp.sdk.utils.managers.WarplyAnalyticsManager; | ||
| 50 | +import ly.warp.sdk.utils.managers.WarplyManager; | ||
| 51 | + | ||
| 52 | + | ||
| 53 | +public class ShopsHuaweiActivity extends FragmentActivity implements View.OnClickListener, OnMapReadyCallback, | ||
| 54 | + HuaweiMap.OnMapLoadedCallback, HuaweiMap.OnMarkerClickListener { | ||
| 55 | + | ||
| 56 | + // =========================================================== | ||
| 57 | + // Constants | ||
| 58 | + // =========================================================== | ||
| 59 | + | ||
| 60 | + public final static float DEFAULT_LOCATION_ZOOM = 6.2f; | ||
| 61 | + | ||
| 62 | + // =========================================================== | ||
| 63 | + // Fields | ||
| 64 | + // =========================================================== | ||
| 65 | + | ||
| 66 | + private ImageView mIvBack; | ||
| 67 | + private Couponset mCouponset; | ||
| 68 | + private HuaweiMap mMap; | ||
| 69 | + // private ClusterManager<Merchant> mClusterManager; | ||
| 70 | + private SupportMapFragment mSupportMapFragment; | ||
| 71 | + private MerchantList mMerchantList = new MerchantList(); | ||
| 72 | + private AlertDialog mAlertDialogNoShopsAvailable; | ||
| 73 | + private Merchant mMerchant; | ||
| 74 | + | ||
| 75 | + // =========================================================== | ||
| 76 | + // Methods for/from SuperClass/Interfaces | ||
| 77 | + // =========================================================== | ||
| 78 | + | ||
| 79 | + @Override | ||
| 80 | + public void onCreate(Bundle savedInstanceState) { | ||
| 81 | + super.onCreate(savedInstanceState); | ||
| 82 | + MapsInitializer.initialize(this); | ||
| 83 | + setContentView(R.layout.activity_shops_huawei); | ||
| 84 | + | ||
| 85 | + mCouponset = (Couponset) getIntent().getSerializableExtra("couponset"); | ||
| 86 | + for (Merchant merchant : WarplyManagerHelper.getMerchantList()) { | ||
| 87 | + if (merchant.getUuid().equals(mCouponset.getMerchantUuid())) { | ||
| 88 | + mMerchant = merchant; | ||
| 89 | + break; | ||
| 90 | + } | ||
| 91 | + } | ||
| 92 | + | ||
| 93 | + mIvBack = findViewById(R.id.iv_shops_back); | ||
| 94 | + mSupportMapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.mv_shops_huawei); | ||
| 95 | + mSupportMapFragment.getMapAsync(this); | ||
| 96 | + mIvBack.setOnClickListener(this); | ||
| 97 | + } | ||
| 98 | + | ||
| 99 | + @Override | ||
| 100 | + public void onResume() { | ||
| 101 | + super.onResume(); | ||
| 102 | + WarplyAnalyticsManager.logTrackersEvent(this, "screen", "ShopsScreen"); | ||
| 103 | + } | ||
| 104 | + | ||
| 105 | + @Override | ||
| 106 | + public void onClick(View view) { | ||
| 107 | + if (view.getId() == R.id.iv_shops_back) { | ||
| 108 | + onBackPressed(); | ||
| 109 | + } | ||
| 110 | + } | ||
| 111 | + | ||
| 112 | + @Override | ||
| 113 | + protected void attachBaseContext(Context newBase) { | ||
| 114 | + super.attachBaseContext(ViewPumpContextWrapper.wrap(newBase)); | ||
| 115 | + } | ||
| 116 | + | ||
| 117 | +// @Override | ||
| 118 | +// public void onRequestPermissionsResult( | ||
| 119 | +// int requestCode, | ||
| 120 | +// String permissions[], | ||
| 121 | +// int[] grantResults) { | ||
| 122 | +// switch (requestCode) { | ||
| 123 | +// case REQUEST_PERMISSION_PHONE_STATE: | ||
| 124 | +// if (grantResults.length > 0 | ||
| 125 | +// && grantResults[0] == PackageManager.PERMISSION_GRANTED) { | ||
| 126 | +// Toast.makeText(MainActivity.this, "Permission Granted!", Toast.LENGTH_SHORT).show(); | ||
| 127 | +// } else { | ||
| 128 | +// Toast.makeText(MainActivity.this, "Permission Denied!", Toast.LENGTH_SHORT).show(); | ||
| 129 | +// } | ||
| 130 | +// } | ||
| 131 | +// } | ||
| 132 | + | ||
| 133 | + @Override | ||
| 134 | + public void onMapReady(HuaweiMap huaweiMap) { | ||
| 135 | + mMap = huaweiMap; | ||
| 136 | + | ||
| 137 | + if (ActivityCompat.checkSelfPermission(this, | ||
| 138 | + Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED | ||
| 139 | + && ActivityCompat.checkSelfPermission(this, | ||
| 140 | + Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) { | ||
| 141 | + if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { | ||
| 142 | + mMap.setMyLocationEnabled(true); | ||
| 143 | + } | ||
| 144 | + } else { | ||
| 145 | + mMap.setMyLocationEnabled(false); | ||
| 146 | +// ActivityCompat.requestPermissions(this, | ||
| 147 | +// new String[]{Manifest.permission.ACCESS_FINE_LOCATION, | ||
| 148 | +// Manifest.permission.ACCESS_COARSE_LOCATION}, 501); | ||
| 149 | + } | ||
| 150 | + | ||
| 151 | + mMap.setMyLocationEnabled(false); | ||
| 152 | + mMap.setMapType(HuaweiMap.MAP_TYPE_NORMAL); | ||
| 153 | + mMap.setMinZoomPreference(DEFAULT_LOCATION_ZOOM); | ||
| 154 | + mMap.setLatLngBoundsForCameraTarget(WarpConstants.GREECE_BOUNDS_HUAWEI); | ||
| 155 | + mMap.getUiSettings().setZoomControlsEnabled(true); | ||
| 156 | + mMap.getUiSettings().setZoomGesturesEnabled(true); | ||
| 157 | + mMap.getUiSettings().setCompassEnabled(false); | ||
| 158 | + mMap.getUiSettings().setMyLocationButtonEnabled(false); | ||
| 159 | + mMap.getUiSettings().setMapToolbarEnabled(false); | ||
| 160 | + mMap.getUiSettings().setTiltGesturesEnabled(false); | ||
| 161 | + mMap.getUiSettings().setRotateGesturesEnabled(false); | ||
| 162 | + mMap.setOnMapLoadedCallback(this); | ||
| 163 | + mMap.setOnMarkerClickListener(/*mClusterManager*/this); | ||
| 164 | + mMap.setMarkersClustering(true); | ||
| 165 | + } | ||
| 166 | + | ||
| 167 | + @Override | ||
| 168 | + public void onMapLoaded() { | ||
| 169 | + if (mMap != null) { | ||
| 170 | + CameraUpdate camUpdate; | ||
| 171 | + camUpdate = CameraUpdateFactory.newLatLngBounds(WarpConstants.GREECE_BOUNDS_HUAWEI, 48); | ||
| 172 | + mMap.animateCamera(camUpdate); | ||
| 173 | + } | ||
| 174 | +// | ||
| 175 | +// if (mClusterManager == null) { | ||
| 176 | +// mClusterManager = new ClusterManager<>(this, mMap); | ||
| 177 | +// mClusterManager.setOnClusterClickListener(this); | ||
| 178 | +//// mMap.setOnMarkerClickListener(/*mClusterManager*/this); | ||
| 179 | +// } | ||
| 180 | +// | ||
| 181 | + if (mCouponset != null) { | ||
| 182 | + ArrayList<String> uuids = new ArrayList<>(); | ||
| 183 | + uuids.add(mCouponset.getMerchantUuid()); | ||
| 184 | + new Thread(() -> { | ||
| 185 | + if (!Thread.currentThread().isInterrupted()) { | ||
| 186 | + WarplyManager.getMerchantsMultilingual(new WarplyMerchantsRequest() | ||
| 187 | + .setIsMultilingual(true) | ||
| 188 | + .setParentUuids(uuids) | ||
| 189 | + , mMerchantsCallback); | ||
| 190 | + } | ||
| 191 | + Thread.currentThread().interrupt(); | ||
| 192 | + }).start(); | ||
| 193 | + } | ||
| 194 | + } | ||
| 195 | + | ||
| 196 | +// @Override | ||
| 197 | +// public boolean onClusterClick(Cluster<Merchant> cluster) { | ||
| 198 | +// if (mMap != null) { | ||
| 199 | +// mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(cluster.getPosition(), | ||
| 200 | +// (float) Math.floor(mMap.getCameraPosition().zoom + 1)), 300, null); | ||
| 201 | +// | ||
| 202 | +//// mMap.clear(); | ||
| 203 | +//// mClusterManager.clearItems(); | ||
| 204 | +//// mClusterManager.addItems(cluster.getItems()); | ||
| 205 | +//// mClusterManager.cluster(); | ||
| 206 | +// } | ||
| 207 | +// return true; | ||
| 208 | +// } | ||
| 209 | + | ||
| 210 | + @Override | ||
| 211 | + public boolean onMarkerClick(@NonNull Marker marker) { | ||
| 212 | + for (Merchant merch : mMerchantList) { | ||
| 213 | + if (merch.getUuid().equals(marker.getSnippet())) { | ||
| 214 | + WarplyAnalyticsManager.logTrackersEvent(this, "click", ("ShopsScreenMarker").concat(":").concat(marker.getSnippet())); | ||
| 215 | + final BottomSheetDialog bottomSheetDialog = new BottomSheetDialog(this); | ||
| 216 | + bottomSheetDialog.setContentView(R.layout.dl_map_pin); | ||
| 217 | + | ||
| 218 | + ImageView dialogClose = (ImageView) bottomSheetDialog.findViewById(R.id.iv_map_pin_close); | ||
| 219 | + dialogClose.setOnClickListener(view -> bottomSheetDialog.dismiss()); | ||
| 220 | + | ||
| 221 | + TextView pinTitle = (TextView) bottomSheetDialog.findViewById(R.id.tv_pin_title); | ||
| 222 | + pinTitle.setText(merch.getAdminName()); | ||
| 223 | + | ||
| 224 | + ImageView pinLogo = (ImageView) bottomSheetDialog.findViewById(R.id.iv_pin_logo); | ||
| 225 | + if (!TextUtils.isEmpty(merch.getImgPreview())) { | ||
| 226 | + Glide.with(this) | ||
| 227 | +// .setDefaultRequestOptions( | ||
| 228 | +// RequestOptions | ||
| 229 | +// .placeholderOf(R.drawable.ic_default_contact_photo) | ||
| 230 | +// .error(R.drawable.ic_default_contact_photo)) | ||
| 231 | + .load(merch.getImgPreview()) | ||
| 232 | + .diskCacheStrategy(DiskCacheStrategy.DATA) | ||
| 233 | + .into(pinLogo); | ||
| 234 | + } | ||
| 235 | + | ||
| 236 | + TextView pinName = (TextView) bottomSheetDialog.findViewById(R.id.tv_pin_name); | ||
| 237 | + pinName.setText(merch.getName()); | ||
| 238 | + | ||
| 239 | + TextView pinDays = (TextView) bottomSheetDialog.findViewById(R.id.tv_pin_days); | ||
| 240 | + pinDays.setText(merch.getSnippet()); //TODO: wrong getter | ||
| 241 | + | ||
| 242 | + TextView pinTel = (TextView) bottomSheetDialog.findViewById(R.id.tv_pin_tel); | ||
| 243 | + pinTel.setText(merch.getTelephone()); | ||
| 244 | + | ||
| 245 | + TextView pinAddress = (TextView) bottomSheetDialog.findViewById(R.id.tv_pin_address); | ||
| 246 | + pinAddress.setText(merch.getAddress()); | ||
| 247 | + | ||
| 248 | + LinearLayout pinDirections = (LinearLayout) bottomSheetDialog.findViewById(R.id.ll_directions); | ||
| 249 | + pinDirections.setOnClickListener(view -> { | ||
| 250 | + Uri hmmIntentUri = Uri.parse("petalmaps://navigation?daddr=" + merch.getLatitude() + "," + merch.getLongitude()); | ||
| 251 | + Intent mapIntent = new Intent(Intent.ACTION_VIEW, hmmIntentUri); | ||
| 252 | + if (mapIntent.resolveActivity(getPackageManager()) != null) { | ||
| 253 | + startActivity(mapIntent); | ||
| 254 | + } else { | ||
| 255 | + noMapAvailableDialog(); | ||
| 256 | + } | ||
| 257 | + }); | ||
| 258 | + | ||
| 259 | + bottomSheetDialog.show(); | ||
| 260 | + | ||
| 261 | + return false; | ||
| 262 | + } | ||
| 263 | + } | ||
| 264 | + | ||
| 265 | + return false; | ||
| 266 | + } | ||
| 267 | + | ||
| 268 | + // =========================================================== | ||
| 269 | + // Methods | ||
| 270 | + // =========================================================== | ||
| 271 | + | ||
| 272 | + private void showNoShopsAvailableDialog() { | ||
| 273 | + if (!isFinishing()) { | ||
| 274 | + mAlertDialogNoShopsAvailable = new AlertDialog.Builder(this) | ||
| 275 | + .setTitle(R.string.cos_dlg_no_shops_title) | ||
| 276 | + .setMessage(R.string.cos_dlg_no_shops) | ||
| 277 | + .setCancelable(false) | ||
| 278 | + .setPositiveButton(R.string.cos_dlg_no_shops_positive, (dialogPositive, whichPositive) -> { | ||
| 279 | + dialogPositive.dismiss(); | ||
| 280 | + openWebsite(); | ||
| 281 | + | ||
| 282 | + }) | ||
| 283 | + .setNegativeButton(R.string.cos_dlg_negative_button2, (dialogNegative, whichNegative) -> { | ||
| 284 | + dialogNegative.dismiss(); | ||
| 285 | + onBackPressed(); | ||
| 286 | + }) | ||
| 287 | + .show(); | ||
| 288 | + } | ||
| 289 | + } | ||
| 290 | + | ||
| 291 | + private void noMapAvailableDialog() { | ||
| 292 | + if (!isFinishing()) { | ||
| 293 | + mAlertDialogNoShopsAvailable = new AlertDialog.Builder(this) | ||
| 294 | + .setTitle(R.string.cos_dlg_error_title) | ||
| 295 | + .setMessage(R.string.cos_dlg_no_map) | ||
| 296 | + .setCancelable(false) | ||
| 297 | + .setPositiveButton("ΟΚ", (dialogPositive, whichPositive) -> { | ||
| 298 | + dialogPositive.dismiss(); | ||
| 299 | + }) | ||
| 300 | + .show(); | ||
| 301 | + } | ||
| 302 | + } | ||
| 303 | + | ||
| 304 | + private void openWebsite() { | ||
| 305 | + WarplyAnalyticsManager.logTrackersEvent(this, "click", "SeeShopWebsite"); | ||
| 306 | + | ||
| 307 | + if (!TextUtils.isEmpty(mMerchant.getWebsite())) { | ||
| 308 | + try { | ||
| 309 | + Intent intent = new Intent(Intent.ACTION_VIEW); | ||
| 310 | + intent.setData(Uri.parse(mMerchant.getWebsite())); | ||
| 311 | + startActivity(intent); | ||
| 312 | + } catch (ActivityNotFoundException e) { | ||
| 313 | + e.printStackTrace(); | ||
| 314 | + } | ||
| 315 | + } | ||
| 316 | + } | ||
| 317 | + | ||
| 318 | + private final CallbackReceiver<MerchantList> mMerchantsCallback = new CallbackReceiver<MerchantList>() { | ||
| 319 | + @Override | ||
| 320 | + public void onSuccess(MerchantList result) { | ||
| 321 | + mMerchantList.clear(); | ||
| 322 | + mMerchantList.addAll(result); | ||
| 323 | + | ||
| 324 | + new Handler(Looper.getMainLooper()).post(() -> { | ||
| 325 | +// if (mClusterManager != null) { | ||
| 326 | +// mMap.clear(); | ||
| 327 | +// mClusterManager.clearItems(); | ||
| 328 | +// if (result != null) { | ||
| 329 | +// mClusterManager.addItems(result); | ||
| 330 | +// } | ||
| 331 | +// mClusterManager.cluster(); | ||
| 332 | +// } | ||
| 333 | + | ||
| 334 | + int nonNullCoords = 0; | ||
| 335 | + for (Merchant merchCoords : result) { | ||
| 336 | + if (merchCoords.getLatitude() != 0.0 && merchCoords.getLongitude() != 0.0) { | ||
| 337 | + nonNullCoords++; | ||
| 338 | + } | ||
| 339 | + } | ||
| 340 | + | ||
| 341 | + if (result.size() == 0 || nonNullCoords == 0) { | ||
| 342 | + showNoShopsAvailableDialog(); | ||
| 343 | + return; | ||
| 344 | + } | ||
| 345 | + | ||
| 346 | + for (Merchant merch : result) { | ||
| 347 | + mMap.addMarker(new MarkerOptions() | ||
| 348 | + .position(new LatLng(merch.getLatitude(), merch.getLongitude())) | ||
| 349 | + .anchor(0.5f, 0.5f) | ||
| 350 | + .title(merch.getTitle()) | ||
| 351 | + .snippet(merch.getUuid()) | ||
| 352 | + .clusterable(true)); | ||
| 353 | + } | ||
| 354 | + }); | ||
| 355 | + } | ||
| 356 | + | ||
| 357 | + @Override | ||
| 358 | + public void onFailure(int errorCode) { | ||
| 359 | + Log.v("SHOPS_HUAWEI_ACTIVITY", String.valueOf(errorCode)); | ||
| 360 | + } | ||
| 361 | + }; | ||
| 362 | + | ||
| 363 | + // =========================================================== | ||
| 364 | + // Inner and Anonymous Classes | ||
| 365 | + // =========================================================== | ||
| 366 | + | ||
| 367 | +} |
| ... | @@ -385,7 +385,7 @@ public class WarplyDeviceInfoCollector { | ... | @@ -385,7 +385,7 @@ public class WarplyDeviceInfoCollector { |
| 385 | return json; | 385 | return json; |
| 386 | } | 386 | } |
| 387 | 387 | ||
| 388 | - public boolean isPackageInstalled(String packageName, PackageManager packageManager) { | 388 | + public static boolean isPackageInstalled(String packageName, PackageManager packageManager) { |
| 389 | try { | 389 | try { |
| 390 | return packageManager.getApplicationInfo(packageName, 0).enabled; | 390 | return packageManager.getApplicationInfo(packageName, 0).enabled; |
| 391 | } catch (PackageManager.NameNotFoundException e) { | 391 | } catch (PackageManager.NameNotFoundException e) { | ... | ... |
| ... | @@ -83,6 +83,11 @@ public class WarpConstants { | ... | @@ -83,6 +83,11 @@ public class WarpConstants { |
| 83 | new LatLng(41.97761, 28.62522) | 83 | new LatLng(41.97761, 28.62522) |
| 84 | ); | 84 | ); |
| 85 | 85 | ||
| 86 | + public static final com.huawei.hms.maps.model.LatLngBounds GREECE_BOUNDS_HUAWEI = new com.huawei.hms.maps.model.LatLngBounds( | ||
| 87 | + new com.huawei.hms.maps.model.LatLng(34.75261, 19.33079), | ||
| 88 | + new com.huawei.hms.maps.model.LatLng(41.97761, 28.62522) | ||
| 89 | + ); | ||
| 90 | + | ||
| 86 | /* Result codes */ | 91 | /* Result codes */ |
| 87 | 92 | ||
| 88 | public static final int RESULT_CODE_SUCCESS = 1; | 93 | public static final int RESULT_CODE_SUCCESS = 1; | ... | ... |
| 1 | +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||
| 2 | + xmlns:app="http://schemas.android.com/apk/res-auto" | ||
| 3 | + xmlns:tools="http://schemas.android.com/tools" | ||
| 4 | + android:layout_width="match_parent" | ||
| 5 | + android:layout_height="match_parent" | ||
| 6 | + android:background="@android:color/white"> | ||
| 7 | + | ||
| 8 | + <androidx.constraintlayout.widget.ConstraintLayout | ||
| 9 | + android:id="@+id/cl_loyalty_wallet_header" | ||
| 10 | + android:layout_width="match_parent" | ||
| 11 | + android:layout_height="48dp" | ||
| 12 | + android:background="@android:color/white"> | ||
| 13 | + | ||
| 14 | + <ImageView | ||
| 15 | + android:id="@+id/iv_shops_back" | ||
| 16 | + android:layout_width="48dp" | ||
| 17 | + android:layout_height="48dp" | ||
| 18 | + android:layout_marginStart="16dp" | ||
| 19 | + android:scaleType="centerInside" | ||
| 20 | + android:src="@drawable/ic_back" | ||
| 21 | + app:layout_constraintBottom_toBottomOf="parent" | ||
| 22 | + app:layout_constraintStart_toStartOf="parent" | ||
| 23 | + app:layout_constraintTop_toTopOf="parent" /> | ||
| 24 | + | ||
| 25 | + <TextView | ||
| 26 | + fontPath="fonts/pf_square_sans_pro_medium.ttf" | ||
| 27 | + android:layout_width="wrap_content" | ||
| 28 | + android:layout_height="wrap_content" | ||
| 29 | + android:text="@string/cos_coupon_shops_title" | ||
| 30 | + android:textColor="@color/grey" | ||
| 31 | + android:textSize="17sp" | ||
| 32 | + app:layout_constraintBottom_toBottomOf="parent" | ||
| 33 | + app:layout_constraintEnd_toEndOf="parent" | ||
| 34 | + app:layout_constraintStart_toStartOf="parent" | ||
| 35 | + app:layout_constraintTop_toTopOf="parent" /> | ||
| 36 | + </androidx.constraintlayout.widget.ConstraintLayout> | ||
| 37 | + | ||
| 38 | + <RelativeLayout | ||
| 39 | + android:id="@+id/cl_loyalty_info_view_inner" | ||
| 40 | + android:layout_width="match_parent" | ||
| 41 | + android:layout_height="match_parent" | ||
| 42 | + android:layout_below="@+id/cl_loyalty_wallet_header"> | ||
| 43 | + | ||
| 44 | + <fragment | ||
| 45 | + android:id="@+id/mv_shops_huawei" | ||
| 46 | + class="com.huawei.hms.maps.SupportMapFragment" | ||
| 47 | + android:layout_width="match_parent" | ||
| 48 | + android:layout_height="match_parent"/> | ||
| 49 | + </RelativeLayout> | ||
| 50 | +</RelativeLayout> |
| ... | @@ -146,6 +146,7 @@ | ... | @@ -146,6 +146,7 @@ |
| 146 | <string name="cos_dlg_coupon_depleted_title">Το κουπόνι εξαντλήθηκε</string> | 146 | <string name="cos_dlg_coupon_depleted_title">Το κουπόνι εξαντλήθηκε</string> |
| 147 | <string name="cos_dlg_coupon_depleted_message">Μείνε συντονισμένος για νέες προσφορές και κουπόνια.</string> | 147 | <string name="cos_dlg_coupon_depleted_message">Μείνε συντονισμένος για νέες προσφορές και κουπόνια.</string> |
| 148 | <string name="cos_dlg_no_shops">Ο συνεργάτης διαθέτει μόνο ηλεκτρονικό κατάστημα για ηλεκτρονικές παραγγελίες.</string> | 148 | <string name="cos_dlg_no_shops">Ο συνεργάτης διαθέτει μόνο ηλεκτρονικό κατάστημα για ηλεκτρονικές παραγγελίες.</string> |
| 149 | + <string name="cos_dlg_no_map">Το πρόγραμμα Χάρτες Petal λείπει.</string> | ||
| 149 | <string name="cos_dlg_no_shops_title">Καταστήματα συνεργάτη</string> | 150 | <string name="cos_dlg_no_shops_title">Καταστήματα συνεργάτη</string> |
| 150 | <string name="cos_dlg_no_shops_positive">Δες το eshop</string> | 151 | <string name="cos_dlg_no_shops_positive">Δες το eshop</string> |
| 151 | 152 | ... | ... |
-
Please register or login to post a comment