Skip to content

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()