![]() |
Is MIDlet Paused :dontknow: ?
Привет всем!
Хочу спросить по поводу функции IsMidletPaused. Написал такой код, который прогоняется перед каждой перерисовкой экрана: if IsMidletPaused then begin while IsMidletPaused do delay(300); //Ждём пока на паузе if (is_playing=1) then close_player; //Затем выполняем несколько действий plp:=Playing; Playing:=0; Paused:=false; end; В итоге ничего не срабатывает, что вобщем-то очевидно ведь если Мидлет на паузе, то как он может работать? Если ли способ отловить событие постановки и снятия с паузы? Прога - плэер, а ему как ничему другому нужно знать, когда его заткнули и включили мелодию звонка. Заранее всем спасибо. |
Re: Is MIDlet Paused :dontknow: ?
Так ведь IsMidletPaused это логическая функция которая принимает значение истина или ложь. Например попробуй этот код:
begin repeat if IsMidletPaused=true then begin setcolor(255,255,0); FillRect(0, 0, GetWidth, GetHeight); Repaint; end; until 1=2; end. Если поставишь на паузу экран станет жёлтым. Твой код можно также изменить: if IsMidletPaused=true then begin while IsMidletPaused=true do begin delay(300); //Ждём пока на паузе if (is_playing=1) then close_player; //Затем выполняем несколько действий plp:=Playing; Playing:=0; Paused:=false; end; end; |
Re: Is MIDlet Paused :dontknow: ?
На всякий случай: не обязательно в операторе IF писать IsMidletPaused=true, у @lex-а тоже правильно.
Как я понимаю, для плейера надо обнаружить приостановку мидлета и поставить плейер тоже на паузу, а выход из паузы - уж пусть пользователь чего-то там нажмет :) Т.е. достаточно чего-то такого в основном цикле рисования на дисплее: Код:
|
Re: Is MIDlet Paused :dontknow: ?
Если мидлет ставится на паузу каким либо телефонным ивентом вроде входящего звонка, он автоматически останавливает свое выполнение... Для задания паузы программо функциям IsMidletPaused не нужна...
|
Re: Is MIDlet Paused :dontknow: ?
А тогда зачем эта функция, если она как бы никогда true не вернет (если не пауза - по естественной причине, а если мидлет остановлен - то по причине того, что функция просто не выполнится)? Думаю, что при приеме звонка мидлет продолжает работать, но в фоне, т.е. без отрисовки на экране. Чтобы за время разговора ничего там не "убежало" и нужна эта функция.
|
Re: Is MIDlet Paused :dontknow: ?
Такое возможно только если аппарат поддерживае резидентные мидлеты... А это встречается далеко не всегда...
|
Re: Is MIDlet Paused :dontknow: ?
Тогда каким образом возможно отловить isMidletPaused=true??? Оно ведь все-таки отлавливается!
|
Re: Is MIDlet Paused :dontknow: ?
В любом случае код, описанный мной прогоняется постоянно при работающем мидлете. Попробовал позвонить себе с другого тела во время проигрывания музыки и плэер этого не заметил.
Вобще моя библиотека проигрывания написана на Java, она помимо всего прочего может устанавливать громкость звучания и приостанавливать воспроизведения. Но после выхода из паузы звучание не возобновляется, но плэер говорит, что он что-то воспроизводит. Если при этом поставить его на паузу, а затем опять снять, то он начнёт нормальное проигрывание с начала трека, а если попробовать сделать что-нибудь другое, например изменить громкость, то мидлет повисает. Короче наверное эта функция не для всех мобил, а жаль... |
Re: Is MIDlet Paused :dontknow: ?
по логике вещей IsMidletPaused должна быть для всех мобил, т.к. она напрямую связана с соответствующим методом Java MDIP. неужели тот код, который я приводил ранее, не замечает пришедшего звонка? Как только обнаружил его (звонок) - ставь плейер на паузу, тогда и будет все ок. Я вот в своей мухобойке именно так отлавливаю звонки и прочее - работает...
|
Re: Is MIDlet Paused :dontknow: ?
IsMidletPaused просто возвращает значение переменной, которая в startApp() выставляется в False, а в pauseApp() в True.
Например на мотороле при приостановке мидлета вызывается pauseApp(), а при запуске в фоновом режиме startApp() Мидлет в приостановленном состоянии не может что-нибудь выполнять. |
Re: Is MIDlet Paused :dontknow: ?
Не понимаю!!!
Поясните процесс обнаружения паузы примерно так: основной цикл крутится, опрашивает IsMidletPaused, тут приходит звонок и Java-машина.... дальше продолжите вплоть до момента, когда мидлет снова запускается |
Re: Is MIDlet Paused :dontknow: ?
приходит звонок. вызывается pauseApp в ней paussed := true и работа мидлета останавливается. После окончания звонка работа мидлета возобновляется и вызывается startApp в ней paused := false. по крайней мере так происходит на большинстве телефонов. замечено что авторы МР тяготеют к Нокии, возможно на смартах при переходе в фон просто вызывается pauseApp и мидлет продолжает работать.
|
Re: Is MIDlet Paused :dontknow: ?
А можно ли как-нибудь принять эти сообщения в MP?
|
Re: Is MIDlet Paused :dontknow: ?
Цитата:
|
Re: Is MIDlet Paused :dontknow: ?
Некоторые телефоны поддерживают резидентные мидлеты, которые могут работать в фоновом режиме...
|
Часовой пояс GMT +4, время: 18:15. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot