Skip to content

Commit ddbd4e7

Browse files
committed
Update audio guidance for AA compatibility
1 parent f54719c commit ddbd4e7

File tree

25 files changed

+250
-603
lines changed

25 files changed

+250
-603
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ Mapbox welcomes participation and contributions from everyone.
44

55
## Unreleased
66
#### Features
7+
- Moved `MapboxAudioGuidance` and `MapboxAudioGuidanceState` into public api. [#6336](https://github.com/mapbox/mapbox-navigation-android/pull/6336)
78
#### Bug fixes and improvements
89

910
## Mapbox Navigation SDK 2.9.0-alpha.2 - 16 September, 2022

LICENSE.md

Lines changed: 1 addition & 345 deletions
Large diffs are not rendered by default.

libnavui-androidauto/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ Mapbox welcomes participation and contributions from everyone.
55
## Unreleased
66
#### Features
77
#### Bug fixes and improvements
8+
- Use `MapboxAudioGuidance` from public api. [#6336](https://github.com/mapbox/mapbox-navigation-android/pull/6336)
89

910
## androidauto-v0.11.0 - Sep 16, 2022
1011
### Changelog

libnavui-androidauto/api/current.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@ package com.mapbox.androidauto {
1717
}
1818

1919
public final class MapboxCarApp {
20-
method public com.mapbox.navigation.ui.voice.internal.MapboxAudioGuidance carAppAudioGuidanceService();
20+
method public com.mapbox.navigation.ui.voice.api.MapboxAudioGuidance carAppAudioGuidanceService();
2121
method public com.mapbox.androidauto.navigation.location.CarAppLocation carAppLocationService();
2222
method public kotlinx.coroutines.flow.StateFlow<com.mapbox.androidauto.CarAppState> getCarAppState();
23-
method public void setup(android.app.Application application);
23+
method public void setup();
2424
method public void updateCarAppState(com.mapbox.androidauto.CarAppState carAppState);
2525
property public final kotlinx.coroutines.flow.StateFlow<com.mapbox.androidauto.CarAppState> carAppState;
2626
field public static final com.mapbox.androidauto.MapboxCarApp INSTANCE;

libnavui-androidauto/build.gradle

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,9 @@ dependencies {
4545
def carSearchVersion = "1.0.0-beta.36"
4646
api("com.mapbox.search:mapbox-search-android:${carSearchVersion}")
4747

48-
debugApi project(":libnavigation-android")
49-
releaseApi("com.mapbox.navigation:android:${carNavVersion}")
50-
debugImplementation project(":libnavui-app")
51-
releaseImplementation("com.mapbox.navigation:ui-app:${carNavVersion}")
48+
// TODO use the carNavVersion when 2.9.0-alpha.2 is available
49+
api(project(":libnavigation-android"))
50+
// api("com.mapbox.navigation:android:${carNavVersion}")
5251

5352
implementation(dependenciesList.androidXAppCompat)
5453
implementation(dependenciesList.coroutinesCore)

libnavui-androidauto/src/main/java/com/mapbox/androidauto/MapboxCarApp.kt

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,16 @@
11
package com.mapbox.androidauto
22

3-
import android.app.Application
43
import com.mapbox.androidauto.navigation.location.CarAppLocation
54
import com.mapbox.androidauto.navigation.location.impl.CarAppLocationImpl
65
import com.mapbox.navigation.base.ExperimentalPreviewMapboxNavigationAPI
76
import com.mapbox.navigation.core.lifecycle.MapboxNavigationApp
8-
import com.mapbox.navigation.ui.app.internal.SharedApp
9-
import com.mapbox.navigation.ui.voice.internal.MapboxAudioGuidance
7+
import com.mapbox.navigation.ui.voice.api.MapboxAudioGuidance
108
import kotlinx.coroutines.flow.MutableStateFlow
119
import kotlinx.coroutines.flow.StateFlow
1210

1311
/**
1412
* The entry point for your Mapbox Android Auto app.
1513
*/
16-
@OptIn(ExperimentalPreviewMapboxNavigationAPI::class)
1714
object MapboxCarApp {
1815

1916
private val carAppStateFlow = MutableStateFlow<CarAppState>(FreeDriveState)
@@ -43,12 +40,15 @@ object MapboxCarApp {
4340
}
4441

4542
/**
46-
* Setup android auto from your [Application.onCreate]
47-
*
48-
* @param application used to detect when activities are foregrounded
43+
* Setup android auto with defaults
4944
*/
50-
fun setup(application: Application) {
51-
SharedApp.setup(application)
52-
MapboxNavigationApp.registerObserver(CarAppLocationImpl())
45+
@OptIn(ExperimentalPreviewMapboxNavigationAPI::class)
46+
fun setup() {
47+
if (MapboxNavigationApp.getObservers(MapboxAudioGuidance::class).isEmpty()) {
48+
MapboxNavigationApp.registerObserver(MapboxAudioGuidance())
49+
}
50+
if (MapboxNavigationApp.getObservers(CarAppLocation::class).isEmpty()) {
51+
MapboxNavigationApp.registerObserver(CarAppLocationImpl())
52+
}
5353
}
5454
}

libnavui-androidauto/src/main/java/com/mapbox/androidauto/navigation/audioguidance/AppAudioGuidanceUi.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import androidx.lifecycle.LifecycleOwner
88
import androidx.lifecycle.lifecycleScope
99
import androidx.lifecycle.repeatOnLifecycle
1010
import com.mapbox.androidauto.MapboxCarApp
11-
import com.mapbox.navigation.ui.voice.internal.MapboxAudioGuidance
11+
import com.mapbox.navigation.ui.voice.api.MapboxAudioGuidanceState
1212
import com.mapbox.navigation.ui.voice.view.MapboxSoundButton
1313
import kotlinx.coroutines.flow.collect
1414
import kotlinx.coroutines.launch
@@ -40,7 +40,7 @@ fun Fragment.attachAudioGuidance(
4040
*/
4141
fun Lifecycle.muteAudioGuidance() {
4242
addObserver(object : DefaultLifecycleObserver {
43-
lateinit var initialState: MapboxAudioGuidance.State
43+
lateinit var initialState: MapboxAudioGuidanceState
4444
override fun onResume(owner: LifecycleOwner) {
4545
with(MapboxCarApp.carAppAudioGuidanceService()) {
4646
initialState = stateFlow().value
@@ -50,7 +50,7 @@ fun Lifecycle.muteAudioGuidance() {
5050

5151
override fun onPause(owner: LifecycleOwner) {
5252
if (!initialState.isMuted) {
53-
MapboxCarApp.carAppAudioGuidanceService().unmute()
53+
MapboxCarApp.carAppAudioGuidanceService().unMute()
5454
}
5555
}
5656
})

libnavui-androidauto/src/main/java/com/mapbox/androidauto/navigation/audioguidance/CarAudioGuidanceUi.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ class CarAudioGuidanceUi : MapboxActionProvider.ScreenActionProvider {
3636
}
3737
} else {
3838
buildIconAction(screen, R.drawable.mapbox_car_ic_volume_off) {
39-
audioGuidance.unmute()
39+
audioGuidance.unMute()
4040
}
4141
}
4242
}

libnavui-app/src/main/java/com/mapbox/navigation/ui/app/internal/SharedApp.kt

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.mapbox.navigation.ui.app.internal
22

3-
import android.content.Context
43
import com.mapbox.navigation.base.ExperimentalPreviewMapboxNavigationAPI
54
import com.mapbox.navigation.core.internal.extensions.attachCreated
65
import com.mapbox.navigation.core.lifecycle.MapboxNavigationApp
@@ -17,9 +16,7 @@ import com.mapbox.navigation.ui.app.internal.controller.StateResetController
1716
import com.mapbox.navigation.ui.app.internal.controller.TripSessionStarterStateController
1817
import com.mapbox.navigation.ui.maps.internal.ui.RouteAlternativeComponent
1918
import com.mapbox.navigation.ui.maps.internal.ui.RouteAlternativeContract
20-
import com.mapbox.navigation.ui.utils.internal.datastore.NavigationDataStoreOwner
21-
import com.mapbox.navigation.ui.voice.internal.MapboxAudioGuidance
22-
import com.mapbox.navigation.ui.voice.internal.impl.MapboxAudioGuidanceImpl
19+
import com.mapbox.navigation.ui.voice.api.MapboxAudioGuidance
2320
import java.util.concurrent.atomic.AtomicBoolean
2421

2522
@OptIn(ExperimentalPreviewMapboxNavigationAPI::class)
@@ -55,8 +52,6 @@ object SharedApp {
5552

5653
@JvmOverloads
5754
fun setup(
58-
context: Context,
59-
audioGuidance: MapboxAudioGuidance? = null,
6055
routeAlternativeContract: RouteAlternativeContract? = null
6156
) {
6257
if (isSetup) return
@@ -69,7 +64,12 @@ object SharedApp {
6964
}
7065
)
7166
MapboxNavigationApp.lifecycleOwner.attachCreated(*navigationObservers)
72-
MapboxNavigationApp.registerObserver(audioGuidance ?: defaultAudioGuidance(context))
67+
68+
// TODO Remove this from SharedApp. The components that use `MapboxAudioGuidance`
69+
// will "ensureAudioGuidanceRegistered". See the `ComponentInstaller.audioGuidanceButton`
70+
if (MapboxNavigationApp.getObservers(MapboxAudioGuidance::class).isEmpty()) {
71+
MapboxNavigationApp.registerObserver(MapboxAudioGuidance())
72+
}
7373
}
7474

7575
fun tripSessionTransaction(updateSession: () -> Unit) {
@@ -80,12 +80,4 @@ object SharedApp {
8080
updateSession()
8181
ignoreTripSessionUpdates.set(false)
8282
}
83-
84-
private fun defaultAudioGuidance(context: Context): MapboxAudioGuidance {
85-
return MapboxAudioGuidanceImpl.create(context).also {
86-
it.dataStoreOwner = NavigationDataStoreOwner(context, DEFAULT_DATA_STORE_NAME)
87-
}
88-
}
89-
90-
private const val DEFAULT_DATA_STORE_NAME = "mapbox_navigation_preferences"
9183
}

libnavui-app/src/main/java/com/mapbox/navigation/ui/app/internal/controller/AudioGuidanceStateController.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import com.mapbox.navigation.ui.app.internal.State
88
import com.mapbox.navigation.ui.app.internal.Store
99
import com.mapbox.navigation.ui.app.internal.audioguidance.AudioAction
1010
import com.mapbox.navigation.ui.app.internal.audioguidance.AudioGuidanceState
11-
import com.mapbox.navigation.ui.voice.internal.MapboxAudioGuidance
11+
import com.mapbox.navigation.ui.voice.api.MapboxAudioGuidance
1212

1313
/**
1414
* This class is responsible for playing voice instructions. Use the [AudioAction] to turning the
@@ -59,7 +59,7 @@ class AudioGuidanceStateController(
5959
if (it.isMuted) {
6060
audioGuidance.mute()
6161
} else {
62-
audioGuidance.unmute()
62+
audioGuidance.unMute()
6363
}
6464
}
6565
}

0 commit comments

Comments
 (0)