Запись файлов дампа с помощью вашего мини-приложения
В этой статье объясняется, как реализовать запись и пересылку данных дампа AR Session в мини-приложении.
Перед началом
- Узнайте, что такое файл дампа AR Session.
Метод реализации
В качестве примера используется компонент Switch для управления запуском и остановкой записи, а также вызова нативной функции WeChat после завершения.
Создание WXML-интерфейса
Добавьте в страницу мини-приложения компонент формы Switch для управления записью и пересылкой.
<switch class="switch" checked="{{dumpSessionFlag}}" bindchange="dumpSessionChange">Запись данных</switch>
Управление логикой страницы
В этом примере на интерфейсе мини-приложения появится переключатель "Запись данных". Его состояние привязано к dumpSessionFlag в мини-приложении и вызывает функцию обратного вызова 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 МБ) рекомендуется избегать длительных записей. Максимальная продолжительность записи не должна превышать 10 минут.