自分のミニプログラムで 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 にバインドされ、ミニプログラム内のコールバック関数 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) のため、1 回の記録時間は長くしすぎないことをお勧めします。また、最大記録時間は 10 分を超えることはできません。