Hellocare Android SDK
Cette documentation explique comment intégrer le SDK Hellocare sur un client Android.
Il vous permet de piloter chaque étape du tunnel de connexion jusqu'à la consultation vidéo.
Pré-requis
La clé API fournie par Hellocare ainsi que le jeton de connexion utilisateur seront indispensables pour initialiser le SDK.
Si vous ne l'avez pas encore fait, référez-vous à au Guide de démarrage.
Configuration requise
Ce SDK supporte la version android 4.1 et plus
Pour bien faire fonctionner ce SDK, il est nécessaire d'ajouter les permissions suivantes à votre projet:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<uses-feature
android:glEsVersion="0x00020000"
android:required="true"/>
<uses-feature android:name="android.hardware.camera"/>
Installation
Le SDK Hellocare est publié sur un repository Maven.
Pour l'inclure dans votre projet, ajoutez tout d'abord à votre fichier gradle au niveau projet les lignes suivantes:
allprojects {
repositories {
....
....
maven {
url "https://maven.hellocareplatform.com"
}
...
...
}
}
puis ajoutez au fichier gradle au niveau application : app/build.gradle
implementation('com.hellocare.android:platform-sdk:<current version>@aar') {
transitive=true
}
La version actuelle du SDK est : 1.1
.
Initialisation
Vous devez utiliser la clé API fournie par Hellocare (test
ou live
).
protected void onCreate(Bundle savedInstanceState) {
........
HellocareSdk.init(new ApiSecret(apiKey, userToken))
........
}
Les différentes étapes du tunnel d'appel sont dans l'ordre :
None -> Connecting -> Dispatching -> Joining -> Join
|
|-> Doctor missing
Ces états sont representés par la classe SessionStates
et remontent via le SessionStateListener
à votre application.
Démarrez le tunnel d'appel
Sans spécialité
HellocareSDK.goToConnectingState()
Dans ce cas, on fait appel à un médecin généraliste.
Avec spécialité
HellocareSDK.goToConnectingState(skillCode: String)
Pour récupérer la liste des code de spécialités, un appel API est nécessaire (contactez-nous pour plus d'informations).
Stopper le tunnel d'appel
Il faut appeler la méthode cancel()
du SDK:
HellocareSdk.cancel()
L'évènenement onCancelSessionSuccess()
est remonté via le sdk lors d'une annulation avec succès.
L'évènenement onError(SessionError sessionError)
est remonté avec une erreur spécifique via le SDK lors de l'annulation si un problème a eu lieu.
Détails des différents état du SDK
None
Depuis cet état on peut faire appel qu'à l'état connecting
HellocareSdk.gotToConnectingState()
ou
HellocareSdk.gotToConnectingState(skillCode: String)
L'évènenement onConnectingStateSuccess(sessionUid: String)
est remonté via le sdk lors d'une connexion effectuée avec succès avec l'uid de la session en paramètre.
L'évènenement onError(SessionError sessionError)
est remonté avec une erreur spécifique via le SDK lors de la connexion si un problème a eu lieu.
CONNECTING
Depuis cet état on peut faire appel qu'à l'état dispatching
HellocareSdk.goToDispatchingState()
L'évènenement onDispatchingStateSuccess()
est remonté via le sdk si un professionnel de santé est disponible pour une consultation.
L'évènenement onDoctorMissingState()
est remonté via le sdk si aucun professionnel de santé est disponible pour une consultation.
L'évènenement onError(SessionError sessionError)
est remonté avec une erreur spécifique via le SDK lors de la demande de dispatch si un problème a eu lieu.
DOCTOR MISSING STATE
Depuis cet état on peut faire appel qu'à l'état cancel
car aucun professionnel de santé est disponible.
HellocareSdk.cancel()
DISPATCHING
Depuis cet état on peut faire appel qu'à l'état joining
HellocareSdk.goToJoinState()
L'évènenement onJoinStateSuccess(AssignedDoctor assignedDoctor, long awaitingTime)
est remonté via le sdk en cas de succès avec les informations sur le professionnel de santé attribué pour cette consultation et une estimation du temps d'attente en minutes.
Le temps d'attente est une estimation ce qui veut dire que la consultation peut démarrée avant ou après ce temps. (Voir l'état "Join" pour avoir des informations sur le démarrage de la consultation)
L'état Join
est automatiquement activé avec onJoinStateSuccess
JOIN
Dans cet état le SDK est en attente que le professionnel de santé assigné pour la consultation la démarre. Dans ce cas l'évènement
onVideoReadyToStart()
est remonté via le sdk.
A la réception de cet évènement, vous pouvez lancer votre vue vidéo du SDK (VideoSessionView
) afin de lancer la consultation.
CANCEL
Aucune action possible, vous pouvez quitter la consultation.
Exemple simple d'implementation du tunnel d'appel
private void startSession(){
HellocareSdk.gotToConnectingState()
}
override void onConnectingStateSuccess() {
HellocareSdk.goToDispatchState()
}
override void onDispatchingStateSuccess() {
HellocareSdk.goToJoinState()
}
override void onJoinStateSuccess(AssignedDoctor assignedDoctor, long awaitingTime) {
//receive the assigned doctor and an estimated time in minutes before the video session start
//the session can start before the end on this time if the method onVideoReadyToStart() raised
}
override void onError(SessionError sessionError) {
Toast.makeText(this, sessionError.name, Toast.LENGTH_LONG).show()
....// do your error stuff
}
override void onDoctorMissingState() {
updateOnDoctorMissingState()
}
override void onVideoReadyToStart() {
startActivity(Intent(this, VideoSessionActivity::class.java))
finish()
}
override void onCancelSessionSuccess() {
finish()
}
Consultation vidéo
Un composant graphique VideoSessionView
embarque la consultation vidéo et se charge de mettre en relation automatiquement le professionnel de santé et le patient.
Quand toutes les étapes du tunnel d'appel se sont déroulées avec succès, le SDK peut démarrer une consultation vidéo.
Pour cela appeler l'activity ou le fragment qui embarque votre VideoSessionView
Utilisation dans un layout.xml
:
<com.hellocare.android.platform_sdk.view.VideoSessionView
android:id="@+id/videoSessionView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
- Pour démarrer la vidéo, il suffit d'appeler la méthode
startVideo()
VideoSessionView videoSessionView = findViewById(R.id.videoSessionView)
HellocareSdk.startVideo(VideoSessionView videoSessionView, VideoSessionListener videoSessionListener)
Le VideoSessionListener permet de remonter les évènements lors de la consultation video.
onError(sessionErrorSessionError)
onSessionVideoEnd()
onSessionVideoStart()
NE PAS OUBLIER LES RUNTIMES PERMISSIONS AVANT DE LANCER LA VIDEO
- Pour terminer une consultation vidéo, il suffit d'utiliser la méthode
videoSessionView.terminate()