|
Модераторы: javastic, AntonSaburov |
|
604 |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 56 Регистрация: 15.4.2005 Репутация: нет Всего: 1 |
Привет!
Возникла такая проблема! Требуется по наступлению некого события проиграть миди... но проблема в том что в след. раз это событие может наступить быстрее чем отыграет музыка... Попробывал setMediaTime(0) что бы просто с начало игралось.. на стандартном эмуле работает.. на эмуле BS S68 звука нет эксепшенов нет... а телефон выкидывает эксепшен Error setting media time Попробовал другой вариант, создать 2 плеера и в зависимости от того какой занят игрой запускать второй, и наоборот. В стандартном эмуле работает на эмуле S68 нет, на телефоне почему то 1 плеер залипает в состоянии СТАРТЕД :-( Хе хе.. getDuration() возвращает -1... теперь понятно почему setMediaTime не работает :-( Это сообщение отредактировал(а) 604 - 21.11.2006, 21:44 |
|||
|
||||
Dancer |
|
|||
Опытный Профиль Группа: Участник Сообщений: 537 Регистрация: 29.4.2005 Где: Nizhniy Novgorod Репутация: 33 Всего: 37 |
ориентируйся на то, что два плеера у тебя многие девайсы поддерживать не будут (можно сказать почити все), я имею ввиду из мидлета. Поэтому создай класс, который у тебя будет мониторить твой текущий плеер. И если тебе критично проигрывать что-то в тот момент как это пришло, то либо останавливаешь, то что у тебя в данный момент играет, то есть делаешь остановку плеера и проигрование нужно файлика запускаешь. Или же делаешь очередь из того, что нужно проигрывать. И помере проигрывания кусочков (файликов), ты очищаешь совю очередь до полного её изничтожения
-------------------- У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! |
|||
|
||||
604 |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 56 Регистрация: 15.4.2005 Репутация: нет Всего: 1 |
Dancer,
Вот блин.. а что же делать с тормозами вo время остановки и запуска миди? Такой код приводит к жутким фризам даже на стандартном эмуляторе: player.stop(); player.start(); а если еще учесть что надо будет подгрузить новый звук... будет еще хуже :-( |
|||
|
||||
Dancer |
|
|||
Опытный Профиль Группа: Участник Сообщений: 537 Регистрация: 29.4.2005 Где: Nizhniy Novgorod Репутация: 33 Всего: 37 |
во первых огранизовать в отдельно потоке работу с плеером, плюс я делал (правда не с мидюшками), вектор, в котором у меня уже были готовые объекты типа плеер, и я их просто брал из вектора и проигрывал. Ты скорее всего каждый раз откуда то пытаешься подгружать свои сэмплы (с тЫрнета или из JAR, а может быть и из файловой системы телефона) для проигрывания, попробуй это как то минимизировать.
Ну или опиши, что ты пытаешься делать немного более развёрнуто, и что ты этим хочешь получить. -------------------- У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! |
|||
|
||||
604 |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 56 Регистрация: 15.4.2005 Репутация: нет Всего: 1 |
Вот мой класс
На стандартном эмуляторе все отлично, на эмеле BenqSiemens S68 вобще ничего не слышно, изредко доносится какой то скрежет. На железе ситуация следующая: если сработала ситуация из case 1. а потом сразу же из 2(при этом свук 1 еще должен играть) звук1 пропадает и начинает играть звук 2. А потом все становится еще хуже... плеер 1 непредсказуемо залипает в состоянии STARTED и соответственно дальнейшие его запуски игнорируются. В идеале хотелось что бы звуки накладывались друг на друга... а еще лучше перезапускать звук если сработало то же событие быстрее чем играется звук Это сообщение отредактировал(а) 604 - 22.11.2006, 14:29 |
|||
|
||||
Dancer |
|
|||
Опытный Профиль Группа: Участник Сообщений: 537 Регистрация: 29.4.2005 Где: Nizhniy Novgorod Репутация: 33 Всего: 37 |
604, звини, хотел дома посмотреть, но времени не оказалось. Попробую сегодня в течении дня, ну или погоди до завтра. Дома вечером - точно погоняю.
-------------------- У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! |
|||
|
||||
604 |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 56 Регистрация: 15.4.2005 Репутация: нет Всего: 1 |
Всем еще раз привет!
Выяснил все эксперементальным путем!(относится к проигрыванию миди на BenqSiemens S68) 1. Одновременно может играть только 1 плеер. 2. одновременно может быть prefetch() только 1 плеер. 3. методы setMediaTime и getMediaTime не реализованы (спасибо большое сименс) Мой код глюкал, поскольку prefetch() были все 3 плеера. Исходя из всего этого получается: Если мы тормознули звук, а потом снова захотели его запустить, он начинает играть с прерваного места. Это правильно, но поскольку метод setMediaTime не реализован, запустить звук с начала мы не можем Так что для этого придется создавать новый плеер |
|||
|
||||
FAQ раздела лежит здесь! |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java ME (J2ME) | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |