Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемhackday.ru
1 Программирование под Maemo Маличенко Дмитрий СПБ ГУАП
2 2/20 План Что такое Maemo Программирование под Maemo Работа в Scratchbox-е Простой пример Рисование в окне Работа с диалоговым окном Что еще не рассмотрено Ссылки
3 3/20 Что такое Maemo Maemo – это платформа для мобильных устройств основанная на Debian ( Устройства на базе Maemo: N900 N810 N800 N770
4 4/20 Какие есть версии Предыдущая – 4 (Diablo) Библиотека GUI: GTK Интерфейс: стилус Текущая – 5 (Fremantle) Библиотека GUI: GTK Интерфейс: палец + стилус Будущая версия – 6 (Harmattan) Библиотека GUI: Qt Интерфейс: только палец
5 5/20 Целевое устройство N900 Умеет звонить Линукс внутри Многозадачность WiFi, bluetooth GPS Сенсоры Интерфейс: палец + стилус Клавиатура: настоящая + виртуальная
6 6/20 Программирование под Maemo: особенности Мобильное устройство Маленький экран Интерфейс: палец/стилус Сенсоры Как облагородить интерфейс? Библиотека Hildon – надстройка над GTK+ Использование меньшего числа элементов управления
7 7/20 Программирование под Maemo: инструменты Требуется Основанный на Debian дистрибутив Linux Scratchbox – набор инструментов для кросс компиляции (поддерживает ARM, X86) Maemo SDK Инструкция по установке
8 8/20 Программирование под Maemo: связь с устройством Копирование файлов по USB на встроенную флешку (/home/user/MyDocs) USB Networking есть вспомогательные утилиты для запуска на устройстве WiFi + ssh/scp
9 9/20 Работа в scratchbox - 1 Используются два окружения X86 для разработки, тестирования и отладки ARM для компиляции под устройство Представляет собой песочницу $ /scratchbox/login Welcome to Scratchbox, the cross-compilation toolkit! Use 'sb-menu' to change your compilation target. See /scratchbox/doc/ for documentation. [sbox-FREMANTLE_X86: ~] >
10 10/20 Работа в scratchbox - 2 Запуск графического приложения в терминале 1 $ Xephyr :2 -host-cursor -screen 800x480x16 -dpi 96 -ac -kb & в терминале 2 [sbox-FREMANTLE_X86: ~]> export DISPLAY=:2 [sbox-FREMANTLE_X86: ~]> af-sb-init.sh start Возможна интеграция с eclipse Development_Environment/Maemo_Eclipse_Integration
11 11/20 Простой пример #include int main(int argc, char *argv[]) { GtkWidget *window; hildon_gtk_init (&argc, &argv); g_set_application_name ("Simplest example"); program = hildon_program_get_instance (); window = hildon_window_new (); hildon_program_add_window (program, HILDON_WINDOW (window)); gtk_widget_show (window); gtk_main (); return 0; } Задаем имя программы Создаем главное окно программы Запуск главного цикла обработки событий
12 12/20 Как собрать в Scratchbox $ /scratchbox/login [sbox-FREMANTLE_X86: ~] > gcc –o hello_world `pkg-config -- libs --cflags hildon-1` hello_world.c [sbox-FREMANTLE_X86: ~] >./hello_world pkg-config – возвращает пути к заголовочным файлам и к файлам библиотеки
13 13/20 Усложненный пример - 1 Цель: написать приложение для рисования Потребуется: Создать главное окно программы Создать область для рисования Поставить фильтр на требуемые события Зарегистрировать обработчики событий Требуемые события: нажатие, перемещение, отпускание Написать логику обработчиков событий
14 14/20 Рисование в окне: функция main #include int main (int argc, char **argv) { // Здесь идет код инициализации как в предыдущей программе.. g_signal_connect (G_OBJECT (window), "delete_event", G_CALLBACK (gtk_main_quit), NULL); GtkWidget *drawing_area = gtk_drawing_area_new (); g_signal_connect (G_OBJECT (drawing_area), "motion_notify_event", (GtkSignalFunc) motion_event_callback, NULL); // Далее так же задаем функции обработки для button_press_event // и button_release_event..... gtk_widget_set_events (drawing_area, GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK ); gtk_container_add (GTK_CONTAINER (window), drawing_area); // Код показа окна и запуск главного цикла обработки.... } Обработка сигнала при закрытии окна Создание области для рисования на все окно Добавляем обработчик события «перемещение указателя мыши» Указываем какие события хотим обрабатывать
15 15/20 Рисование в окне: обработка событий static gboolean button_press_event( GtkWidget *widget, GdkEventButton *event ) { if (event->button == 1 ) pressed=1; return TRUE; } static gboolean button_release_event( GtkWidget *widget, GdkEventButton *event ) { if (event->button == 1 ) pressed=0; return TRUE; } gboolean motion_event_callback (GtkWidget *widget, GdkEventMotion *event){ if (pressed) gdk_draw_line(widget->window, widget->style->fg_gc[GTK_WIDGET_STATE (widget)], x, y, event->x,event->y); x = event->x; y = event->y; return TRUE; } Нарисовать линию используя стиль текущего окна Обновление координат
16 16/20 Усложненный пример - 2 Цель: написать приложение с кнопками Потребуется Разобраться с расположением элементов Создать необходимый контейнер Создать кнопки и поместить в контейнер Создать и зарегистрировать обработчики нажатий Прикрепить контейнер к главному окну Показать окно
17 17/20 Работа с диалоговым окном int main (int argc, char **argv) { // Инициализационная часть.... table = gtk_table_new(3,3,TRUE); for (i=0;i
18 18/20 Что еще не рассмотрено Элементы управления GtkRadioButtons Меню ( HildonAppMenu ) Диалоги ( HildonNote, HildonBanner, HildonPickerDialog, HildonWizardDialog ) Работа в сети WiFi, Bluetooth Выход в интернет библиотека LibConIC
19 19/20 Ссылки Главная ссылка :) Руководство для разработчиков Maemo Developer_Guide Developer_Guide Туториал по GTK для новичков Где разместить проект
20 20/20 Спасибо за внимание!
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.