2010-12-19 64 views
0

我正在寫一個非常小的應用程序以播放短MP3文件,以便學習如何開發BlackBerry。在BlackBerry上播放聲音時出現錯誤

因爲我是BlackBerry開發的新手,所以我已經將我的Eclipse項目上傳到http://stroke.sampablokuper.com/stroke.zip,因爲我不知道問題出現在我的Java編程中,還是我已經佈置了資源在我的項目中,還是其他的東西。

這是一個非常小的項目 - 只有一個Java文件&三個媒體文件 - 所以請幫助我看看您是否可以在您的計算機上的Curve 8520模擬器中無誤地運行它。 (它是爲8520設計的,因爲這是我朋友的手機;我自己也沒有BB) -

這個想法是,當用戶按下/滾動「向下」的軌跡球/鍵盤上,會播放聲音,但目前取代聲音,我只是收到錯誤消息:javax.microedition.media.MediaException

我試過調試這個,但正如我所說,我是BB開發的全新手,所以我真的不知道如何理解我從我設置的斷點獲得的信息。

請你能告訴我我哪裏出了問題嗎?

我真的想在聖誕節前完成這個;請幫忙!

感謝提前:)

編輯:這裏的代碼的相關部分,剝離下來儘可能:

public boolean navigationMovement(int dx, int dy, int status, int time) { 
    if (dx == 0 && dy == 1)// DOWN 
    { 
     makeNoise("growl"); 
    } 
    return true; 
} 

private void makeNoise(String action) { 
    if (action == "growl") { 
     Dialog.alert("GROWL"); 
     try 
     { 
      Player p = javax.microedition.media.Manager.createPlayer("growl.mp3"); 
      p.realize(); 
      VolumeControl volume = (VolumeControl)p.getControl("VolumeControl"); 
      volume.setLevel(30); 
      p.prefetch(); 
      p.start(); 

     } 
     catch(MediaException me) 
     { 
      Dialog.alert(me.toString()); 
     } 
     catch(IOException ioe) 
     { 
      Dialog.alert(ioe.toString()); 
     } 
    } 
    invalidate(); 
} 

進一步編輯我已經刪除了鏈接下載該項目,因爲問題確實出現在代碼中,現在已經解決了。

+1

我認爲這是過分的要求別人來下載整個項目並將其導入蝕。既然你得到了一個MediaException,它可能不是你的項目佈局的問題。發佈用戶按下「向下」按鈕時正在執行的相關代碼。 – 2010-12-19 18:27:25

+0

夠公平的。完成,&你的有用評論upvoted :) – sampablokuper 2010-12-20 00:40:23

回答

0

如果您對SD卡的MP3文件,你的URI應該是file:///SDCard/<file>.mp3,但如果你是從應用程序打它,然後getResourceAsStream是答案

0

問題原來是傳遞給.createPlayer方法的字符串需要是一個URI。

我試圖沿着線file:///growl.mp3許多變化前最終放棄了(如果有人知道的指向黑莓應用程序中的文件正確的URI語法,請評論!)和安定在此:

InputStream is = getClass().getResourceAsStream("growl.mp3"); 
Player p = javax.microedition.media.Manager.createPlayer(is,"audio/mp3"); 

相比之下,它有點蹩腳,但至少它是有效的!