Воспроизведение звука на BlackBerry выдает ошибку - PullRequest
0 голосов
/ 19 декабря 2010

У меня проблемы с получением короткого файла MP3 для воспроизведения в очень маленьком приложении, которое я пишу, чтобы узнать, как разрабатывать для 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();
}

Дальнейшее редактирование Я удалил ссылку для загрузки проекта, так как проблема действительно была с кодом, и теперь все равно решена.

Ответы [ 2 ]

0 голосов
/ 22 декабря 2010

если у вас есть mp3-файл на SDCard, ваш URI должен быть file:///SDCard/<file>.mp3, но если вы воспроизводите его из приложения, тогда getResourceAsStream - это ответ

0 голосов
/ 20 декабря 2010

Проблема оказалась в том, что строка, передаваемая методу .createPlayer, должна быть URI.

Я перепробовал множество вариантов в строках file:///growl.mp3, прежде чем в конце концов отказаться (если кто-то знает правильныйСинтаксис URI для указания на файл в приложении BlackBerry, пожалуйста, прокомментируйте!) И остановитесь на этом:

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

Это немного грубовато, но по крайней мере это работает!

...