将音频文件从 Url 下载到存储并在代号一中完成下载后播放

Download Audio File From Url To Storage And Play On Download Complete In Codename One

我正在使用需要下载音频文件 (mp3) 的代号 one 开发应用程序 从远程服务器,然后在下载完成后播放。

我希望它在单击按钮后发生,但到目前为止......我在模拟器中看到的只是无限对话框,没有别的。

我在我的开发电脑上使用 java 7。

以下是相关的代码片段:

          ok.addActionListener(new ActionListener() {

    public void actionPerformed(ActionEvent ae) {
        String file=_cat+".mp3";
        String path="/"+file;
        Util.downloadUrlToStorage("http://abcde.com/images/"+file,path,true);

       final InputStream is = Display.getInstance().getResourceAsStream(this.getClass(), path);
    try {
      Media  mm = MediaManager.createMedia(is, "audio/mp3");
        mm.play();
    } 
    catch (IOException ex) {
       ex.printStackTrace();
    }
    }
          });

我怎样才能下载音频文件并在完成后播放?。 我根据 shai almog 的回答编辑了我的代码,如下所示:

          ok.addActionListener(new ActionListener() {

    public void actionPerformed(ActionEvent ae) {
               String file=_cat+".mp3";
        Util.downloadUrlToStorage("http://abcde.com/images/"+file,file,true);


        try {
            is = Storage.getInstance().createInputStream(file);
        } catch (IOException ex) {
           ex.printStackTrace();
        }
    try {
      Media  mm = MediaManager.createMedia(is, "audio/mp3");
        mm.play();
    } 
    catch (IOException ex) {
       ex.printStackTrace();
    }

.....仍然没有下载....我去

         .CodenameOneStorage 

我电脑上的目录,但那里什么也没有..我想 我错过了一些东西

getResourceAsStream returns 流到 jar 中,是只读路径。它不是 "file",你不能在那里写。存储是一个简化的文件系统,与它无关。

您可以使用类似的东西:

Util.downloadUrlToStorage("http://abcde.com/images/"+file,file,true);
InputStream is = Storage.getInstance().createInputStream(file);