Covellite++  Version: 2.3.0 Revision: ??? Platform: x64 Build: 23:13 04.01.2025
Кроссплатформенный фреймворк для разработки приложений на С++
Загрузка...
Поиск...
Не найдено
android_native_app_glue.h
1/*
2 * Copyright (C) 2010 The Android Open Source Project
3 *
4 * лицензировано по лицензии Apache License, версия 2.0 ( "Лицензия");
5 *этот файл можно использовать только в соответствии с лицензией.
6 *Копию лицензии можно получить на веб-сайте
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 *Если только не требуется в соответствии с применимым законодательством или согласовано в письменном виде, программное обеспечение
11 * распространяется в рамках лицензии на УСЛОВИЯХ "КАК ЕСТЬ",
12 * БЕЗ ГАРАНТИЙ И УСЛОВИЙ ЛЮБОГО РОДА, явно выраженных и подразумеваемых.
13 * См. лицензию для получения информации об определенных разрешениях по использованию языка и
14 * ограничениях в рамках лицензии.
15 *
16 */
17
18#ifndef _ANDROID_NATIVE_APP_GLUE_H
19#define _ANDROID_NATIVE_APP_GLUE_H
20
21#include <poll.h>
22#include <pthread.h>
23#include <sched.h>
24
25#include <android/configuration.h>
26#include <android/looper.h>
27#include <android/native_activity.h>
28
29#ifdef __cplusplus
30extern "C" {
31#endif
32
84struct android_app;
85
91 // Идентификатор данного источника. Может быть LOOPER_ID_MAIN или
92 // LOOPER_ID_INPUT.
93 int32_t id;
94
95 // android_app, с которым связан данный идентификатор.
96 struct android_app* app;
97
98 // Функция, вызываемая для стандартной обработки данных из
99 // этого источника.
100 void (*process)(struct android_app* app, struct android_poll_source* source);
101};
102
112 // Приложение может поместить указатель на свой собственный объект состояния
113 // здесь, если хочет.
114 void* userData;
115
116 // Введите здесь код функции для обработки основных команд приложения (APP_CMD_*)
117 void (*onAppCmd)(struct android_app* app, int32_t cmd);
118
119 // Введите здесь код функции для обработки входных событий. В этот момент
120 // событие уже было предварительно отправлено и будет завершено при
121 // возврате. Верните 1, если событие обработано, 0 — для любой диспетчеризации
122 // по умолчанию.
123 int32_t (*onInputEvent)(struct android_app* app, AInputEvent* event);
124
125 // Экземпляр объекта ANativeActivity, в котором выполняется это приложение.
126 ANativeActivity* activity;
127
128 // Текущая конфигурация, в которой выполняется это приложение.
129 AConfiguration* config;
130
131 // Это последнее сохраненное состояние экземпляра, предоставленное во время создания.
132 // Значение равно NULL, если состояния не было. Можно использовать это по мере необходимости;
133 // память останется доступной до вызова android_app_exec_cmd() для
134 // APP_CMD_RESUME, после чего она будет освобождена, а savedState получит значение NULL.
135 // Эти переменные необходимо изменять только при обработке APP_CMD_SAVE_STATE,
136 // когда их значения будут инициализироваться в NULL и можно будет выполнить malloc для
137 // состояния и поместить здесь информацию. В этом случае память будет
138 // освобождена позднее.
139 void* savedState;
140 size_t savedStateSize;
141
142 // ALooper, связанный с потоком приложения.
143 ALooper* looper;
144
145 // Если значение не равно NULL, то это входная очередь, из которой приложение будет
146 // получать входные события пользователя.
147 AInputQueue* inputQueue;
148
149 // Если значение не равно NULL, то это поверхность окна, в котором приложение может рисовать.
150 ANativeWindow* window;
151
152 // Текущий прямоугольник содержимого окна. Это область, в которой
153 // должно помещаться содержимое окна, чтобы его видел пользователь.
154 ARect contentRect;
155
156 // Текущее состояние действия приложения. Может быть APP_CMD_START,
157 // APP_CMD_RESUME, APP_CMD_PAUSE или APP_CMD_STOP; см. ниже.
158 int activityState;
159
160 // Значение не равно нулю, когда NativeActivity приложения
161 // разрушается и ожидает завершения потока приложения.
162 int destroyRequested;
163
164 // -------------------------------------------------
165 // Ниже показан "частная" реализация кода прилипания.
166
167 pthread_mutex_t mutex;
168 pthread_cond_t cond;
169
170 int msgread;
171 int msgwrite;
172
173 pthread_t thread;
174
175 struct android_poll_source cmdPollSource;
176 struct android_poll_source inputPollSource;
177
178 int running;
179 int stateSaved;
180 int destroyed;
181 int redrawNeeded;
182 AInputQueue* pendingInputQueue;
183 ANativeWindow* pendingWindow;
184 ARect pendingContentRect;
185};
186
187enum {
195 LOOPER_ID_MAIN = 1,
196
204 LOOPER_ID_INPUT = 2,
205
209 LOOPER_ID_USER = 3,
210};
211
218enum {
224 APP_CMD_INPUT_CHANGED,
225
230 APP_CMD_INIT_WINDOW,
231
238 APP_CMD_TERM_WINDOW,
239
244 APP_CMD_WINDOW_RESIZED,
245
251 APP_CMD_WINDOW_REDRAW_NEEDED,
252
258 APP_CMD_CONTENT_RECT_CHANGED,
259
264 APP_CMD_GAINED_FOCUS,
265
270 APP_CMD_LOST_FOCUS,
271
275 APP_CMD_CONFIG_CHANGED,
276
281 APP_CMD_LOW_MEMORY,
282
286 APP_CMD_START,
287
291 APP_CMD_RESUME,
292
300 APP_CMD_SAVE_STATE,
301
305 APP_CMD_PAUSE,
306
310 APP_CMD_STOP,
311
316 APP_CMD_DESTROY,
317};
318
323int8_t android_app_read_cmd(struct android_app* android_app);
324
330void android_app_pre_exec_cmd(struct android_app* android_app, int8_t cmd);
331
337void android_app_post_exec_cmd(struct android_app* android_app, int8_t cmd);
338
343extern void android_main(struct android_app* app);
344
345void ANativeActivity_onCreate(ANativeActivity *, void *, size_t);
346
347#ifdef __cplusplus
348}
349#endif
350
351#endif /* _ANDROID_NATIVE_APP_GLUE_H */
Definition android_native_app_glue.h:90
Definition android_native_app_glue.h:111