Le SDK grand public pour Android vous permet de créer des applications de covoiturage à l'aide d'une architecture modulaire. Vous pouvez utiliser les parties de l'API que vous souhaitez utiliser pour votre application spécifique et les intégrer à vos propres API. Les API du SDK client pour différentes fonctionnalités sont encapsulées dans des modules distincts.
Si votre application de partage de course utilise des versions antérieures du SDK client, vous devez la mettre à niveau pour utiliser cette architecture modulaire. Ce guide de migration explique comment mettre à niveau votre application.
Présentation
L'architecture modulaire du SDK client introduit un objet Session qui contient l'état de l'interface utilisateur. Dans les versions précédentes du SDK grand public, les applications circulaient entre les états. Avec cette architecture modulaire, vous créez un objet Session et vous avez la possibilité d'afficher la session sur la carte. Si aucune session ne s'affiche, la carte est vide. Il n'y a plus d'état "vide" ou "initialisé".
Un objet Session représente une seule instance d'utilisation du cycle de vie d'un module. Les sessions sont les points d'accès aux API de module. Par exemple, une session de partage de trajet suit un seul trajet. Vous interagissez avec l'objet Session pour surveiller le trajet.
Un objet Session est associé à un type de module. Le comportement de l'objet Session est lié au cycle de vie de l'objet utilisé pour l'initialiser.
Supposons que vous créiez un objet TripModel
pour suivre Trip_A.
Si vous essayez à nouveau d'obtenir un objet TripModel
pour Trip_A, vous obtiendrez le même objet TripModel
. Pour suivre Trip_B, obtenez un nouvel objet TripModel
.
États des sessions
Une session peut être associée à l'un des différents états suivants:
Une session créée est représentée par un objet Session. Vous créez une session en appelant la méthode
create
. Exemple :JourneySharingSession sessionA = JourneySharingSession.createInstance(TripModelA)
Une session démarrée est enregistrée pour recevoir les mises à jour des données et des valeurs de ses éléments d'interface utilisateur. Vous démarrez une session en appelant la méthode
start
. Exemple :sessionA.start()
Une session affichée démarre automatiquement. Elle affiche les éléments de l'interface utilisateur et les met à jour en réponse aux mises à jour des données. Pour afficher une session, appelez la méthode
showSession
. Exemple :ConsumerController.showSession(sessionA)
Une session arrêtée cesse d'actualiser ses données et de mettre à jour ses éléments d'interface utilisateur. Pour arrêter une session, appelez la méthode
stop
. Exemple :sessionA.stop()
Utiliser des composants d'interface utilisateur et de type "Données uniquement"
Vous pouvez créer une application de partage de course à l'aide de composants ne contenant que des données ou des API d'éléments d'interface utilisateur fournies par la solution On-demand Rides and Deliveries.
Utiliser des composants ne comportant que des données
Pour créer une application de partage de course à l'aide de composants ne contenant que des données:
- Initialisez un objet
ConsumerApi
. - Obtenez l'objet
TripModelManager
à partir deConsumerApi
. - Commencez à surveiller un trajet avec le
TripModelManager
pour recevoir un objetTripModel
. - Enregistrez des rappels sur l'objet
TripModel
.
L'exemple suivant montre comment utiliser des composants ne comportant que des données:
TripModelManager tripManager = ConsumerApi.getTripModelManager();
TripModel tripA = tripManager.getTripModel("trip_A");
tripA.registerTripCallback(new TripModelCallback() {})
Utiliser les API d'élément d'interface utilisateur
Utilisez l'objet ConsumerController
pour accéder aux API d'élément d'interface utilisateur de la solution On-demand Rides and Deliveries.
Pour créer une application de partage de course avec les API de l'élément d'interface utilisateur de la solution On-demand Rides and Deliveries:
- Initialisez l'objet
ConsumerApi
. - Obtenez un objet
TripModelManager
à partir de l'objetConsumerApi
. - Obtenez un objet
TripModel
à partir duTripModelManager
qui suit un trajet. - Ajoutez
ConsumerMap[View/Fragment]
à la vue de l'application. - Obtenez un objet
ConsumerController
à partir deConsumerMap[View/Fragment]
. - Fournissez l'objet
TripModel
au contrôleur pour obtenir un objetJourneySharingSession
. - Utilisez le contrôleur pour afficher
JourneySharingSession
.
L'exemple suivant montre comment utiliser les API de l'interface utilisateur:
TripModelManager tripManager = ConsumerApi.getTripModelManager();
TripModel tripA = TripModelManager.getTripModel("trip_A");
// Session is NOT automatically started when created.
JourneySharingSession jsSessionA = JourneySharingSession.createInstance(tripA);
JourneySharingSession jsSessionB = JourneySharingSession.createInstance(tripB);
// But a session is automatically started when shown.
ConsumerController.showSession(jsSessionA);
ConsumerController.showSession(jsSessionB); // hides trip A; shows trip B.
ConsumerController.hideAllSessions(); // don't show any sessions
// Unregister listeners and delete UI elements of jsSessionA.
consumerController.showSession(jsSessionA);
jsSessionA.stop();
// Recreates and shows UI elements of jsSessionA.
jsSessionA.start();
Modifications du code de l'architecture modulaire
Si votre application de partage de course utilise des versions antérieures du SDK client, l'architecture modulaire mise à jour nécessitera quelques modifications de votre code. Cette section décrit certaines de ces modifications.
Autorisations d'accéder à la position
Les autorisations FINE_LOCATION
ne sont plus requises par le SDK client.
Surveillance des trajets
L'architecture modulaire mise à jour nécessite des modifications de code pour les utilisateurs de la couche de données et de l'interface utilisateur.
Dans les versions antérieures, un utilisateur de la couche de données peut gérer la surveillance des trajets à l'aide du code suivant:
ConsumerApi.initialize()
TripModelManager manager = ConsumerApi.getTripManager()
manager.setActiveTrip("trip_id")
manager.registerActiveTripCallback(new TripModelCallback() {})
En utilisant l'architecture modulaire, un utilisateur de couche de données peut utiliser le code suivant:
ConsumerApi.initialize()
TripModelManager manager = ConsumerApi.getTripManager()
TripModel tripA = TripModelManager.getTrip("trip_A")
tripA.registerTripCallback(new TripModelCallback() {})
Dans les versions précédentes, un utilisateur de l'interface utilisateur pouvait gérer la surveillance des trajets à l'aide du code suivant:
ConsumerApi.initialize()
TripModelManager manager = ConsumerApi.getTripManager()
manager.setActiveTrip("trip_id")
ConsumerController controller = consumerGoogleMap.getConsumerController();
consumerController.startJourneySharing()
Avec l'architecture modulaire, un utilisateur d'interface utilisateur utilise le code suivant:
ConsumerApi.initialize()
TripModelManager manager = ConsumerApi.getTripManager()
TripModel tripA = TripModelManager.getTripModel("trip_A");
ConsumerController controller = consumerGoogleMap.getConsumerController();
JourneySharingSession jsSessionA = JourneySharingSession.createInstance(tripA);
controller.showSession(jsSessionA);
centrage de la carte ;
Lorsqu'aucune session n'est active, la vue de carte ou le fragment ne zoome plus sur la position de l'utilisateur lors de l'initialisation. Tant que la fonctionnalité AutoCamera est activée, le zoom automatique affiche toujours la session de partage de parcours active. La fonctionnalité Caméra automatique est activée par défaut.
Dans les versions précédentes, vous deviez utiliser le code suivant pour centrer la caméra au cours de la session active:
consumerController.centerMapForState()
Avec l'architecture modulaire, vous devez utiliser le code suivant:
CameraUpdate cameraUpdate = consumerController.getCameraUpdate()
if (cameraUpdate != null) {
googleMap.animateCamera(cameraUpdate);
// OR googleMap.moveCamera(cameraUpdate);
}
Pour désactiver la fonctionnalité Caméra automatique dans les versions antérieures, vous devez utiliser le code suivant:
consumerController.disableAutoCamera(true);
Avec l'architecture modulaire, vous devez utiliser le code suivant:
consumerController.setAutoCameraEnabled(false);
Fonctionnalités
Le bouton d'action flottant personnalisé de la solution On-demand Rides and Deliveries a été supprimé de la carte.
Les méthodes associées au bouton d'action flottant ont également été supprimées:
ConsumerController.isMyLocationFabEnabled()
ConsumerController.setMyLocationFabEnabled()