From eb3afb0057c07e994ccaa0ebc8c4d5e2054bf055 Mon Sep 17 00:00:00 2001 From: Pieter Vander Vennet Date: Mon, 14 Jul 2025 00:36:31 +0200 Subject: [PATCH] Add inset detection and passthrough --- app/build.gradle | 4 +++- app/src/main/java/org/mapcomplete/Databridge.java | 2 +- .../main/java/org/mapcomplete/MainActivity.java | 15 +++++++++++++++ capacitor-cordova-android-plugins/build.gradle | 4 ++-- capacitor.settings.gradle | 2 +- 5 files changed, 22 insertions(+), 5 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 46e89dc9..cb92a36e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -7,7 +7,7 @@ android { applicationId "org.mapcomplete" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 5 + versionCode 9 versionName "debug" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" aaptOptions { @@ -53,6 +53,8 @@ repositories { dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') + implementation 'androidx.core:core:1.16.0' + implementation 'androidx.core:core-ktx:1.16.0' implementation "androidx.appcompat:appcompat:$androidxAppCompatVersion" implementation "androidx.coordinatorlayout:coordinatorlayout:$androidxCoordinatorLayoutVersion" implementation "androidx.core:core-splashscreen:$coreSplashScreenVersion" diff --git a/app/src/main/java/org/mapcomplete/Databridge.java b/app/src/main/java/org/mapcomplete/Databridge.java index 17deff64..1ef84030 100644 --- a/app/src/main/java/org/mapcomplete/Databridge.java +++ b/app/src/main/java/org/mapcomplete/Databridge.java @@ -32,7 +32,7 @@ public class Databridge extends Plugin { } JSObject ret = new JSObject(); ret.put("value", answer); - Log.i("databridge", "Resolving call"); + Log.i("databridge", "Resolving call for "+call+" with "+answer); call.resolve(ret); } diff --git a/app/src/main/java/org/mapcomplete/MainActivity.java b/app/src/main/java/org/mapcomplete/MainActivity.java index f7bfedea..114cb8eb 100644 --- a/app/src/main/java/org/mapcomplete/MainActivity.java +++ b/app/src/main/java/org/mapcomplete/MainActivity.java @@ -3,14 +3,18 @@ package org.mapcomplete; import android.content.Intent; import android.content.pm.PackageManager; import android.net.Uri; +import android.os.Build; import android.os.Bundle; import android.provider.ContactsContract; import android.util.Log; +import android.view.Window; +import android.view.WindowInsets; import android.window.OnBackInvokedDispatcher; import androidx.annotation.NonNull; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; +import androidx.core.view.WindowCompat; import com.getcapacitor.BridgeActivity; import com.getcapacitor.JSObject; @@ -63,7 +67,17 @@ public class MainActivity extends BridgeActivity { }); super.onCreate(savedInstanceState); + WindowCompat.setDecorFitsSystemWindows(getWindow(), false); + Databridge.addResponder("insets", (responder) -> { + var view = getWindow().getDecorView(); + var insets = view.getRootWindowInsets(); + var topInsetPxSize= insets.getInsetsIgnoringVisibility(WindowInsets.Type.statusBars()).top; + var bottomInsetPxSize= insets.getInsetsIgnoringVisibility(WindowInsets.Type.navigationBars()).bottom; + var json = "{ \"top\": "+topInsetPxSize+", \"bottom\":"+bottomInsetPxSize+"}"; + Log.i("insets","Inset sizes are:"+topInsetPxSize+" bottom:"+ bottomInsetPxSize); + Databridge.sendAnswerTo(responder, json); + }); getOnBackInvokedDispatcher().registerOnBackInvokedCallback(OnBackInvokedDispatcher.PRIORITY_OVERLAY, () -> { @@ -75,6 +89,7 @@ public class MainActivity extends BridgeActivity { ); } + private boolean hasGeolocationPermission() { return ContextCompat.checkSelfPermission( getApplicationContext(), diff --git a/capacitor-cordova-android-plugins/build.gradle b/capacitor-cordova-android-plugins/build.gradle index 075e37d3..1192ef86 100644 --- a/capacitor-cordova-android-plugins/build.gradle +++ b/capacitor-cordova-android-plugins/build.gradle @@ -1,5 +1,5 @@ ext { - androidxAppCompatVersion = project.hasProperty('androidxAppCompatVersion') ? rootProject.ext.androidxAppCompatVersion : '1.7.0' + androidxAppCompatVersion = project.hasProperty('androidxAppCompatVersion') ? rootProject.ext.androidxAppCompatVersion : '1.7.0' cordovaAndroidVersion = project.hasProperty('cordovaAndroidVersion') ? rootProject.ext.cordovaAndroidVersion : '10.1.1' } @@ -56,4 +56,4 @@ apply from: "cordova.variables.gradle" for (def func : cdvPluginPostBuildExtras) { func() -} +} \ No newline at end of file diff --git a/capacitor.settings.gradle b/capacitor.settings.gradle index 9a5fa872..84ae1301 100644 --- a/capacitor.settings.gradle +++ b/capacitor.settings.gradle @@ -1,3 +1,3 @@ // DO NOT EDIT THIS FILE! IT IS GENERATED EACH TIME "capacitor update" IS RUN include ':capacitor-android' -project(':capacitor-android').projectDir = new File('../node_modules/@capacitor/android/capacitor') +project(':capacitor-android').projectDir = new File('@capacitor/android/capacitor')