Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Программирование под Maemo

Содержание

/20ПланЧто такое MaemoПрограммирование под MaemoРабота в Scratchbox-еПростой примерРисование в окнеРабота с диалоговым окномЧто еще не рассмотреноСсылки
Программирование под MaemoМаличенко ДмитрийСПБ ГУАП /20ПланЧто такое MaemoПрограммирование под MaemoРабота в Scratchbox-еПростой примерРисование в окнеРабота с диалоговым окномЧто еще не рассмотреноСсылки /20Что такое MaemoMaemo – это платформа для мобильных устройств основанная на Debian /20Какие есть версииПредыдущая – 4 (Diablo)Библиотека GUI: GTKИнтерфейс: стилусТекущая – 5 (Fremantle)Библиотека /20Целевое устройствоN900 Умеет звонить Линукс внутри Многозадачность WiFi, bluetooth GPS Сенсоры Интерфейс: /20Программирование под Maemo: особенностиМобильное устройствоМаленький экранИнтерфейс: палец/стилусСенсорыКак облагородить интерфейс?Библиотека Hildon – надстройка /20Программирование под Maemo: инструментыТребуетсяОснованный на Debian дистрибутив LinuxScratchbox – набор инструментов для /20Программирование под Maemo: связь с устройствомКопирование файлов по USB на встроенную флешку /20Работа в scratchbox - 1Используются два окружения X86 для разработки, тестирования и /20Работа в scratchbox - 2Запуск графического приложенияв терминале 1$ Xephyr :2 -host-cursor -screen /20Простой пример#include int main(int argc, char *argv[]){ GtkWidget *window; hildon_gtk_init (&argc, &argv); /20Как собрать в Scratchbox$ /scratchbox/login[sbox-FREMANTLE_X86: ~] > gcc –o hello_world `pkg-config --libs /20Усложненный пример - 1Цель: написать приложение для рисованияПотребуется:Создать главное окно программыСоздать область /20Рисование в окне: функция main#include int main (int argc, char **argv) { /20Рисование в окне:  обработка событийstatic gboolean button_press_event( GtkWidget *widget, GdkEventButton *event /20Усложненный пример - 2Цель: написать приложение с кнопкамиПотребуетсяРазобраться с расположением элементовСоздать необходимый /20Работа с диалоговым окномint main (int argc, char **argv){	// Инициализационная часть /20Что еще не рассмотреноЭлементы управленияGtkRadioButtons Меню (HildonAppMenu)Диалоги (HildonNote, HildonBanner, HildonPickerDialog, HildonWizardDialog) Работа /20СсылкиГлавная ссылка :)www.maemo.org Руководство для разработчиков Maemohttp://wiki.maemo.org/Documentation/Maemo_5_Developer_Guide Туториал по GTK для новичковhttp://zetcode.com/tutorials/gtktutorial/Где разместить проектhttps://garage.maemo.org/ /20Спасибо за внимание!
Слайды презентации

Слайд 2 /20
План
Что такое Maemo
Программирование под Maemo
Работа в Scratchbox-е
Простой пример
Рисование

/20ПланЧто такое MaemoПрограммирование под MaemoРабота в Scratchbox-еПростой примерРисование в окнеРабота с диалоговым окномЧто еще не рассмотреноСсылки

в окне
Работа с диалоговым окном
Что еще не рассмотрено
Ссылки


Слайд 3 /20
Что такое Maemo
Maemo – это платформа для мобильных

/20Что такое MaemoMaemo – это платформа для мобильных устройств основанная на Debian (www.maemo.org)Устройства на базе Maemo:N900N810N800N770

устройств основанная на Debian
(www.maemo.org)
Устройства на базе Maemo:
N900
N810
N800
N770


Слайд 4 /20
Какие есть версии
Предыдущая – 4 (Diablo)
Библиотека GUI: GTK
Интерфейс:

/20Какие есть версииПредыдущая – 4 (Diablo)Библиотека GUI: GTKИнтерфейс: стилусТекущая – 5

стилус
Текущая – 5 (Fremantle)
Библиотека GUI: GTK
Интерфейс: палец + стилус
Будущая

версия – 6 (Harmattan)
Библиотека GUI: Qt
Интерфейс: только палец

Слайд 5 /20
Целевое устройство
N900

Умеет звонить
Линукс внутри
Многозадачность
WiFi,

/20Целевое устройствоN900 Умеет звонить Линукс внутри Многозадачность WiFi, bluetooth GPS Сенсоры

bluetooth
GPS
Сенсоры
Интерфейс: палец + стилус
Клавиатура: настоящая

+ виртуальная


Слайд 6 /20
Программирование под Maemo: особенности
Мобильное устройство
Маленький экран
Интерфейс: палец/стилус
Сенсоры
Как облагородить

/20Программирование под Maemo: особенностиМобильное устройствоМаленький экранИнтерфейс: палец/стилусСенсорыКак облагородить интерфейс?Библиотека Hildon –

интерфейс?
Библиотека Hildon – надстройка над GTK+
Использование меньшего числа элементов

управления

Слайд 7 /20
Программирование под Maemo: инструменты
Требуется
Основанный на Debian дистрибутив Linux
Scratchbox

/20Программирование под Maemo: инструментыТребуетсяОснованный на Debian дистрибутив LinuxScratchbox – набор инструментов

– набор инструментов для кросс компиляции (поддерживает ARM, X86)
Maemo

SDK
Инструкция по установке
http://maemo.org/development/

Слайд 8 /20
Программирование под Maemo: связь с устройством
Копирование файлов по

/20Программирование под Maemo: связь с устройствомКопирование файлов по USB на встроенную

USB на встроенную флешку (/home/user/MyDocs)
USB Networking
есть вспомогательные утилиты для

запуска на устройстве
WiFi + ssh/scp

Слайд 9 /20
Работа в scratchbox - 1
Используются два окружения
X86

/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 /20
Работа в scratchbox - 2
Запуск графического приложения
в терминале

/20Работа в scratchbox - 2Запуск графического приложенияв терминале 1$ Xephyr :2 -host-cursor

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
http://wiki.maemo.org/Documentation/Maemo_5_Developer_Guide/Development_Environment/Maemo_Eclipse_Integration

http://esbox.garage.maemo.org/2nd_edition/index.html


Слайд 11 /20
Простой пример
#include

int main(int argc, char *argv[])
{
GtkWidget

/20Простой пример#include int main(int argc, char *argv[]){ GtkWidget *window; hildon_gtk_init (&argc,

*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 /20
Как собрать в Scratchbox
$ /scratchbox/login

[sbox-FREMANTLE_X86: ~] > gcc

/20Как собрать в Scratchbox$ /scratchbox/login[sbox-FREMANTLE_X86: ~] > gcc –o hello_world `pkg-config

–o hello_world `pkg-config --libs --cflags hildon-1` hello_world.c
[sbox-FREMANTLE_X86: ~] >

./hello_world


pkg-config – возвращает пути к заголовочным файлам и к файлам библиотеки


Слайд 13 /20
Усложненный пример - 1
Цель: написать приложение для рисования
Потребуется:
Создать

/20Усложненный пример - 1Цель: написать приложение для рисованияПотребуется:Создать главное окно программыСоздать

главное окно программы
Создать область для рисования
Поставить фильтр на требуемые

события
Зарегистрировать обработчики событий
Требуемые события: нажатие, перемещение, отпускание
Написать логику обработчиков событий

Слайд 14 /20
Рисование в окне: функция main
#include

int main (int argc,

/20Рисование в окне: функция main#include int main (int argc, char **argv)

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 /20
Рисование в окне: обработка событий
static gboolean button_press_event( GtkWidget

/20Рисование в окне: обработка событийstatic gboolean button_press_event( GtkWidget *widget, GdkEventButton *event

*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 /20
Усложненный пример - 2
Цель: написать приложение с кнопками
Потребуется
Разобраться

/20Усложненный пример - 2Цель: написать приложение с кнопкамиПотребуетсяРазобраться с расположением элементовСоздать

с расположением элементов
Создать необходимый контейнер
Создать кнопки и поместить в

контейнер
Создать и зарегистрировать обработчики нажатий
Прикрепить контейнер к главному окну
Показать окно


Слайд 17 /20
Работа с диалоговым окном
int main (int argc, char

/20Работа с диалоговым окномint main (int argc, char **argv){	// Инициализационная часть

**argv)
{
// Инициализационная часть
. .

. .
table = gtk_table_new(3,3,TRUE);
for (i=0;i<3;i++) {
for (j=0;j<3;j++) {
button = hildon_button_new_with_text (HILDON_SIZE_AUTO,
HILDON_BUTTON_ARRANGEMENT_VERTICAL,
" ",
NULL);
gtk_table_attach((GtkTable*)table, button,i,i+1,j,j+1,
GTK_EXPAND, GTK_EXPAND,0,0);
g_signal_connect (G_OBJECT (button), "clicked",
G_CALLBACK (button_clicked), NULL);
}
}
gtk_container_add (GTK_CONTAINER (window),table);
gtk_widget_show_all (GTK_WIDGET (window));
gtk_main ();
return 0;
}

Выделенные аргументы:
левый край кнопки
правый край кнопки
верхний край
нижний край


Слайд 18 /20
Что еще не рассмотрено
Элементы управления
GtkRadioButtons
Меню (HildonAppMenu)
Диалоги (HildonNote,

/20Что еще не рассмотреноЭлементы управленияGtkRadioButtons Меню (HildonAppMenu)Диалоги (HildonNote, HildonBanner, HildonPickerDialog, HildonWizardDialog)

HildonBanner, HildonPickerDialog, HildonWizardDialog)
Работа в сети
WiFi, Bluetooth
Выход в интернет
библиотека

LibConIC

Слайд 19 /20
Ссылки
Главная ссылка :)
www.maemo.org
Руководство для разработчиков Maemo
http://wiki.maemo.org/Documentation/Maemo_5_Developer_Guide
Туториал

/20СсылкиГлавная ссылка :)www.maemo.org Руководство для разработчиков Maemohttp://wiki.maemo.org/Documentation/Maemo_5_Developer_Guide Туториал по GTK для новичковhttp://zetcode.com/tutorials/gtktutorial/Где разместить проектhttps://garage.maemo.org/

по GTK для новичков
http://zetcode.com/tutorials/gtktutorial/
Где разместить проект
https://garage.maemo.org/


  • Имя файла: programmirovanie-pod-maemo.pptx
  • Количество просмотров: 118
  • Количество скачиваний: 0