Table of Contents

Usar su mini programa para grabar archivos dump

Este artículo describe cómo implementar la grabación y el reenvío de datos AR Session dump en un mini programa.

Antes de comenzar

Método de implementación

Use un componente Switch como ejemplo para controlar el inicio y el final de la grabación, y llame a la función nativa de compartir de WeChat después de que finalice la grabación.

Escribir interfaz WXML

Agregue a la página del mini programa un componente de formulario Switch, usado para controlar el inicio de la grabación, el final y el reenvío de la grabación.

<switch class="switch" checked="{{dumpSessionFlag}}" bindchange="dumpSessionChange">记录数据</switch>

Control de lógica de página

En este ejemplo, aparecerá un interruptor llamado "Record data" en la interfaz de WeChat Mini Program. Su estado está vinculado a dumpSessionFlag en el mini programa, y está vinculado a la función de callback dumpSessionChange en el mini programa. Debe implementarse lo siguiente en el código ts del mini programa:

ar: null,
data: {
    //el estado inicial del componente de formulario es cerrado
    dumpSessionFlag:false,
},
onReady() {
    //obtiene el componente xr-frame en la escena
    this.ar = this.selectComponent("#ar-scene");
}
dumpSessionChange(event) {
    //al activarse el boton, alterna la visualizacion del componente de formulario
    this.setData({
        "dumpSessionFlag":event.detail.value
    });
    if (this.ar) {
        //llama al metodo proporcionado por el componente xr-frame
        this.ar.dumpSession(event.detail.value);
    }
},

Implementar la lógica central de grabación (dentro del componente xr-frame)

Controle el proceso de grabación llamando a la interfaz session.dumpSession(signal: boolean):

  • Pasar true: iniciar grabación.
  • Pasar false: detener grabación y devolver la ruta temporal del archivo (tempFilePath) generada.

Al iniciar la grabación, puede indicar que la grabación ha comenzado mediante wx.showToast(). Al finalizar la grabación, use wx.shareFileMessage() para reenviar el archivo grabado mediante chat de WeChat.

/**
 * gestiona la logica de grabacion de Session
 * @param signal true inicia la grabacion; false la detiene y la reenvia
 */
dumpSession(signal: boolean): void {
  // llama a la interfaz para obtener la ruta
  const recordPath = session.dumpSession(signal);
  // cuando signal es true, la interfaz devuelve una cadena vacia para indicar que se esta grabando
  if (recordPath.length == 0) {
      wx.showToast({
          title: '开始记录数据',
          icon: 'success',
          duration: 2000
      });
      return;
  }
  // cuando signal es false, procesa la ruta de archivo devuelta
  wx.shareFileMessage({
      filePath: recordPath,
      success() {
          wx.showToast({
              title: '记录转发成功',
              icon: 'success',
              duration: 2000
          });
      },
      fail() {
          wx.showToast({
              title: '记录转发失败',
              icon: 'error',
              duration: 2000
          });
      }
  })
}
Nota

Debido al límite de espacio local de los mini programas, normalmente 200 MB, se recomienda que una sola grabación no sea demasiado larga, y la duración máxima de grabación no debe superar 10 minutos.