dl
dl_android.h
浏览该文件的文档.
1
12#pragma once
13
14#include "system/dl_platform.h"
15#if DL_PLATFORM == DL_PLATFORM_ANDROID
16#include <android/native_window_jni.h>
17#include <game-activity/native_app_glue/android_native_app_glue.h>
18#include <android/asset_manager_jni.h>
19#include <android/asset_manager.h>
20
21#include "io/dl_log.h"
22#include "base/dl_type_def.h"
23#include "system/dl_time.h"
24
25namespace dl
26{
27
28// 安卓输入事件处理
29int32_t Android_HandleInput(android_app* app);
30
31// 安卓事件处理
32bool Android_ProcessEvent(android_app* app);
33
34// 安卓app_cmd处理
35void Android_OnAppCmd(android_app *app, int32_t cmd);
36
39{
40 android_app* _app;
41 int _surfaceState;// 0.无效 1.安卓已创建,但未重置交换链 2.正常
42 Point _sizeWindow; // 0表示窗口未就绪
43 bool _bRequestDestroy;// 用户层的中止
44 bool _bPause;// Activity触发onPause等切换,会丢失surface
45 AndroidData(android_app* app):
46 _app{app},
49 _bRequestDestroy{false},
50 _bPause{false}
51 {}
52 void Init()
53 {
54 // 过滤器
55 android_app_set_key_event_filter(_app, NULL);
56 android_app_set_motion_event_filter(_app, NULL);
57
58 _app->onAppCmd = Android_OnAppCmd;
59 //app->activity->callbacks->onContentRectChanged = on_content_rect_changed;
60 _app->userData = this;
61 do
62 {
64 {
65 log_info0("Android app has been destroyed by the OS!");
66 return ;//ExitCode::Close;
67 }
68 } while (_surfaceState == 0);
69 }
70};
71extern AndroidData* g_android;
72
73// glfw接口安卓平台封装
74struct GLFWwindow{};
75struct GLFWmonitor{};
76
77inline bool glfwInit() { return true; }
78
79inline bool glfwWindowShouldClose(void *window)
80{
81 return g_android->_app->destroyRequested || g_android->_bRequestDestroy;
82}
83
84inline void glfwGetFramebufferSize(void *window, int *w, int *h)
85{
86 *w = g_android->_sizeWindow[0];
87 *h = g_android->_sizeWindow[1];
88}
89
90inline const char **glfwGetRequiredInstanceExtensions(uint32_t *count)
91{
92 static const char *ret[] = {
93 "VK_KHR_surface",
94 "VK_KHR_android_surface"
95 };
96 *count = 2;
97 return ret;
98}
99
100inline void glfwWaitEvents()
101{
103}
104
105inline void glfwDestroyWindow(void *window)
106{
107 // nothing to do
108}
109
110inline void glfwTerminate()
111{
112 // nothing to do
113}
114
115inline void glfwSetCursorPos(void *window, int x, int y)
116{
117 // nothing to do
118}
119
120inline void glfwSetWindowShouldClose(void *window, int)
121{
122 g_android->_bRequestDestroy = true;
123}
124
125inline void glfwSetClipboardString(void *, const char *)
126{
127 // todo
128}
129
130inline const char* glfwGetClipboardString(void *)
131{
132 return "glfwGetClipboardString not support!";
133}
134
135
136inline void glfwGetWindowSize(void *window, int *w, int *h)
137{
138 *w = g_android->_sizeWindow[0];
139 *h = g_android->_sizeWindow[1];
140}
141
142inline void glfwGetMonitorWorkarea(void *monitor, int *x, int *y, int *w, int *h)
143{
144 *x = 0;
145 *y = 0;
146 *w = g_android->_sizeWindow[0];
147 *h = g_android->_sizeWindow[1];
148}
149
150inline void glfwSetWindowPos(void *window, int x, int y)
151{
152 // nothing to do
153}
154
155inline void glfwPollEvents()
156{
158}
159
160}
161#endif
日志系统
平台宏
时间相关
通用类型定义
const char ** glfwGetRequiredInstanceExtensions(uint32_t *count)
void glfwWaitEvents()
bool Android_ProcessEvent(android_app *app)
void glfwSetCursorPos(void *window, int x, int y)
void glfwGetMonitorWorkarea(void *monitor, int *x, int *y, int *w, int *h)
void glfwSetWindowPos(void *window, int x, int y)
void Android_OnAppCmd(android_app *app, int32_t cmd)
void glfwPollEvents()
void log_info0(std::string_view str, DL_SOURCE_LOCATION)
void glfwGetWindowSize(void *window, int *w, int *h)
void glfwGetFramebufferSize(void *window, int *w, int *h)
int32_t Android_HandleInput(android_app *app)
bool glfwInit()
void glfwSetWindowShouldClose(void *window, int)
const char * glfwGetClipboardString(void *)
AndroidData * g_android
void glfwSetClipboardString(void *, const char *)
void glfwTerminate()
bool glfwWindowShouldClose(void *window)
void glfwDestroyWindow(void *window)
Point2 Point
AndroidData(android_app *app)
android_app * _app