在黑莓中播放音频时发生异常

时间:2012-08-06 18:45:24

标签: blackberry java-me

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 个答案:

答案 0 :(得分:4)

如果您查看BlackBerry API docs,就会看到您使用的createPlayer()版本:

  

MediaException - 如果无法为给定定位器创建播放器,则抛出该异常。

它还说:

  

locator - 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
    }