2012-08-06 73 views
0
try { 
    Player p = javax.microedition.media.Manager.createPlayer("abc.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()); 
} 

我使用上述代码播放黑莓中的音频。但它提供了一个异常错误,如下所述。播放黑莓中的音频时发生异常

javax.microedition.media.MediaException 
+1

是否有更具体的异常信息?它通常是这样的:'java.network.TimeOutException:timeout too long'? – jn1kk 2012-08-06 19:31:48

+1

创建你的播放器,给出源文件的正确位置。 – Signare 2012-08-21 06:26:46

回答

4

如果你看一下BlackBerry API docs,你看到了,你用createPlayer()版本:

MediaException - 如果一个球员不能为给定定位器创建抛出。

它还说:

定位 - 以URI语法定位器字符串描述的媒体内容。

你的定位器("abc.mp3")看起来并不像它以URI语法。你可以尝试改变,如"file:///SDCard/some-folder/abc.mp3"

或者,如果MP3文件是一个应用程序资源,我通常使用此代码:

try { 
     java.io.InputStream is = getClass().getResourceAsStream("/sounds/abc.mp3"); 
     javax.microedition.media.Player p = 
      javax.microedition.media.Manager.createPlayer(is, "audio/mpeg"); 
     p.realize(); 
     // get volume control for player and set volume to max 
     VolumeControl vc = (VolumeControl) p.getControl("VolumeControl"); 
     if (vc != null) { 
      vc.setLevel(100); 
     } 
     // the player can start with the smallest latency 
     p.prefetch(); 
     // non-blocking start 
     p.start(); 
    } catch (javax.microedition.media.MediaException me) { 
     // do something? 
    } catch (java.io.IOException ioe) { 
     // do something? 
    } catch (java.lang.NullPointerException npe) { 
     // this happened on Tours without mp3 bugfix 
    }