MRが楽しい

MRやVRについて学習したことを書き残す

hololensアプリでXML設定ファイルの操作を行う その3(カメラロールへのアクセス)

本日は HoloLens の技術調査枠です。
以前、HoloLens での設定ファイル読み書きについて調査を行いました。
bluebirdofoz.hatenablog.com

このとき、書き込み先としてLocalAppData/AppName/LocalStateフォルダを指定していました。
この指定をカメラロールフォルダに切り替えてみます。

前回作成したスクリプトディレクトリ参照をKnownFolders.CameraRollに切り替えます。
・AppSettingManager.cs

/// <summary>
/// アプリ設定ディレクトリパス
/// 実行環境によって参照ディレクトリを変更する
/// </summary>
private string SettingFileDirectoryPath()
{
    string directorypath = "";
#if WINDOWS_UWP
    // HoloLens上での動作の場合、LocalAppData/AppName/LocalStateフォルダを参照する
    // directorypath = Windows.Storage.ApplicationData.Current.LocalFolder.Path;
    // ↓
    // HoloLens上での動作の場合、カメラロールを参照する
    directorypath = Windows.Storage.KnownFolders.CameraRoll.Path;
#else
    // Unity上での動作の場合、Assets/StreamingAssetsフォルダを参照する
    directorypath = UnityEngine.Application.streamingAssetsPath;
#endif
    return directorypath;
}

カメラロールを参照するには権限の設定が必要です。
Edit -> Project Settings -> Player から Publishing Settings の Capabilities を開きます。
PicturesLibrary にチェックを入れておきます。
f:id:bluebirdofoz:20180224232324j:plain

アプリを hololens にインストールして起動すると……。
f:id:bluebirdofoz:20180224232334j:plain
UserFiles/CameraRoll に settings.xml が書き込まれました。

LocalAppData/AppName/LocalState ではなく UserFiles/CameraRoll を利用するメリットとしてはアプリ再インストール時にフォルダが削除されない点があげられます。
再インストール後も設定を継続して持ちたい場合は AppName ディレクトリ配下に情報を保持しない方が良いです。