2016-01-22 72 views
0

上我用TMediaPlayer及以下过程:德尔福XE无法播放声音的Android设备

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上的声音。最好的办法是什么?

+3

Delphi XE不针对Android。你真的在使用哪个版本的Delphi? –

+1

资源文件仅在Windows平台上支持[资源文件](http://docwiki.embarcadero.com/RADStudio/Seattle/en/Resource_Files_Support) –

+1

在Android上,您必须将音频文件部署为资产,将其嵌入到应用程序可执行文件中。然后,您的应用程序可以根据需要使用部署的音频文件的文件名。 [加载和部署文件](http://docwiki.embarcadero.com/RADStudio/Seattle/en/Creating_an_Android_App#Loading_and_Deploying_Files) –

回答

0

感谢@RemyLebeau您指出我需要使用

TPath.Combine(TPath.GetDocumentsPath, 'filename') { Internal } 
TPath.Combine(TPath.GetSharedDocumentsPath, 'filename') { External } 

,如果im部署到Android找到我的道路资源,但这些文件仍然无法运行,然后我意识到,我是用.mp3和.wav。 我将它们转换为.3gp,现在声音在android上运行得很好。