Table of Contents

Menggunakan mini program Anda untuk merekam file dump

Artikel ini menjelaskan cara mengimplementasikan perekaman dan penerusan data AR Session dump dalam mini program.

Sebelum memulai

Metode implementasi

Gunakan komponen Switch sebagai contoh untuk mengontrol mulai dan berakhirnya perekaman, lalu panggil fitur berbagi native WeChat setelah perekaman berakhir.

Tambahkan komponen formulir Switch ke halaman mini program untuk mengontrol mulai merekam, mengakhiri, dan meneruskan rekaman.

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

Kontrol logika halaman

Dalam contoh ini, sebuah switch bernama "Record data" akan muncul pada antarmuka WeChat Mini Program. Statusnya terikat ke dumpSessionFlag dalam mini program, dan terikat ke fungsi callback dumpSessionChange dalam mini program. Implementasikan berikut ini dalam kode ts mini program:

ar: null,
data: {
    //status awal komponen formulir adalah tertutup
    dumpSessionFlag:false,
},
onReady() {
    //ambil komponen xr-frame dalam scene
    this.ar = this.selectComponent("#ar-scene");
}
dumpSessionChange(event) {
    //saat tombol dipicu, alihkan tampilan komponen formulir
    this.setData({
        "dumpSessionFlag":event.detail.value
    });
    if (this.ar) {
        //panggil metode yang disediakan komponen xr-frame
        this.ar.dumpSession(event.detail.value);
    }
},

Mengimplementasikan logika perekaman inti (di dalam komponen xr-frame)

Kontrol proses perekaman dengan memanggil antarmuka session.dumpSession(signal: boolean):

  • Meneruskan true: memulai perekaman.
  • Meneruskan false: menghentikan perekaman dan mengembalikan jalur file sementara (tempFilePath) yang dihasilkan.

Saat perekaman dimulai, Anda dapat memberi prompt bahwa perekaman telah dimulai melalui metode wx.showToast(). Saat perekaman berakhir, gunakan metode wx.shareFileMessage() untuk meneruskan file rekaman melalui chat WeChat.

/**
 * menangani logika perekaman Session
 * @param signal true untuk mulai merekam, false untuk berhenti merekam dan meneruskan
 */
dumpSession(signal: boolean): void {
  // panggil antarmuka untuk mendapatkan path
  const recordPath = session.dumpSession(signal);
  // saat signal bernilai true, antarmuka mengembalikan string kosong yang menunjukkan perekaman sedang berlangsung
  if (recordPath.length == 0) {
      wx.showToast({
          title: '开始记录数据',
          icon: 'success',
          duration: 2000
      });
      return;
  }
  // saat signal bernilai false, proses path file yang dikembalikan
  wx.shareFileMessage({
      filePath: recordPath,
      success() {
          wx.showToast({
              title: '记录转发成功',
              icon: 'success',
              duration: 2000
          });
      },
      fail() {
          wx.showToast({
              title: '记录转发失败',
              icon: 'error',
              duration: 2000
          });
      }
  })
}
Catatan

Karena batas ruang lokal mini program, biasanya 200 MB, disarankan durasi perekaman tunggal tidak terlalu lama, dan durasi perekaman maksimum tidak boleh melebihi 10 menit.