タケユー・ウェブ日報

Ruby on Rails や Flutter といった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;