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
- Ketahui apa itu file AR Session dump.
Metode implementasi
Gunakan komponen Switch sebagai contoh untuk mengontrol mulai dan berakhirnya perekaman, lalu panggil fitur berbagi native WeChat setelah perekaman berakhir.
Menulis antarmuka WXML
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.