Camera PluginがVersion 7.2.0で動画撮影に対応したとのことなので、動作確認してみる。
ドキュメント - Camera pluginに大体記載されている。ただし、2023/04/29時点では日本語訳が無い。
環境情報
Personal Environment(Version 11.18.1 (Build 37884))
Service Studio(Version 11.54.5)
動作確認にはAndroidを利用。
実装方法
動画撮影
画面にCameraPluginのRecordVideo Widgetを配置する。
OnClick、OnError Eventはそれぞれ必須なのでハンドラを指定する。
なお、他にも、(RecordVideo Widgetが内部で呼んでいる)RecordVideo Actionを直接呼ぶ方法もある。
OnClick Handler
EventはMediaResultという型のデータを渡してくる。
そこで、同じ型のLocal Variableを用意しておいて、ハンドラで保存しておく。
OnError Handler
Eventは、ErrorCodeとErrorMessageを属性に持つStructureを渡してくる。
MessageでErrorMessageを表示するなり、ログに出すなりする。
データの保存先
結果のMediaResultのURIパラメータを見ると
/<App Identifier>/cache/
を含むパスなので、これは一時キャッシュと思われる。
File Pluginでファイルを保存するパスで以前調べた、端末内部の一時保存領域のパスに見える。後ほど、File Pluginでアクセスする実験をしてみよう。
ドキュメントにも
Beware that video files stored in the cache are deleted when the app closes. When setting the URI parameter to a video file stored in the cache, beware that the video you're trying to play may have been already deleted.
とあるのでキャッシュであっていそう。そしてアプリを閉じるときに削除されるようだ。
動画再生
画面にCameraPluginのPlayVideo Widgetを配置する。撮影したばかりの動画と端末のギャラリーに保存された動画が対象。
Input ParameterのURIは必須なので撮影したい動画のURIを指定する。RecordVideoで撮影したものであれば、OnClickに渡ってくるMediaResult.URI属性を設定すればよい。
OnError Eventは必須なのでハンドラを指定する。
なお、他にも、(PlayVideo Widgetが内部で呼んでいる)PlayVideo Actionを直接呼ぶ方法もある。
OnError Handlerについては、動画撮影の場合と同様に。
Metadata
RecordVideoのInput Parameter IncludeMetadataにTrueを渡すと(デフォルトはFalse)、以下のメタデータも返してくれるようになる。Durationの単位はおそらく秒。
PWAについて
このバージョンでは未対応。
撮影を行うRecordVideo Actionで、以下の通りPWAでは撮影をせずに処理を終了するロジックが入っている。
PWAでも同じロジックが流れる可能性があるなら、CheckCameraPluginのIsPWA Output Parameterなどで分岐させ、動画撮影ロジックが流れないようにしたほうがいいだろう。