2015-07-02 26 views
0

我正在開發一個使用codenameone的應用程序,需要從遠程服務器下載音頻文件(mp3) ,然後在下載完成後播放它。從Url下載音頻文件到存儲和播放下載完成在Codename 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(); 
    } 
    } 
      }); 

我怎樣才能下載音頻文件並播放它,一旦它完成? 我編輯的代碼與夏嘉曦阿爾莫格的回答線,下面:

  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 

我的目錄PC但沒有什麼..我猜 我缺少一些東西

回答

1

getResourceAsStream返回一個流到一個罐子,是一個只讀路徑。它不是一個「文件」,你不能在那裏寫。存儲是一個與此無關的簡化文件系統。

您可以使用類似:

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

我我的代碼更新到這一點: – ewom2468

+1

您可以使用網絡監視工具在模擬器上看到正在發生的事情。存儲在.cn1下,而不是.CodenameOneStorage –