読者です 読者をやめる 読者になる 読者になる

元フリーエンジニアライフ

Ruby on Rails とか MovableType とかAWSやってるフリーランスウェブエンジニアの記録でした。現在は法人成りしてIT社長。

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

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;