タケユー・ウェブ日報

Webシステム受託会社の業務の中での気づきや調べごとのメモ。

モバイルアプリケーションで使用するファイルを配置・利用する

Delphiでかんたん iOSアプリプログラミングのタイマー作成サンプルのところで、「配置」を使った例がありますが、これをそのままAndroidで試しても動きません。(「付録B.ローカルストレージについて」で説明があります)

モバイル チュートリアル:モバイル アプリケーションで FireDAC を使用する(iOS および Android)の「モバイル用にデータベースの配置をセットアップする」に答えがありました。

モバイル デバイスでは、アプリケーションはサンドボックス化されるため、通常はアプリケーション フォルダ下の Documents フォルダ(iOSバイスの場合)および internal 記憶域(Androidバイスの場合)にあるデータしか読み書きできません。

[リモート パス]を StartUp\Documents\(iOS プラットフォームの場合)または assets\internal\(Android プラットフォームの場合)に変更

配置したファイルを利用するには System.IOUtils.TPath.GetDocumentsPath を使えば、プラットフォーム間のパスの違いを吸収してくれるようです。

implementation

uses
  System.IOUtils; // 追加

procedure TFormMain.FormCreate(Sender: TObject);
begin
  playAlerm.FileName := TPath.Combine(TPath.GetDocumentsPath, 'alerm.mp3');
end;