Клуб любителей телефонов Siemens (BenQ-Siemens)
Главная | Телефоны | Барахолка | Файлы | Аксессуары | Мелодии | Игры для Siemens | Графика | Документация | в закладки |
  ПравилаПравила FAQ по Siemens (BenQ-Siemens)FAQ ПоискПоиск
 
 РегистрацияРегистрация ВходВход 

[BREW] Информация для разработчиков/Programming tips
На страницу 1 2 3 » 9
Новая тема Написать ответ Форумы Все для телефонов Siemens (BenQ-Siemens) » BREW [ Версия для печати ]
Предыдущая тема :: Следующая тема  
Автор Сообщение
S.R.
Реаниматор
Реаниматор
Популярность: +64 (66)
Имя: Игорь

Возраст: 45
С нами с: 08.09.2003
Сообщений: 223
Откуда: Татарстан/Наб.Челны
Модель телефона: S65v58/MTC+EF81v58/Beeline

1/15 СообщениеДобавлено:Вс Мар 16, 2008 13:19   Заголовок сообщения: [BREW] Информация для разработчиков/Programming tips
Цитата

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

Discussion in English - here

NB! Замеченные здесь флудеры или просто слоняющиеся, задающие "научные" вопросы и ведущие праздные разговоры будут БЕЗ предупреждения получать или (в зависимости от ранга флудера)!
Особо "продвинутые" получат ещё и почетное звание -


Кое-какая документация:

Arrow Документация по разработке BREW-приложений и игр (C++)
Arrow Мини-FAQ по компиляции BREW-приложений
Arrow Дебаг-коды BREW
Arrow Отладка BREW-приложений в симуляторе


Последний раз редактировалось: kraze1984 (Пт Сен 05, 2008 12:00), всего редактировалось 11 раз(а)
^ Вверх ^
Профиль Личное ICQ
sidney
Человек года 2008
<b>Человек года 2008</b>
Популярность: +142 (156)
Имя: Дмитрий
Возраст: 34
С нами с: 14.08.2006
Сообщений: 745
Откуда: Север РБ
Модель телефона: SXG75 (white)

2/15 СообщениеДобавлено:Вс Мар 16, 2008 19:34   Заголовок сообщения:
Цитата

Вопросы
1) Пробывал ли ктонить при AEECLSID_LOGGER_SERIAL подключаться в BREW LOGGER (входит в состав SDK) к телефону?
2) Если да, видно ли что нить в окне этого логгера при работе апплета?

Я не разобрался до конца, на форуме разработчиков пишут, что вывод там должен быть всегда в любых ситуациях - даже если просто тупо кнопки на главном экране тискать, то должны в логгер эвенты сыпаться. Я подключался успешно обоими аппаратами, но и в случае SXG75, и в случае EF81 - в окошке тишина, ничего не показывает. Я туплю или эта чуда поделка от Qualcomm не работает с нашими телефонами?

_________________
с62 > c75 > s75 > sxg75 + ef81 + s68


Последний раз редактировалось: sidney (Пн Мар 17, 2008 12:08), всего редактировалось 2 раз(а)
^ Вверх ^
Профиль Личное
S.R.
Реаниматор
Реаниматор
Популярность: +64 (66)
Имя: Игорь

Возраст: 45
С нами с: 08.09.2003
Сообщений: 223
Откуда: Татарстан/Наб.Челны
Модель телефона: S65v58/MTC+EF81v58/Beeline

3/15 СообщениеДобавлено:Вс Мар 16, 2008 19:42   Заголовок сообщения: Лог-файл
Цитата

Повторный пост (самый первый)

Находка первая - лог-файл.

1. Создаем объект ILogger
ILogger * pLog;
ISHELL_CreateInstance ((IShell *)m_pIShell, AEECLSID_LOGGER_FILE, (void **)&pLog);
ILOGGER_SetParam(pLog, AEE_LOG_PARAM_FILE_NEW, _OFM_READWRITE , "test.log");
ILOGGER_SetParam(pLog, AEE_LOG_PARAM_FILTER_ONE, 4, (void *)TRUE);

2. Пишем в лог.
ILOGGER_Printf( pLog, ( pLog, (AEELogBucketType)4, __FILE__, (uint16)__LINE__, "%04xh", wParam ));
Для записи простой текстовой строки можно воспользоватся макросом LOG_TEXT:
LOG_TEXT( pLog , 4, "just a string" );

3. Освобождаем ILogger.
ILogger_Release( pLog );

В результате, в каталоге с модом у нас появится test.log с нашими сообщениями. Файл бинарный, утилиты для просмотра пока не найдено, но текстовые сообщения там легко просматриваются.
Вместо AEECLSID_LOGGER_FILE можно использовать AEECLID_LOGGER_WIN (окно в симуляторе) и AEECLSID_LOGGER_SERIAL (выдавать в порт).
Номер передаваемый с AEE_LOG_PARAM_FILTER_ONE и с командами вывода (в этом примере - 4) позволяет производить фильтрацию записей и запись в разные файлы.

_________________
WBR, Igor (AKA S.R.)
Носорог плохо видит... Но при его весе это не его проблемы...
^ Вверх ^
Профиль Личное ICQ
S.R.
Реаниматор
Реаниматор
Популярность: +64 (66)
Имя: Игорь

Возраст: 45
С нами с: 08.09.2003
Сообщений: 223
Откуда: Татарстан/Наб.Челны
Модель телефона: S65v58/MTC+EF81v58/Beeline

4/15 СообщениеДобавлено:Вс Мар 16, 2008 21:34   Заголовок сообщения: Внешний экран/клавиатура
Цитата

Продолжаем разговор.

Как доступится к внешнему экрану/клавиатуре EF81?
На самом деле все достаточно просто, но пока мне удалось задействовать их только в закрытом состоянии телефона.

1. Создаем инстанс.
IDisplay * m_pIDisplay2;
ISHELL_CreateInstance(m_pIShell, AEECLSID_DISPLAY2,(void**)&m_pIDisplay2);

2. Дожидаемся закрытия телефона (прихода сообщения EVT_FLIP с wParam = 0) и начинаем рисовать.
// По умолчанию стоит черный на черном
IDISPLAY_SetColor( m_pIDisplay2, CLR_USER_TEXT, RGB_BLACK );
IDISPLAY_SetColor( m_pIDisplay2, CLR_USER_BACKGROUND, RGB_WHITE );
IDISPLAY_DrawText( m_pIDisplay2, AEE_FONT_NORMAL, szText,-1, 0,0,NULL, IDF_ALIGN_CENTER | IDF_ALIGN_MIDDLE);
IDISPLAY_Update( m_pIDisplay2 );

3. В конце работы не забываем освободить.
IDISPLAY_Release( m_pIDisplay2 );

4. Теперь о внешних кнопках.
Доступны они тоже только при закрытой крышке, блокировка клавиатуры при закрытии крышки на них тоже действует. Побочным эффектом при разблокировке является (аналогично основной клавиатуре) приход сообщения EVT_KEY_RELEASE с wParam = E071h. Их действие полностью аналогично действию основной клавиатуры - приход сообщений EVT_KEY_PRESS/EVT_KEY/EVT_KEY_RELEASE с кодом в wParam.
Левая одиночная клавиша - E070h - AVK_SKIP_FWD;
Левая сторона качельки - E06Eh - AVK_PLAY;
Правая сторона качельки - E06Fh - AVK_PAUSE;
Правая одиночная клавиша - E071h - AVK_SKIP_RWD.

_________________
WBR, Igor (AKA S.R.)
Носорог плохо видит... Но при его весе это не его проблемы...
^ Вверх ^
Профиль Личное ICQ
kraze1984
Модератор
<b>Модератор</b>

Возраст: 32
С нами с: 22.12.2006
Сообщений: 1662
Откуда: EU
Модель телефона: Gz'One C781 + Huawei Y6

5/15 СообщениеДобавлено:Пн Мар 17, 2008 11:44   Заголовок сообщения:
Цитата

Какой код кнопки гарнитуры? Может на SXG75 будет тот же?
_________________
アンリミテッドルールブック
^ Вверх ^
Профиль Личное Сайт
kraze1984
Модератор
<b>Модератор</b>

Возраст: 32
С нами с: 22.12.2006
Сообщений: 1662
Откуда: EU
Модель телефона: Gz'One C781 + Huawei Y6

6/15 СообщениеДобавлено:Пн Мар 17, 2008 11:50   Заголовок сообщения:
Цитата

КЛАВИАТУРНЫЕ ОБОЗНАЧЕНИЯ В БРЮ:

SXG75

Код:

1    AVK_1
2    AVK_2
3    AVK_3
4    AVK_4
5    AVK_5
6    AVK_6
7    AVK_7
8    AVK_8
9    AVK_9
0    AVK_0
*    AVK_STAR
#    AVK_POUND

PAD_UP            AVK_UP,
PAD_DOWN        AVK_DOWN,
PAD_LEFT           AVK_LEFT,
PAD_RIGHT        AVK_RIGHT,
PAD_SELECT      AVK_SELECT,

LSK                   AVK_SOFT1
RSK                   AVK_SOFT2
TASK                 AVK_APP_SWITCH
CLR                   AVK_CLR

VOL+               AVK_VOLUME_UP
VOL-                AVK_VOLUME_DOWN

CAMERA           AVK_CAMERA
MEDIAPLAYER   AVK_SOFT3

VIDEOCALL       AVK_VIDEO_PHONE
INTERNET         AVK_WEB_ACCESS

GREEN             AVK_SEND
RED                 AVK_END

PTT                  AVK_FUNCTION

CARKIT KEY1    ?
CARKIT KEY2    ?
CARKIT KEY3    ?


Как для них узнать wParam для EVT_KEY_PRESS ?

_________________
アンリミテッドルールブック


Последний раз редактировалось: kraze1984 (Пн Мар 17, 2008 23:11), всего редактировалось 1 раз
^ Вверх ^
Профиль Личное Сайт
sidney
Человек года 2008
<b>Человек года 2008</b>
Популярность: +142 (156)
Имя: Дмитрий
Возраст: 34
С нами с: 14.08.2006
Сообщений: 745
Откуда: Север РБ
Модель телефона: SXG75 (white)

7/15 СообщениеДобавлено:Пн Мар 17, 2008 11:57   Заголовок сообщения:
Цитата

Присоединяюсь. Некоторые вещи, которые могут пригодиться при написании программ, но не совсем тривиальны, либо их просто долго искать. Итак -
Построчное считавание данных из файла.
Немного путанный алгоритм, но вроде работает. Последовательность - File => Stream => Source => Line

Код:
   
    // переменные
    ISourceUtil * pisu;
    ISource * pISource;
    IGetLine * piGetLine;
    GetLine gl;
    int rv;

    ...
    // Предполагается что файл уже открыт

    if (pIFile)
    {
        // Создаем ISourceUtil
        if (ISHELL_CreateInstance(pApp->a.m_pIShell, AEECLSID_SOURCEUTIL, (void **)&pisu))
            return;

        // Получаем Source из Stream, последний просто каститься на pIFile
        if (ISOURCEUTIL_SourceFromAStream(pisu, (IAStream*)pIFile, &pISource))
            return;

        // Получаем GetLine из Source
        if (ISOURCEUTIL_GetLineFromSource(pisu, pISource, maxSongLength, &piGetLine))
            return;

        IFILE_GetInfo(pIFile, &fileInfo);

        // читаем строку текста
        rv = IGETLINE_GetLine(piGetLine, &gl, IGETLINE_LF);

        if (!IGETLINE_Exhausted(rv))
        {
            // первая строка из файла тут будет в поле psz объекта gl (т.е. gl.psz)

            /* читаем в цикле остальные строки, пока не наступит EOF */
            while (!IGETLINE_Exhausted(rv))
            {
                rv = IGETLINE_GetLine(piGetLine, &gl, IGETLINE_LF);
                if (STRLEN(gl.psz) != 0)
                    // че та делаем с этой gl.psz
            }
        }

        // на выходе освобождаем ресурсы
        if (piGetLine)
            IGETLINE_Release(piGetLine);
        if (pISource)
            ISource_Release(pISource);
        if (pisu)
            ISOURCEUTIL_Release(pisu);
    }

_________________
с62 > c75 > s75 > sxg75 + ef81 + s68
^ Вверх ^
Профиль Личное
sidney
Человек года 2008
<b>Человек года 2008</b>
Популярность: +142 (156)
Имя: Дмитрий
Возраст: 34
С нами с: 14.08.2006
Сообщений: 745
Откуда: Север РБ
Модель телефона: SXG75 (white)

8/15 СообщениеДобавлено:Пн Мар 17, 2008 12:06   Заголовок сообщения:
Цитата

Сканирование всех файлов во всех каталогах/подкаталогах начиная с указанного

Код:
   
static void GetFilesRecursive(IApplet* pApp, IFile * pIFile, const char * pszName)
    // Переменные
    IShell*    shell;
    IFileMgr * pIFileMgr = NULL;
    AEEFileInfoEx   info;

    // создаем инстанцию IFileMgr
    ISHELL_CreateInstance(shell, AEECLSID_FILEMGR, (void*)&pIFileMgr);

    // инициализируем структуру AEEFileInfoEx, иначе IFILEMGR_EnumNextEx возвращает FALSE. Долго она меня помучила, зараза :)
    // !!значения переменныъ для dwXXX полей взяты с потолка
    info.nStructSize = sizeof(AEEFileInfoEx);
    info.attrib=_FA_NORMAL | FA_HIDDEN;
    info.dwCreationDate = 0;
    info.dwSize = 2048;
    info.nMaxFile = 2048;
    info.pszFile = MALLOC(info.nMaxFile);
    info.nDescriptionSize = 2048;
    info.pszDescription = MALLOC(info.nDescriptionSize);
    info.nClassesSize = 2048;
    info.pClasses = MALLOC(info.nClassesSize);

    if (IFILEMGR_EnumInit(pIFileMgr, pszBuf, TRUE) == SUCCESS)
    {
        while (IFILEMGR_EnumNextEx(pIFileMgr, &info))
        {
            // найдена директория, запускаем рекурсию
            GetFilesRecursive(pApp, pIFile, info.pszFile);
        }

        if (IFILEMGR_EnumInit(pIFileMgr, pszBuf, FALSE) == SUCCESS)
        {
            while (IFILEMGR_EnumNextEx(pIFileMgr, &info))
            {
                // тут чего то делаем с info.pszFile
            }
        }
    }

    // освобождаем ресурсы
    FREE(pszBuf);
    FREE(&info);
    if (pIFileMgr)
        IFILEMGR_Release(pIFileMgr);
}


_________________
с62 > c75 > s75 > sxg75 + ef81 + s68
^ Вверх ^
Профиль Личное
S.R.
Реаниматор
Реаниматор
Популярность: +64 (66)
Имя: Игорь

Возраст: 45
С нами с: 08.09.2003
Сообщений: 223
Откуда: Татарстан/Наб.Челны
Модель телефона: S65v58/MTC+EF81v58/Beeline

9/15 СообщениеДобавлено:Пн Мар 17, 2008 12:44   Заголовок сообщения:
Цитата

kraze1984 писал(а):
КЛАВИАТУРНЫЕ ОБОЗНАЧЕНИЯ В БРЮ:

SXG75

Код:

...
PAD_UP            AVK_UP,
PAD_DOWN        AVK_DOWN,
PAD_LEFT           AVK_LEFT,
PAD_RIGHT        AVK_RIGHT,
PAD_SELECT      AVK_SELECT,
...


Как для них узнать wParam для EVT_KEY_PRESS ?


Для всех клавишных евентов wParam содержит AVK_xxx код. В программу поступает одинаковых три евента с разными eCode, например:
{ EVT_KEY_PRESS, AVK_UP, 0 },
{ EVT_KEY, AVK_UP, 0 },
{ EVT_KEY_RELEASE, AVK_UP, 0 }.

Могу выложить модифицированный helloworld, который складывает в лог абсолютно все проходящие мимо евенты. Правда потом этот лог разбирать тяжело...

_________________
WBR, Igor (AKA S.R.)
Носорог плохо видит... Но при его весе это не его проблемы...
^ Вверх ^
Профиль Личное ICQ
kraze1984
Модератор
<b>Модератор</b>

Возраст: 32
С нами с: 22.12.2006
Сообщений: 1662
Откуда: EU
Модель телефона: Gz'One C781 + Huawei Y6

10/15 СообщениеДобавлено:Пн Мар 17, 2008 13:00   Заголовок сообщения:
Цитата

Выкладывай Smile
_________________
アンリミテッドルールブック
^ Вверх ^
Профиль Личное Сайт
S.R.
Реаниматор
Реаниматор
Популярность: +64 (66)
Имя: Игорь

Возраст: 45
С нами с: 08.09.2003
Сообщений: 223
Откуда: Татарстан/Наб.Челны
Модель телефона: S65v58/MTC+EF81v58/Beeline

11/15 СообщениеДобавлено:Пн Мар 17, 2008 15:11   Заголовок сообщения:
Цитата

Мой модифицированный helloworld для ловли евентов.
ОСТОРОЖНО! CLSID совпадает с MasterMind и PlayEX.

Прикладываю и собранный и исходники. Для сборки требуется gnuarm и lightblue.
Также прикладываю небольшую утилитку для конвертации лога в текстовый формат. Использование: convert <in-file> <out-file>.


утилитка
convert.rar - 22,5 KB
Файл скачен или просмотрен 320 раз.
исходники
helloworld_src.rar - 4,49 KB
Файл скачен или просмотрен 329 раз.
собранный вариант
helloworld.rar - 2,71 KB
Файл скачен или просмотрен 307 раз.

_________________
WBR, Igor (AKA S.R.)
Носорог плохо видит... Но при его весе это не его проблемы...
^ Вверх ^
Профиль Личное ICQ
S.R.
Реаниматор
Реаниматор
Популярность: +64 (66)
Имя: Игорь

Возраст: 45
С нами с: 08.09.2003
Сообщений: 223
Откуда: Татарстан/Наб.Челны
Модель телефона: S65v58/MTC+EF81v58/Beeline

12/15 СообщениеДобавлено:Пн Мар 17, 2008 15:29   Заголовок сообщения:
Цитата

kraze1984 писал(а):
Какой код кнопки гарнитуры? Может на SXG75 будет тот же?

Попробовал. E03Dh - AVK_FUNCTION.
Такой же?

_________________
WBR, Igor (AKA S.R.)
Носорог плохо видит... Но при его весе это не его проблемы...
^ Вверх ^
Профиль Личное ICQ
kraze1984
Модератор
<b>Модератор</b>

Возраст: 32
С нами с: 22.12.2006
Сообщений: 1662
Откуда: EU
Модель телефона: Gz'One C781 + Huawei Y6

13/15 СообщениеДобавлено:Пн Мар 17, 2008 15:55   Заголовок сообщения:
Цитата

S.R. писал(а):
kraze1984 писал(а):
Какой код кнопки гарнитуры? Может на SXG75 будет тот же?

Попробовал. E03Dh - AVK_FUNCTION.
Такой же?


Что-то у меня твоя прога ребут вызывает... SXG75
Проверю твой код клавиши когда до проги доберусь.

_________________
アンリミテッドルールブック
^ Вверх ^
Профиль Личное Сайт
adfree
Знающий
Знающий
Популярность: +27 (31)
Возраст: 36
С нами с: 15.03.2008
Сообщений: 46

14/15 СообщениеДобавлено:Пн Мар 17, 2008 16:42   Заголовок сообщения: Solved clamshell problem, no more killing Apps or JAVA Mids
Цитата

One possible way to stop killing Apps and JAVA Mids by closing Clamshell on EF81, EF82...

You have to know how to install BREW Apps!
You need the *.SIG...

Download:
http://rapidshare.com/files/100210350/FU_ClamshellSM.rar.html

Then simple Copy:
ClamshellSM.mif into MIF folder
ClamshellSM folder with ClamshellSM.SIG into MOD folder


Sorry. Embarassed Outer Keys now deactivated. But I think one day we can solve this too.

Have fun.

Best Regards
^ Вверх ^
Профиль Личное
S.R.
Реаниматор
Реаниматор
Популярность: +64 (66)
Имя: Игорь

Возраст: 45
С нами с: 08.09.2003
Сообщений: 223
Откуда: Татарстан/Наб.Челны
Модель телефона: S65v58/MTC+EF81v58/Beeline

15/15 СообщениеДобавлено:Пн Мар 17, 2008 17:05   Заголовок сообщения:
Цитата

kraze1984 писал(а):
Что-то у меня твоя прога ребут вызывает... SXG75

А после ребута запускается? У меня подозрение, что сам BREW, когда замечает изменение файла с известным CLSID, на всякий случай перезапускает телефон и заново считывает все проги.... По крайней мере у меня, после заливки обновленного мода телефон сам перезапускался...

Kraze, а как ищутся строки для application/xxx? А для BREW App Manager такой строки нет? Хочется повесить его на отдельную кнопку...

_________________
WBR, Igor (AKA S.R.)
Носорог плохо видит... Но при его весе это не его проблемы...
^ Вверх ^
Профиль Личное ICQ
Перейти:  
Новая тема Написать ответ Форумы Все для телефонов Siemens (BenQ-Siemens) » BREW Часовой пояс: GMT + 3
На страницу 1 2 3 » 9



AllNokia.ru - Клуб Nokia

» телефоны nokia » темы для nokia » игры для nokia
Проблемы с Nokia? Иди на All Nokia! » программы для nokia » прикольные смс » прошивки nokia