forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Библиотеки (http://forum.boolean.name/forumdisplay.php?f=124)
-   -   Lib_suspend - Сворачивание мидлета (http://forum.boolean.name/showthread.php?t=8534)

odd 23.06.2009 02:14

Lib_suspend - Сворачивание мидлета
 
Вложений: 2
Простая библиотека, добавляющая функцию сворачивания мидлета (для многозадачных телефонов).
Проверялось на Sony Ericsson K550i, за другие телефоны не ручаюсь - нужно проверять.
Функций в библиотеке всего одна. Вызывается она как Suspend.Start;
Для продолжения работы программы нужно её снова развернуть с помощью функций телефона и нажать на любую клавишу.

Простейший пример использования:
PHP код:

Program SuspendTest;
Uses suspend;
Begin
    DrawText
('Сворачивание'55);
    
RepaintDelay(5000); // Ждем 5 секунд
    
Suspend.start// Сворачивание
    
DrawText('Работаем дальше'525);
    
RepaintDelay(5000);
End

Собственно, сворачивается только главный поток приложения. Остальные потоки (если есть) продолжают работать. Это только первая версия библиотеки, если хотите, могу сделать отдельно функции для сворачивания и разворачивания (восстановления работы) мидлета отдельно. В этом случае даже главный поток остановлен не будет. Но при сворачивании телефон полностью захватывает дисплей на себя и поэтому вывод на экран чего-либо в свернутом состоянии будет невозможен.

demon112 23.06.2009 06:38

Ответ: Lib_suspend - Сворачивание мидлета
 
А при сворачивание приложение продолжает работать?

odd 24.06.2009 00:30

Ответ: Lib_suspend - Сворачивание мидлета
 
Цитата:

Сообщение от demon112 (Сообщение 108696)
А при сворачивание приложение продолжает работать?

Параллельные процессы да, а M.class - нет. Могу переделать либу чтоб всё работало, но тогда для разворачивания мидлета придется вызывать отдельный метод и как-то определять свернуто ли приложение или нет. Короче, либу ещё нужно доработать. Но кому сильно надо, можно пользоваться и этой.

Skythrone 24.06.2009 01:35

Ответ: Lib_suspend - Сворачивание мидлета
 
А развернуть можно будет (если в мидлете произойдёт какое-то событие) ?

demon112 24.06.2009 10:39

Ответ: Lib_suspend - Сворачивание мидлета
 
Эм, а какой ещё кроме м класса существует?) это либой для многопоточности надо пользоваться? А в свёрнутом состоянии функция IsMidletPause возвращает верно?

odd 24.06.2009 23:01

Ответ: Lib_suspend - Сворачивание мидлета
 
Цитата:

Сообщение от Skythrone (Сообщение 108819)
А развернуть можно будет (если в мидлете произойдёт какое-то событие) ?

Пока нет, но в следующей версии библиотеки скорее всего сделаю.

Кстати, спасибо за напоминание о IsMidletPaused. Его тоже можно задействовать.

odd 24.06.2009 23:35

Ответ: Lib_suspend - Сворачивание мидлета
 
Вложений: 2
Готово. Переделал библиотеку с учетом ваших пожеланий.
Теперь функций в библиотеке две:
start - свернуть мидлет;
finish - развернуть мидлет.
Библиотека влияет на переменную IsMidletPaused.

Проверял библиотеку на таком примере:
PHP код:

Program SuspendTest;
Uses suspend;
Var 
iinteger;
Begin

    DrawText
('Сворачивание'55);
    
RepaintDelay(5000);
    
    
Suspend.start// Сворачивание
    
    
for i:=0 to 100 do Delay(50); // Имитация бурной трудовой деятельности
    
    
Suspend.finish// Разворачиваем мидлет
    
    
DrawText('Работаем дальше'525);
    
RepaintDelay(5000);
    
End


Trazzy 04.10.2009 08:25

Ответ: Lib_suspend - Сворачивание мидлета
 
Вложений: 1
Долго искал альтернативы сворачивания мидлета т.к. уже много раз видел подобное.. и вот наконец нашел для Сименса. Выкладываю пример. Проверьте, работает? У мя да:) тестил на C65. Кому интересно могу описать каким методом

Trazzy 08.10.2009 17:21

Атвэт: Lib_suspend - Сварачывание мыдлита
 
Приходилось мне както прошивать М65го.. и вот вспомнил, что когда работал с меню мобилы - выковырял файлег с командами меню, что передаются платформе телефона.. (перерыл все диски - нашел!)
Код:

CNCT_PREFRDBOOK //Телеф.срав.
RECD_RECORDMENU //Спис. вызовов
ELSE_SUFFUNUMNU //Интерн/игр
ELSE_INTRCAMERA //Камера
MESG_MESSGEMENU //Сообщения
ORGZ_ORGANIZMNU //Органайзер
ELSE_EXTRASMENU //Еще
FLSH_MYOWNSTUFF //Мои файлы
STUP_SETPUPMENU //Настройки
FLSH_FLEXPLORER //Card-explorer
ELSE_STR_MYMENU //Мое меню

(я накопал этих параметров штук 180, правда еще не со всеми разобрался, если комуто нужно - дам..)
Попробовал передать команды телефону, подав запрос платформе Симака через библу Lib_m2 - не реагирует! :4to:
Начал разбираться в чем же дело. Спасибо знакомому челу за подсказку.. Нужно было указать телу native (вроде tel)вначале и все заработало.:)
Код:

index:=platform_request('native:CNCT_PREFRDBOOK');

Trazzy 08.10.2009 17:54

Ответ: Lib_suspend - Сворачивание мидлета
 
:ok: А вот и сам исходный код проги:
(даю "как есть".. кому нужно - разберется, все просто!)
Код:

program SuspendSimak;
uses m2, font32;

var gk, gw, gh, index: integer;

procedure initi;
begin
  gw:=getwidth;
  gh:=getheight;
  Font32.Init(1);
  Font(0); LoadFont('font/artikz');
end;

procedure susp;
begin
  SetColor(0, 0, 0);
  FillRect(0, 0, gw, gh);
  drawString('[Created by ArtikZ]', 2, 2);
        drawString('1: Телеф.срав.', 2, 14);
        drawString('2: Спис. вызовов', 2, 24);
        drawString('3: Интерн/игр', 2, 34);
        drawString('4: Камера', 2, 44);
        drawString('5: Сообщения', 2, 54);
        drawString('6: Органайзер', 2, 64);
        drawString('7: Еще', 2, 74);
        drawString('8: Мои файлы', 2, 84);
        drawString('9: Настройки', 2, 94);
        drawString('*: Мое меню', 2, 104);
        drawString('#: Выход', 2, 114);
        repaint;
  repeat
  gk:=getKeyClicked;
  if gk=KE_KEY1 then
      index:=platform_request('native:CNCT_PREFRDBOOK'); //Телеф.срав.
  if gk=KE_KEY2 then
      index:=platform_request('native:RECD_RECORDMENU'); //Спис. вызовов
  if gk=KE_KEY3 then
      index:=platform_request('native:ELSE_SUFFUNUMNU'); //Интерн/игр
  if gk=KE_KEY4 then
      index:=platform_request('native:ELSE_INTRCAMERA'); //Камера
  if gk=KE_KEY5 then
      index:=platform_request('native:MESG_MESSGEMENU'); //Сообщения
  if gk=KE_KEY6 then
      index:=platform_request('native:ORGZ_ORGANIZMNU'); //Органайзер
  if gk=KE_KEY7 then
      index:=platform_request('native:ELSE_EXTRASMENU'); //Еще
  if gk=KE_KEY8 then
      index:=platform_request('native:FLSH_MYOWNSTUFF'); //Мои файлы
  if gk=KE_KEY9 then
      index:=platform_request('native:STUP_SETPUPMENU'); //Настройки
  if gk=KE_KEY0 then
      index:=platform_request('native:FLSH_FLEXPLORER'); //Card-explorer
  if gk=KE_STAR then
      index:=platform_request('native:ELSE_STR_MYMENU'); //Мое меню
  if gk=KE_POUND then halt; //Выход
  until gk <> GA_NONE;
  susp;
end;

begin
  initi;
  susp;
end.

:imp: :expl:

Trazzy 13.10.2009 02:41

Ответ: Lib_suspend - Сворачивание мидлета
 
Вложений: 1
Вот список стандартных шорткатов (для x65-x75 серий Симёнов):

IDOL 1234 08.12.2009 18:49

Ответ: Lib_suspend - Сворачивание мидлета
 
как и планировалось, на se мидлет упал.

cherepets 09.12.2009 09:34

Ответ: Lib_suspend - Сворачивание мидлета
 
ээ...
сразу полез в список либ, но там м2 нет((
ну, пофиг, смысл понятен)))

интересно где бы найти похожие списки для се, нокии и т.д...
помню что перерывал все файлы на прошлом своем телефоне (6260), находил файлы с т9, а вот команд меню вроде не было(..

NightDeath 15.01.2010 02:07

Ответ: Lib_suspend - Сворачивание мидлета
 
Как сделать во второй версии,чтоб мидлет развернулся,как дать мидлету понять,что его развернули?

NightDeath 15.01.2010 22:32

Ответ: Lib_suspend - Сворачивание мидлета
 
Ну вроде немного разобрался,но когда мидлет разворачиваю,то если не нажать никакой кнопки,то он сразу же опять сворачивается,как исправить этот баг,вот код
...
repeat
if getkeypressed=rsoft then
suspend.start;
repeat
delay(100);
until ismidletpaused=false;
suspend.finish;
until getkeypressed=lsoft;
end., или дайте пример,чтобы использовалась функция ismidletpaused.


Часовой пояс GMT +4, время: 13:42.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot