diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index c23b09d1..7b3d2b85 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -47,8 +47,8 @@ android {
//buildConfigField("String", "APPO_DEAL_KEY", getProperty("APPO_DEAL_KEY"))
//META API KEYS
- //buildConfigField("String", "FB_APP_ID", getProperty("FB_APP_ID"))
- //buildConfigField("String", "FB_CLIENT_ID", getProperty("FB_CLIENT_ID"))
+ buildConfigField("String", "FB_APP_ID", getProperty("FB_APP_ID"))
+ buildConfigField("String", "FB_CLIENT_ID", getProperty("FB_CLIENT_ID"))
//ADMOB MASTER KEY
buildConfigField("String", "ADMOB_MASTER_KEY", getProperty("ADMOB_MASTER_KEY"))
@@ -150,6 +150,8 @@ dependencies {
//Appodeal
//implementation("com.appodeal.ads:sdk:3.0.0.4")
+ //FAcebook
+ //implementation("com.facebook.android:facebook-android-sdk:latest.release")
//Google Play
implementation("com.google.android.play:app-update-ktx:2.1.0")
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 55112a17..5d4ecabb 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -91,7 +91,13 @@
-
+
+
+
+
diff --git a/app/src/main/java/cl/figonzal/lastquakechile/core/utils/GoogleMapsExt.kt b/app/src/main/java/cl/figonzal/lastquakechile/core/utils/GoogleMapsExt.kt
index 9907d441..4799974a 100644
--- a/app/src/main/java/cl/figonzal/lastquakechile/core/utils/GoogleMapsExt.kt
+++ b/app/src/main/java/cl/figonzal/lastquakechile/core/utils/GoogleMapsExt.kt
@@ -7,6 +7,7 @@ import android.content.pm.PackageManager.ResolveInfoFlags
import android.content.res.Configuration
import android.net.Uri
import android.os.Build
+import cl.figonzal.lastquakechile.BuildConfig
import cl.figonzal.lastquakechile.R
import cl.figonzal.lastquakechile.core.utils.views.configSensitive
import cl.figonzal.lastquakechile.core.utils.views.formatFilterColor
@@ -15,12 +16,14 @@ import cl.figonzal.lastquakechile.core.utils.views.formatQuakeTime
import cl.figonzal.lastquakechile.core.utils.views.getLocalBitmapUri
import cl.figonzal.lastquakechile.core.utils.views.getMagnitudeColor
import cl.figonzal.lastquakechile.core.utils.views.toast
+import cl.figonzal.lastquakechile.core.utils.views.viewToBitmap
import cl.figonzal.lastquakechile.databinding.QuakeBottomSheetBinding
import cl.figonzal.lastquakechile.quake_feature.domain.model.Quake
import com.google.android.gms.maps.GoogleMap
import com.google.android.gms.maps.model.Circle
import com.google.android.gms.maps.model.LatLng
import com.google.android.gms.maps.model.MapStyleOptions
+import com.google.android.material.card.MaterialCardView
import com.google.maps.android.ktx.addCircle
import com.google.maps.android.ktx.addMarker
import timber.log.Timber
@@ -111,7 +114,28 @@ fun Context.makeSnapshot(googleMap: GoogleMap, quake: Quake, callback: (Uri?) ->
Timber.e(e, "Error screenshot map: %s", e.message)
}
}
+}
+
+fun Context.igShareIntent(cvShareQuake: MaterialCardView) {
+
+ val bitmap = cvShareQuake.viewToBitmap()
+ val bitMapUriView = getLocalBitmapUri(bitmap)
+ grantUriPermission(
+ "com.instagram.android",
+ bitMapUriView,
+ Intent.FLAG_GRANT_READ_URI_PERMISSION
+ )
+
+ val intent = Intent("com.instagram.share.ADD_TO_STORY").apply {
+ flags = Intent.FLAG_GRANT_READ_URI_PERMISSION
+ type = "image/png"
+ putExtra("source_application", BuildConfig.FB_APP_ID)
+ putExtra("interactive_asset_uri", bitMapUriView)
+ putExtra("top_background_color", "#006994");
+ putExtra("bottom_background_color", "#253561");
+ }
+ startActivity(intent)
}
private fun Context.shareQuake(quake: Quake, bitMapUri: Uri?) {
diff --git a/app/src/main/java/cl/figonzal/lastquakechile/core/utils/views/ViewsExt.kt b/app/src/main/java/cl/figonzal/lastquakechile/core/utils/views/ViewsExt.kt
index aecd00a2..6a645ff1 100644
--- a/app/src/main/java/cl/figonzal/lastquakechile/core/utils/views/ViewsExt.kt
+++ b/app/src/main/java/cl/figonzal/lastquakechile/core/utils/views/ViewsExt.kt
@@ -5,7 +5,10 @@ import android.content.Context
import android.content.Intent
import android.content.res.Resources
import android.graphics.Bitmap
+import android.graphics.Canvas
+import android.graphics.drawable.Drawable
import android.net.Uri
+import android.os.Build
import android.util.TypedValue
import android.view.*
import android.widget.ImageView
@@ -23,6 +26,7 @@ import cl.figonzal.lastquakechile.core.data.remote.ApiError.*
import cl.figonzal.lastquakechile.core.ui.SettingsActivity
import cl.figonzal.lastquakechile.core.utils.views.*
import cl.figonzal.lastquakechile.databinding.FragmentMapsBinding
+import cl.figonzal.lastquakechile.databinding.ShareQuakeBottomSheetBinding
import cl.figonzal.lastquakechile.quake_feature.domain.model.Quake
import com.bumptech.glide.Glide
import com.bumptech.glide.load.engine.DiskCacheStrategy
@@ -31,6 +35,8 @@ import com.bumptech.glide.request.transition.DrawableCrossFadeFactory
import com.google.android.gms.maps.GoogleMap
import com.google.android.material.bottomsheet.BottomSheetBehavior
import com.google.android.material.card.MaterialCardView
+import com.google.android.material.shape.CornerFamily
+import com.google.android.material.shape.ShapeAppearanceModel
import timber.log.Timber
import java.io.File
import java.io.FileOutputStream
@@ -175,13 +181,39 @@ fun Context.getLocalBitmapUri(bitmap: Bitmap): Uri {
else -> {
Timber.d("Share image not exist")
val out = FileOutputStream(file)
- bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out)
+ bitmap.compress(Bitmap.CompressFormat.PNG, 100, out)
out.close()
}
}
return getUriForFile(this, "${applicationContext.packageName}.fileprovider", file)
}
+fun View.viewToBitmap(): Bitmap {
+
+ val bitmap = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ Bitmap.createBitmap(
+ width, height, Bitmap.Config.ARGB_8888, true
+ )
+ } else {
+ Bitmap.createBitmap(
+ width, height, Bitmap.Config.ARGB_8888
+ )
+ }
+ val canvas = Canvas(bitmap)
+ draw(canvas)
+ return bitmap
+}
+
+fun ShareQuakeBottomSheetBinding.configGoogleMapShareQuakeBorders(drawable: Drawable?) {
+ val shapeAppearanceModel = ShapeAppearanceModel()
+ .toBuilder()
+ .setTopLeftCorner(CornerFamily.ROUNDED, 32f)
+ .setTopRightCorner(CornerFamily.ROUNDED, 32f)
+ .build()
+ includeShareQuake.ivGoogleMaps.setImageDrawable(drawable)
+ includeShareQuake.ivGoogleMaps.shapeAppearanceModel = shapeAppearanceModel
+}
+
/**
* Function to print change log features
*/
diff --git a/app/src/main/java/cl/figonzal/lastquakechile/quake_feature/ui/dialog/ShareQuakeBottomSheetDialog.kt b/app/src/main/java/cl/figonzal/lastquakechile/quake_feature/ui/dialog/ShareQuakeBottomSheetDialog.kt
index 3bc90594..00d9624c 100644
--- a/app/src/main/java/cl/figonzal/lastquakechile/quake_feature/ui/dialog/ShareQuakeBottomSheetDialog.kt
+++ b/app/src/main/java/cl/figonzal/lastquakechile/quake_feature/ui/dialog/ShareQuakeBottomSheetDialog.kt
@@ -1,24 +1,21 @@
package cl.figonzal.lastquakechile.quake_feature.ui.dialog
-import android.content.Intent
-import android.graphics.Bitmap
-import android.graphics.Canvas
-import android.graphics.Color
import android.graphics.drawable.Drawable
import android.net.Uri
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import cl.figonzal.lastquakechile.core.utils.igShareIntent
+import cl.figonzal.lastquakechile.core.utils.views.configGoogleMapShareQuakeBorders
+import cl.figonzal.lastquakechile.core.utils.views.configSensitive
+import cl.figonzal.lastquakechile.core.utils.views.configVerified
import cl.figonzal.lastquakechile.core.utils.views.formatFilterColor
import cl.figonzal.lastquakechile.core.utils.views.formatMagnitude
import cl.figonzal.lastquakechile.core.utils.views.formatQuakeTime
-import cl.figonzal.lastquakechile.core.utils.views.getLocalBitmapUri
import cl.figonzal.lastquakechile.databinding.ShareQuakeBottomSheetBinding
import cl.figonzal.lastquakechile.quake_feature.domain.model.Quake
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
-import com.google.android.material.shape.CornerFamily
-import com.google.android.material.shape.ShapeAppearanceModel
class ShareQuakeBottomSheetDialog(private val quakeBitmapUri: Uri, private val quake: Quake) :
@@ -36,69 +33,27 @@ class ShareQuakeBottomSheetDialog(private val quakeBitmapUri: Uri, private val q
_binding = ShareQuakeBottomSheetBinding.inflate(layoutInflater, container, false)
val inputStream = requireContext().contentResolver.openInputStream(quakeBitmapUri)
- val drawable = Drawable.createFromStream(inputStream, quakeBitmapUri.toString())
+ val screenshotDrawable = Drawable.createFromStream(inputStream, quakeBitmapUri.toString())
- with(binding.includeShareQuake) {
+ with(binding) {
- val shapeAppearanceModel = ShapeAppearanceModel()
- .toBuilder()
- .setTopLeftCorner(CornerFamily.ROUNDED, 32f)
- .setTopRightCorner(CornerFamily.ROUNDED, 32f)
- .build()
- ivGoogleMaps.setImageDrawable(drawable)
- ivGoogleMaps.shapeAppearanceModel = shapeAppearanceModel
+ configGoogleMapShareQuakeBorders(screenshotDrawable)
- with(sheetContent) {
+ with(includeShareQuake.sheetContent) {
tvCity.text = quake.city
tvMagnitude.formatMagnitude(quake)
tvDate.formatQuakeTime(quake, true)
tvReference.text = quake.reference
ivMagColor.formatFilterColor(requireContext(), quake)
- }
- }
-
- binding.btnShareIgStory.setOnClickListener {
- instagramShareIntent()
- }
-
- return binding.root
- }
-
- private fun instagramShareIntent() {
-
- val bitmap = viewToBitmap(binding.includeShareQuake.cvShareQuake)
- val bitMapUriView = requireContext().getLocalBitmapUri(bitmap)
- requireContext().grantUriPermission(
- "com.instagram.android",
- bitMapUriView,
- Intent.FLAG_GRANT_READ_URI_PERMISSION
- )
-
- val intent = Intent("com.instagram.share.ADD_TO_STORY").apply {
+ ivVerified.configVerified(quake)
+ ivSensitive.configSensitive(quake)
+ }
- type = "image/*"
- putExtra("source_application", "740961793640508")
- putExtra("interactive_asset_uri", bitMapUriView)
- putExtra("top_background_color", "#006994");
- putExtra("bottom_background_color", "#006994");
+ btnShareIgStory.setOnClickListener {
+ requireContext().igShareIntent(includeShareQuake.cvShareQuake)
+ }
+ return root
}
- startActivity(intent)
- }
-
- private fun viewToBitmap(view: View): Bitmap {
- view.setLayerType(View.LAYER_TYPE_SOFTWARE, null)
- val totalHeight = view.height
- val totalWidth = view.width
- val percent = 1.0f //use this value to scale bitmap to specific size
-
-
- val canvasBitmap = Bitmap.createBitmap(totalWidth, totalHeight, Bitmap.Config.ARGB_8888)
- canvasBitmap.eraseColor(Color.RED)
- val canvas = Canvas(canvasBitmap)
- canvas.scale(percent, percent)
- view.draw(canvas)
-
- return canvasBitmap
}
}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/round_add_instagram_story.xml b/app/src/main/res/drawable/round_add_instagram_story.xml
index 67869728..333a9cf9 100644
--- a/app/src/main/res/drawable/round_add_instagram_story.xml
+++ b/app/src/main/res/drawable/round_add_instagram_story.xml
@@ -1,15 +1,15 @@
\ No newline at end of file
diff --git a/app/src/main/res/layout/card_view_quake_bottom_sheet.xml b/app/src/main/res/layout/card_view_quake_bottom_sheet.xml
index 4c2fa70d..727d6253 100644
--- a/app/src/main/res/layout/card_view_quake_bottom_sheet.xml
+++ b/app/src/main/res/layout/card_view_quake_bottom_sheet.xml
@@ -8,10 +8,7 @@
android:clickable="true"
android:focusable="true"
android:foreground="?attr/selectableItemBackgroundBorderless"
- android:paddingStart="16dp"
- android:paddingTop="8dp"
- android:paddingEnd="16dp"
- android:paddingBottom="8dp">
+ android:padding="@dimen/corner_radius_16dp">
+ android:layout_height="wrap_content">
+ android:orientation="horizontal"
+ android:paddingTop="@dimen/corner_radius_8dp"
+ android:paddingBottom="@dimen/corner_radius_8dp">
+ app:rippleColor="@color/colorPrimaryVariant"
+ app:srcCompat="@drawable/round_add_instagram_story"
+ app:tint="@color/white" />
+ app:rippleColor="@color/colorPrimaryVariant"
+ app:srcCompat="@drawable/round_share_24"
+ app:tint="@color/white" />
diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml
index 10ea4872..f52d41c1 100644
--- a/app/src/main/res/values-en/strings.xml
+++ b/app/src/main/res/values-en/strings.xml
@@ -155,5 +155,6 @@
Consent Policy
Personalized advertising
Moment magnitude w phase (Mww)
+ Google map screenshot
\ No newline at end of file
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 175f03a3..f254dabf 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -155,4 +155,5 @@
Permiso desactivado, reinstala para activarlo
PolĂtica de consentimiento
Publicidad personalizada
+ Captura de pantalla de google maps
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index ba7c0101..697a5322 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -207,6 +207,7 @@
Consent Policy
Personalized advertising
Moment magnitude w phase (Mww)
+ Google map screenshot
\ No newline at end of file