我使用 Firemonkey 部署一个带有音频文件的 Android 应用程序。 我有大约 30 个动物按钮,当用户选择每个按钮时,每个按钮都会听到动物的声音。这是第一个按钮的代码:
procedure TFMain.buttonLionClick(Sender: TObject);
begin
MediaPlayer1.FileName := 'D:\lion.mp3';
MediaPlayer1.Play;
end;
但是失败了。如何将声音部署到我的应用程序中?
最佳答案
首先,如果您想为 Android 构建您的应用程序,您需要将 .mp3 转换为 .3gp 才能播放它。 (您可以使用此站点:http://video.online-convert.com/convert-to-3gp ;只需上传您的文件并单击“转换”。)
其次,您需要将您的文件包含在您的资源中;转到项目>资源和图像,然后选择查看所有文件,然后选择您的 .3gp 文件并添加它们。
现在您可以创建一个程序来播放资源中的声音和音乐: (使用 TMediaPlayer)
procedure TForm1.PlayAudio(ResourceID: string); //PLAY MUSIC FROM RESOURCES
var
ResStream: TResourceStream;
TmpFile: string;
begin
ResStream := TResourceStream.Create(HInstance, ResourceID, RT_RCDATA);
try
TmpFile := TPath.Combine(TPath.GetDocumentsPath, 'tmp.3gp');
//TPath.Combine(TPath.GetDocumentsPath, 'filename') { Internal }
//TPath.Combine(TPath.GetSharedDocumentsPath, 'filename') { External }
ResStream.Position := 0;
ResStream.SaveToFile(TmpFile);
MediaPlayer1.FileName := TmpFile;
MediaPlayer1.Play;
finally
ResStream.Free;
end;
end;
注意:你需要这样做,因为你不能直接从你的资源播放你的文件,当部署到 android 时,你的资源将被保存。
现在播放音乐只需使用例如:PlayAudio('Resource_1')
注意:在播放新音频之前,您需要使用以下命令停止前一个音频:
MediaPlayer1.Stop;
MediaPlayer1.Clear;
如果你想循环你的音乐,那么你可以使用 TTimer 在它结束后重播你的声音。
注意:这只适用于 android。在 Windows 上使用 .mp3、.wav 或类似的文件和 TPath.Combine(TPath.GetTempPath, 'tmp.wav')
获取您在 Windows 上的路径。
关于android - 在 firemonkey 中播放声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32892712/