【问题标题】:Delphi XE Can't play sounds on Android deviceDelphi XE 无法在 Android 设备上播放声音
【发布时间】:2016-01-22 10:14:18
【问题描述】:

我使用 TMediaPlayer 和以下程序:

procedure TForm1.PlayAudio(ResourceID: string);
var
  ResStream: TResourceStream;
  TmpFile: string;
begin
  ResStream := TResourceStream.Create(HInstance, ResourceID, RT_RCDATA);
  try

    //TmpFile := TPath.Combine(TPath.GetTempPath, 'tmp.wav');
    TmpFile :=(System.IOUtils.TPath.GetDocumentsPath + System.SysUtils.PathDelim + 'tmp.wav');

    ResStream.Position := 0;
    ResStream.SaveToFile(TmpFile);
    MediaPlayer1.FileName := TmpFile;

    MediaPlayer1.Play;

  finally
    ResStream.Free;
  end;
end;

从我的资源中播放声音,如下所示:PlayAudio('Resource_1'); 是 .wav 和 .mp3

它在 Windows 上运行良好,但是当我在 Android 上部署它时,它不会播放任何声音,而且我仍然无法从我的资源中找到很好的解释方法在 android 上播放声音。最好的方法是什么?

【问题讨论】:

  • Delphi XE 不针对 Android。您真正使用的是哪个版本的 Delphi?
  • 资源文件只支持Windows平台Resource Files
  • 在 Android 上,您必须将音频文件部署为资产,您不能将其嵌入到应用程序可执行文件本身中。然后您的应用程序可以根据需要使用部署的音频文件的文件名。 Loading and Deploying Files
  • @DavidHeffernan Delphi XE8,火猴
  • @RemyLebeau 谢谢,我会在今天晚些时候尝试。

标签: android delphi firemonkey delphi-xe8


【解决方案1】:

感谢@RemyLebeau 指出我需要使用

找到我的资源路径
TPath.Combine(TPath.GetDocumentsPath, 'filename')  { Internal }
TPath.Combine(TPath.GetSharedDocumentsPath, 'filename')  { External }

如果我部署到 android,但文件仍然无法运行,然后我意识到我使用的是 .mp3 和 .wav。 我将它们转换为 .3gp,现在声音在 android 上运行良好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-20
    • 2011-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多