From 1bfe0a408822de95136228ccfbecc952ca25978e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20D=C3=B6rflinger?= Date: Mon, 7 Apr 2025 08:50:16 +0200 Subject: [PATCH] [AA] Enabled rudimentary Android Auto Support Enabled the app for Android Auto, currently no real functionality yet, but to be added in future commits. --- app/build.gradle | 6 ++- app/src/main/AndroidManifest.xml | 9 ++++ .../auto/ShareLocationCarAppService.java | 20 +++++++ .../auto/ShareLocationScreen.java | 52 +++++++++++++++++++ .../auto/ShareLocationSession.java | 15 ++++++ .../familyhelpers/workers/LocationHelper.java | 2 +- app/src/main/res/values/strings.xml | 6 +++ app/src/main/res/xml/automotive_app_desc.xml | 4 ++ build.gradle | 6 +++ settings.gradle | 2 +- 10 files changed, 118 insertions(+), 4 deletions(-) create mode 100644 app/src/main/java/com/aldo/apps/familyhelpers/auto/ShareLocationCarAppService.java create mode 100644 app/src/main/java/com/aldo/apps/familyhelpers/auto/ShareLocationScreen.java create mode 100644 app/src/main/java/com/aldo/apps/familyhelpers/auto/ShareLocationSession.java create mode 100644 app/src/main/res/xml/automotive_app_desc.xml diff --git a/app/build.gradle b/app/build.gradle index f6993d2..8422032 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -13,7 +13,8 @@ android { minSdk 32 targetSdk 34 versionCode 1 - versionName "1.0" + versionName "1.0" // ... other configurations + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } @@ -31,11 +32,12 @@ android { } dependencies { - implementation 'androidx.appcompat:appcompat:1.7.0' implementation 'com.google.android.material:material:1.12.0' implementation 'androidx.constraintlayout:constraintlayout:2.2.1' implementation 'io.reactivex.rxjava3:rxjava:3.1.5' + implementation 'androidx.car.app:app:1.4.0' + implementation 'androidx.concurrent:concurrent-futures:1.2.0' //Google Maps SDK implementation 'com.google.android.gms:play-services-maps:19.1.0' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index dd359a6..7745cf2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -29,6 +29,8 @@ + + + + + + + { + // Create an intent to start the ShareLocationBackgroundWorker service + final Intent startServiceIntent = new Intent(getCarContext(), ShareLocationBackgroundWorker.class); + // Start the service using the car context + getCarContext().startForegroundService(startServiceIntent); + Log.d("ShareLocationScreen", "Starting ShareLocationBackgroundWorker Service"); + }) + .setImage(new CarIcon.Builder( + IconCompat.createWithResource(getCarContext(), + R.drawable.ic_location_helper)).build()) + .build()) + .build(); + // Return a GridTemplate with the ItemList + return new GridTemplate.Builder() + .setSingleList(itemList) + .setTitle("Share Location") + .build(); + } +} diff --git a/app/src/main/java/com/aldo/apps/familyhelpers/auto/ShareLocationSession.java b/app/src/main/java/com/aldo/apps/familyhelpers/auto/ShareLocationSession.java new file mode 100644 index 0000000..ffbf3a3 --- /dev/null +++ b/app/src/main/java/com/aldo/apps/familyhelpers/auto/ShareLocationSession.java @@ -0,0 +1,15 @@ +package com.aldo.apps.familyhelpers.auto; + +import android.content.Intent; + +import androidx.annotation.NonNull; +import androidx.car.app.Session; + +public class ShareLocationSession extends Session { + + @NonNull + @Override + public androidx.car.app.Screen onCreateScreen(@NonNull Intent intent) { + return new ShareLocationScreen(getCarContext()); + } +} diff --git a/app/src/main/java/com/aldo/apps/familyhelpers/workers/LocationHelper.java b/app/src/main/java/com/aldo/apps/familyhelpers/workers/LocationHelper.java index 3da08a3..3e4e3a0 100644 --- a/app/src/main/java/com/aldo/apps/familyhelpers/workers/LocationHelper.java +++ b/app/src/main/java/com/aldo/apps/familyhelpers/workers/LocationHelper.java @@ -82,7 +82,7 @@ public final class LocationHelper { for (final Location location : allReceivedLocations) { if (location.hasSpeed()) { Log.d(TAG, "onLocationResult: Location with speed received, continue..."); - handleReceivedLocation(location); + handleReceivedLocation(location); return; } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 50a1d56..df2fb58 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -68,4 +68,10 @@ store_last_brightness flashlight_default_brightness + + You are already sharing your location with your family, do you wanna stop? + Android Auto start has been detected, do you wanna share your location? + Yes, start to share + Yes, stop sharing + \ No newline at end of file diff --git a/app/src/main/res/xml/automotive_app_desc.xml b/app/src/main/res/xml/automotive_app_desc.xml new file mode 100644 index 0000000..66dd335 --- /dev/null +++ b/app/src/main/res/xml/automotive_app_desc.xml @@ -0,0 +1,4 @@ + + + + diff --git a/build.gradle b/build.gradle index 44e38e6..7ca59c7 100644 --- a/build.gradle +++ b/build.gradle @@ -3,4 +3,10 @@ plugins { id 'com.android.application' version '8.2.0-beta03' apply false id 'com.google.gms.google-services' version '4.4.2' apply false id("com.google.firebase.crashlytics") version "3.0.3" apply false +} +allprojects { + repositories { + google() + mavenCentral() + } } \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index 5d6327e..12ab20f 100644 --- a/settings.gradle +++ b/settings.gradle @@ -6,7 +6,7 @@ pluginManagement { } } dependencyResolutionManagement { - repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositoriesMode.set(RepositoriesMode.PREFER_PROJECT) repositories { google() mavenCentral()