0

録音した wave ファイルを再生しようとしています。再生中に、次のステートメントで例外がスローされます。

Player player = Manager.createPlayer(is, "audio/mpeg");

Wave ファイルを再生するためのコード全体は次のとおりです。

if (types[cnt].equals("audio/x-wav")) {
    Class clazz = Class.forName("RecordAudio");
    InputStream is =  
        clazz.getResourceAsStream("file:///SDCard/BlackBerry/original.wav");
    //create an instance of the player from the InputStream
    Player player = Manager.createPlayer(is, "audio/mpeg");
    player.realize();
    player.prefetch();
    //start the player
    player.start();
} 

何が問題なのですか?

4

2 に答える 2

7

関数 getResourceAsStream は、ファイル システムからではなく、JAR/COD ファイルからリソースをプルするためのものです。さらに、これはあなたが作っているよりも簡単です。次のように、ファイル名とパスを createPlayer に渡すだけです。

try {
    String filename = "file:///SDCard/BlackBerry/original.wav";
    Player player = javax.microedition.media.Manager.Manager.createPlayer( filename );
} catch (IOException e) {
    System.out.println("Error creating player");
} catch (MediaException e) {
    System.out.println("Error media type");
}
于 2009-09-02T12:11:37.937 に答える
4

MIME タイプが間違っていることが原因だと思います。これを試して:

String fileName = "file:///SDCard/BlackBerry/original.wav";
String mimeType = "audio/x-wav";
String types[] = javax.microedition.media.Manager
        .getSupportedContentTypes(null);
for (int cnt = types.length - 1; cnt >= 0; --cnt) {
    if (types[cnt].equals(mimeType)) {
        InputStream is = null;
        FileConnection fconn = null;
        try {
            fconn = (FileConnection) Connector.open(
            fileName, Connector.READ);
        } catch (IOException e) {
            System.out.println("Error reading file");
        }
        try {
            is = fconn.openInputStream();
        } catch (IOException e) {
            System.out.println("Error opening stream");
        }
        Player player = null;
        try {
            player =                    
            javax.microedition.media.Manager.createPlayer(
            is, mimeType);
        } catch (IOException e) {
            System.out.println("Error creating player");
        } catch (MediaException e) {
            System.out.println("Error media type");
        }
        try {
            player.realize();
        } catch (MediaException e) {
            System.out.println("Player cannot be released");
        }
        try {
            player.prefetch();
        } catch (MediaException e) {
            System.out.println("Player cannot be prefetched");
        }
        // start the player
        try {
            player.start();
        } catch (MediaException e) {
            System.out.println("Player cannot be started");
        }
    }
}

また、コンソールでどのような例外がスローされたかを確認します。

于 2009-09-02T07:14:56.647 に答える