Table of Contents

Enregistrement des fichiers dump avec votre mini-programme

Cet article explique comment implémenter l'enregistrement et le transfert des données de session AR dump dans un mini-programme.

Avant de commencer

Méthode d'implémentation

Prenons l'exemple d'utilisation d'un composant Switch pour contrôler le début et la fin de l'enregistrement, puis appeler la fonction de partage native de WeChat après la fin.

Écrire l'interface WXML

Ajoutez un composant de formulaire Switch dans la page du mini-programme pour contrôler l'enregistrement et le transfert.

<switch class="switch" checked="{{dumpSessionFlag}}" bindchange="dumpSessionChange">Enregistrer les données</switch>

Contrôle logique de la page

Dans cet exemple, un interrupteur intitulé "Enregistrer les données" apparaîtra sur l'interface du mini-programme WeChat. Son état est lié à dumpSessionFlag dans le mini-programme et déclenche la fonction de rappel dumpSessionChange. Le code ts du mini-programme doit implémenter :

ar: null,
data: {
    // État initial du composant de formulaire : désactivé
    dumpSessionFlag:false,
},
onReady() {
    // Obtenir le composant xr-frame dans la scène
    this.ar = this.selectComponent("#ar-scene");
}
dumpSessionChange(event) {
    // Basculer l'affichage du composant lors de l'activation
    this.setData({
        "dumpSessionFlag":event.detail.value
    });
    if (this.ar) {
        // Appeler la méthode fournie par le composant xr-frame
        this.ar.dumpSession(event.detail.value);
    }
},

Implémenter la logique d'enregistrement principale (dans le composant xr-frame)

Contrôlez le processus d'enregistrement via l'interface session.dumpSession(signal: boolean) :

  • Passer true : démarre l'enregistrement.
  • Passer false : arrête l'enregistrement et retourne le chemin temporaire du fichier (tempFilePath).

Au début de l'enregistrement, utilisez wx.showToast() pour notifier le démarrage. À la fin, utilisez wx.shareFileMessage() pour transférer le fichier via les discussions WeChat.

/**
 * Gère la logique d'enregistrement de session
 * @param signal true pour démarrer, false pour arrêter et transférer
 */
dumpSession(signal: boolean): void {
  // Appeler l'interface pour obtenir le chemin
  const recordPath = session.dumpSession(signal);
  // Quand signal est true, retourne une chaîne vide (enregistrement en cours)
  if (recordPath.length == 0) {
      wx.showToast({
          title: 'Début de l\'enregistrement',
          icon: 'success',
          duration: 2000
      });
      return;
  }
  // Quand signal est false, traite le chemin de fichier retourné
  wx.shareFileMessage({
      filePath: recordPath,
      success() {
          wx.showToast({
              title: 'Transfert réussi',
              icon: 'success',
              duration: 2000
          });
      },
      fail() {
          wx.showToast({
              title: 'Échec du transfert',
              icon: 'error',
              duration: 2000
          });
      }
  })
}
Note

En raison des limitations d'espace local des mini-programmes (généralement 200MB), il est recommandé de ne pas enregistrer trop longtemps. La durée maximale d'enregistrement ne doit pas dépasser 10 minutes.