Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java ME (J2ME) > Как вставить звук в мидлет в формате mid


Автор: nickcherevko 13.5.2008, 17:43
Нужно вставить в мидлет звук в формате mid !
Для формата wav такой код :
Код


InpuStream input = getClass().getResourseAsStream("melod.wav");
Player p = Manger.createPlayer(input, "audio/X-wav");



Что заменить чтобы воспроизвести mid ???????

Автор: W0LF 13.5.2008, 17:57
Код

String protocols[] = Manager.getSupportedProtocols();
for (int i=0;i<protocols.length;i++) {
  String contentTypes[] = Manager.getSupportedContentTypes(protocols[i]);
  // Display all strings in the array .... 
}

Автор: murrenna 21.5.2008, 23:46
Подскажите: компилиться программа с классом PlayBG.java . Цель зацикленное воспроизведение миди файла на "фоне".  Какой код необходимо прописать в главном классе, чтобы инициировать проигрывание музыки? Есть-ли возможность "заставить" начать проигрываться этот файл не при запуске программы, а при (например) входе в меню, при выходе в режим ожидания и т.п.?
Заранее благодарен 

Автор: eugine_s 22.5.2008, 12:31
Цитата(murrenna @  21.5.2008,  23:46 Найти цитируемый пост)
Есть-ли возможность "заставить" начать проигрываться этот файл не при запуске программы, а при (например) входе в меню, при выходе в режим ожидания и т.п.?


Т.е. ты хочешь сказать что музыка у тебя сама начинает проигрываться при запуске программы и ты не говоришь своему классу PlayBG - "начни проигрывать музыку"?  Вот точно так же как запускаешь музыку при старте, запусти ее при событии.

Автор: murrenna 22.5.2008, 15:47
eugine_s, да не. Ты ответил на вторую половину моего вопроса. А первая половина как раз изаключается в том, что: какую прописать команду обращения к классу Playbg, (из основного класса, я так понимаю), чтобы класс Playbg начал свою работу? Только и всего.  

Автор: eugine_s 22.5.2008, 16:07
Цитата(murrenna @  22.5.2008,  15:47 Найти цитируемый пост)
какую прописать команду обращения к классу Playbg

PlayBG.start(), PlayBG.begin(), PlayBG.playSound(), PlayBG.начни_проигрывание() - как назовешь ту и вызывай.

Какой вопрос, таков ответ.

У меня нет твоего класса PlayBG, поэтому я не знаю как у тебя реализован запуск музыки.

Хотя почему-то мне кажется, что у тебя из класса PlayBG есть только название класса, а никаких методов в нем не реализовано. И вопрос, который тебя интересует - как сделать чтобы музыка вобще проигралась.

Тогда можно воспользоваться поиском по форуму, ну и вот одну я уже нашел сам : http://forum.vingrad.ru/forum/topic-162666/unread-1/kw-%D0%BA%D0%B0%D0%BA-%D0%B0%D1%82%D1%8C-%D0%B8%D0%BC%D0%B8-%D0%B7%D0%B2%D1%83%D0%BA%D0%B0%D0%BC%D0%B8.html


Цитата(murrenna @  22.5.2008,  15:47 Найти цитируемый пост)
Только и всего.


ну-ну.

Автор: murrenna 26.5.2008, 23:22
Вобщем вот примитивный плеер. Проигрывает файл 01.mid "по кругу". Помогите пожалуйста ламеру: нужно чтоб после 01.mid проирывался 02.mid -> 03.mid. А когда файлы заканчиваются, то возврат на 01.mid и далее "по кругу"
Код

import javax.microedition.media.Manager;
import javax.microedition.media.Player;
import javax.microedition.media.control.VolumeControl;

public class audio
{

    public static Player m_pPlayer;
    public static VolumeControl m_vcVolumeControl;

    audio()
    {
    }

    public static void _start_playervV()
    {
        try
        {
            m_pPlayer = Manager.createPlayer("/audio.mid".getClass().getResourceAsStream("/01.mid"), "audio/midi");
            m_pPlayer.realize();
            m_pPlayer.prefetch();
            m_vcVolumeControl = (VolumeControl)m_pPlayer.getControl("VolumeControl");
            m_vcVolumeControl.setLevel(50);
            m_pPlayer.setLoopCount(-1);
            m_pPlayer.start();
        }
        catch(Exception exception) { }
    }
}


Автор: eugine_s 27.5.2008, 00:22
1. Реализуй интерфейс PlayerListener (метод playerUpdate())

Код

public class audio implements PlayerListener {

protected void playerUpdate(Player player, java.lang.String event, java.lang.Object eventData)  {

if (event.equals(END_OF_MEDIA)) {
//запускаем плеер со следующим звуком.
}


}

}


2. m_pPlayer.setLoopCount(-1);  минус один замени на 1.


3. m_pPlayer.addPlayerListener(this);

4.  VolumeControl - зачем он тебе нужен?

5. введи какое-то поле (переменную) которая будет указывать на номер текущей мелодии.
например: 

int currentMelody = 1;
private final int COUNT_OF_MELODIES = 3;


когда нужно будет проиграть следующую мелодию, то делай инкремент currentMelody и если currentMelody > COUNT_OF_MELODIES, то currentMelody = 1;


И еще сделай вот такую замену:

m_pPlayer = Manager.createPlayer("/audio.mid".getClass().getResourceAsStream("/0" + currentMelody + ".mid"), "audio/midi");

Все.

Автор: murrenna 29.5.2008, 17:52
eugine_s. спасибо smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)