Le SDK grand public pour Android vous permet de créer des applications de partage de course à l'aide de une architecture modulaire. Vous pouvez utiliser les parties de l'API à utiliser pour votre application et intégrez-les à vos propres API. Le SDK grand public Les API correspondant à 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 grand public, vous devrez mettre à niveau votre application pour utiliser cette architecture modulaire. Ce guide de migration explique comment mettre à niveau votre application.
Présentation
L'architecture modulaire du SDK grand public 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 afficher la session sur la carte. Si aucune session sont affichées, la carte est vide. Il n'existe plus de champ "vide" ou "initialisée" de l'état.
Un objet Session représente une instance d'utilisation du cycle de vie unique d'un module. Les sessions sont les points d'accès aux API des modules. Par exemple : une session de partage de parcours suit un seul trajet. Vous interagissez avec l'objet Session pour surveiller le trajet.
Un objet Session est associé à un type de module. 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
récupèrent le même objet TripModel
. Pour suivre TRIP_B, obtenez un nouveau
TripModel
.
États des sessions
Une session peut être associée à l'un des é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 les mises à jour des données et des valeurs de ses éléments d'interface utilisateur. Pour démarrer une session, appelez la méthode
start
. Exemple :sessionA.start()
Une session affichée démarre automatiquement. Il affiche les éléments d'interface utilisateur et les met à jour en réponse aux mises à jour de données. Vous affichez une session en appelant la méthode
showSession
. Exemple :ConsumerController.showSession(sessionA)
Une session arrêtée cesse d'actualiser ses données et cesse de mettre à jour de l'interface utilisateur. Pour arrêter une session, appelez la méthode
stop
. Exemple :sessionA.stop()
Utiliser des composants d'interface utilisateur et de données uniquement
Vous pouvez créer une application de partage de course à l'aide de composants de données uniquement ou les API d'élément d'interface utilisateur fournies par On-demand Rides and Deliveries Solution.
Utiliser des composants de données uniquement
Pour créer une application de partage de course à l'aide de composants basés uniquement sur les données:
- Initialisez un objet
ConsumerApi
. - Obtenez l'objet
TripModelManager
à partir deConsumerApi
. - Démarrez la surveillance d'un trajet avec
TripModelManager
pour recevoir un objetTripModel
. - Enregistrez des rappels sur l'objet
TripModel
.
L'exemple suivant montre comment utiliser des composants ne contenant que des données:
TripModelManager tripManager = ConsumerApi.getTripModelManager();
TripModel tripA = tripManager.getTripModel("trip_A");
tripA.registerTripCallback(new TripModelCallback() {})
Utiliser les API des éléments d'interface utilisateur
Utilisez l'objet ConsumerController
pour accéder
les API des éléments d'interface utilisateur
de la solution On-demand Rides and Deliveries.
Créer une application de partage de course avec l'interface utilisateur de la solution On-demand Rides and Deliveries de l'élément:
- Initialisez l'objet
ConsumerApi
. - Obtenez un objet
TripModelManager
à partir de l'objetConsumerApi
. - Obtenez un objet
TripModel
à partir deTripModelManager
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 d'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 d'architecture modulaire
Si votre application de partage de course utilise des versions antérieures du SDK grand public, l'architecture modulaire mise à jour nécessitera quelques modifications de votre code. Cette section décrit certaines de ces modifications.
Autorisation d'accéder à la position
Les autorisations FINE_LOCATION
ne sont plus nécessaires
par le SDK grand public.
Surveillance des trajets
La nouvelle architecture modulaire nécessite des modifications de code pour les deux de la couche de données et de l'interface utilisateur.
Dans les versions précédentes, un utilisateur de la couche de données pouvait 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() {})
Avec l'architecture modulaire, un utilisateur de la couche de données utiliserait le code suivant:
ConsumerApi.initialize()
TripModelManager manager = ConsumerApi.getTripManager()
TripModel tripA = TripModelManager.getTrip("trip_A")
tripA.registerTripCallback(new TripModelCallback() {})
Dans les versions antérieures, 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 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);
Recentrage de la carte
La vue ou le fragment de la carte ne fait plus de zoom sur la position de l'utilisateur. lors de l'initialisation lorsqu'aucune session n'est active. Elle continuera zoomer automatiquement pour afficher la session de partage de parcours active tant que lorsque la fonctionnalité AutoCamera est activée. L'appareil photo automatique est activé par défaut.
Dans les versions précédentes, vous utilisiez le code suivant pour centrer l'appareil photo pour la session active en cours:
consumerController.centerMapForState()
Avec l'architecture modulaire, vous utiliseriez le code suivant:
CameraUpdate cameraUpdate = consumerController.getCameraUpdate()
if (cameraUpdate != null) {
googleMap.animateCamera(cameraUpdate);
// OR googleMap.moveCamera(cameraUpdate);
}
Pour désactiver la fonctionnalité Appareil photo automatique dans les versions antérieures, utilisez le code suivant:
consumerController.disableAutoCamera(true);
Avec l'architecture modulaire, vous utiliseriez le code suivant:
consumerController.setAutoCameraEnabled(false);
Personnalisation
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()