Запись dump-файлов с помощью вашей мини-программы
В этой статье описано, как реализовать запись и пересылку данных AR Session dump в мини-программе.
Перед началом
- Узнайте, что такое файл AR Session dump.
Способ реализации
В качестве примера используется компонент Switch для управления началом и окончанием записи, а после завершения записи вызывается встроенная функция отправки WeChat.
Написание интерфейса WXML
Добавьте на страницу мини-программы компонент формы Switch, который используется для управления началом записи, завершением и пересылкой записи.
<switch class="switch" checked="{{dumpSessionFlag}}" bindchange="dumpSessionChange">记录数据</switch>
Управление логикой страницы
В этом примере в интерфейсе WeChat Mini Program появится переключатель с именем "Record data". Его состояние привязано к dumpSessionFlag в мини-программе, и он привязан к callback-функции dumpSessionChange в мини-программе. В ts-коде мини-программы нужно реализовать:
ar: null,
data: {
//начальное состояние компонента формы закрыто
dumpSessionFlag:false,
},
onReady() {
//получите компонент xr-frame в сцене
this.ar = this.selectComponent("#ar-scene");
}
dumpSessionChange(event) {
//при срабатывании кнопки переключите отображение компонента формы
this.setData({
"dumpSessionFlag":event.detail.value
});
if (this.ar) {
//вызовите метод, предоставленный компонентом xr-frame
this.ar.dumpSession(event.detail.value);
}
},
Реализация основной логики записи (внутри компонента xr-frame)
Управляйте процессом записи через вызов интерфейса session.dumpSession(signal: boolean):
- Передать
true: начать запись. - Передать
false: остановить запись и вернуть созданный временный путь к файлу (tempFilePath).
При начале записи можно с помощью метода wx.showToast() показать подсказку о начале записи. При завершении записи используйте метод wx.shareFileMessage(), чтобы переслать записанный файл через чат WeChat.
/**
* обработка логики записи Session
* @param signal true запускает запись, false останавливает запись и пересылает ее
*/
dumpSession(signal: boolean): void {
// вызовите интерфейс для получения пути
const recordPath = session.dumpSession(signal);
// когда signal равен true, интерфейс возвращает пустую строку, показывая что запись выполняется
if (recordPath.length == 0) {
wx.showToast({
title: '开始记录数据',
icon: 'success',
duration: 2000
});
return;
}
// когда signal равен false, обработайте возвращенный путь к файлу
wx.shareFileMessage({
filePath: recordPath,
success() {
wx.showToast({
title: '记录转发成功',
icon: 'success',
duration: 2000
});
},
fail() {
wx.showToast({
title: '记录转发失败',
icon: 'error',
duration: 2000
});
}
})
}
Примечание
Из-за ограничения локального пространства мини-программы, обычно 200 MB, рекомендуется не делать одну запись слишком длинной, а максимальная длительность записи не должна превышать 10 минут.