Fix android compile
This commit is contained in:
@@ -1,24 +1,21 @@
|
||||
|
||||
#include "android_system.h"
|
||||
#include <iron_system.h>
|
||||
#define EGL_NO_PLATFORM_SPECIFIC_TYPES
|
||||
#include <EGL/egl.h>
|
||||
#include <iron_gpu.h>
|
||||
#include <android/sensor.h>
|
||||
#include <android/window.h>
|
||||
#include "android_native_app_glue.h"
|
||||
#include <iron_thread.h>
|
||||
#include <iron_video.h>
|
||||
#include <unistd.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <assert.h>
|
||||
#include <time.h>
|
||||
#include <sys/time.h>
|
||||
#include <iron_system.h>
|
||||
#include <iron_gpu.h>
|
||||
#include <iron_file.h>
|
||||
#include <iron_thread.h>
|
||||
#include <iron_video.h>
|
||||
#include <android/sensor.h>
|
||||
#include <android/window.h>
|
||||
#include "android_native_app_glue.h"
|
||||
#include <vulkan/vulkan_android.h>
|
||||
#include <vulkan/vulkan_core.h>
|
||||
#include <sys/time.h>
|
||||
#include <time.h>
|
||||
#include <iron_file.h>
|
||||
#define CLASS_NAME "android/app/NativeActivity"
|
||||
|
||||
typedef struct {
|
||||
bool available;
|
||||
@@ -170,6 +167,20 @@ static bool isGamepadEvent(AInputEvent *event) {
|
||||
(AInputEvent_getSource(event) & AINPUT_SOURCE_DPAD) == AINPUT_SOURCE_DPAD);
|
||||
}
|
||||
|
||||
const char *iron_gamepad_vendor(int gamepad) {
|
||||
return "Google";
|
||||
}
|
||||
|
||||
const char *iron_gamepad_product_name(int gamepad) {
|
||||
return "gamepad";
|
||||
}
|
||||
|
||||
bool iron_gamepad_connected(int num) {
|
||||
return num == 0;
|
||||
}
|
||||
|
||||
void iron_gamepad_rumble(int gamepad, float left, float right) {}
|
||||
|
||||
#endif
|
||||
|
||||
static bool isPenEvent(AInputEvent *event) {
|
||||
@@ -245,9 +256,9 @@ static int32_t input(struct android_app *app, AInputEvent *event) {
|
||||
touchInput(event);
|
||||
return 1;
|
||||
}
|
||||
else if ((source & AINPUT_SOURCE_JOYSTICK) == AINPUT_SOURCE_JOYSTICK) {
|
||||
// int id = AInputEvent_getDeviceId(event);
|
||||
|
||||
#ifdef WITH_GAMEPAD
|
||||
else if ((source & AINPUT_SOURCE_JOYSTICK) == AINPUT_SOURCE_JOYSTICK) {
|
||||
float x = AMotionEvent_getAxisValue(event, AMOTION_EVENT_AXIS_X, 0);
|
||||
if (x != last_x) {
|
||||
iron_internal_gamepad_trigger_axis(0, 0, x);
|
||||
@@ -273,7 +284,6 @@ static int32_t input(struct android_app *app, AInputEvent *event) {
|
||||
}
|
||||
|
||||
float hat_x = AMotionEvent_getAxisValue(event, AMOTION_EVENT_AXIS_HAT_X, 0);
|
||||
|
||||
bool hat_left = false;
|
||||
bool hat_right = false;
|
||||
if (hat_x < -0.5f) {
|
||||
@@ -284,7 +294,6 @@ static int32_t input(struct android_app *app, AInputEvent *event) {
|
||||
}
|
||||
|
||||
float hat_y = AMotionEvent_getAxisValue(event, AMOTION_EVENT_AXIS_HAT_Y, 0);
|
||||
|
||||
bool hat_up = false;
|
||||
bool hat_down = false;
|
||||
if (hat_y < -0.5f) {
|
||||
@@ -298,25 +307,23 @@ static int32_t input(struct android_app *app, AInputEvent *event) {
|
||||
iron_internal_gamepad_trigger_button(0, 14, hat_left ? 1.0f : 0.0f);
|
||||
last_hat_left = hat_left;
|
||||
}
|
||||
|
||||
if (hat_right != last_hat_right) {
|
||||
iron_internal_gamepad_trigger_button(0, 15, hat_right ? 1.0f : 0.0f);
|
||||
last_hat_right = hat_right;
|
||||
}
|
||||
|
||||
if (hat_up != last_hat_up) {
|
||||
iron_internal_gamepad_trigger_button(0, 12, hat_up ? 1.0f : 0.0f);
|
||||
last_hat_up = hat_up;
|
||||
}
|
||||
|
||||
if (hat_down != last_hat_down) {
|
||||
iron_internal_gamepad_trigger_button(0, 13, hat_down ? 1.0f : 0.0f);
|
||||
last_hat_down = hat_down;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
else if (AInputEvent_getType(event) == AINPUT_EVENT_TYPE_KEY) {
|
||||
int32_t code = AKeyEvent_getKeyCode(event);
|
||||
|
||||
@@ -406,19 +413,15 @@ static int32_t input(struct android_app *app, AInputEvent *event) {
|
||||
case AKEYCODE_NUMPAD_ENTER:
|
||||
iron_internal_keyboard_trigger_key_down(IRON_KEY_RETURN);
|
||||
return 1;
|
||||
case AKEYCODE_BACK:
|
||||
iron_internal_keyboard_trigger_key_down(IRON_KEY_BACK);
|
||||
return 1;
|
||||
|
||||
#ifdef WITH_GAMEPAD
|
||||
case AKEYCODE_DPAD_CENTER:
|
||||
case AKEYCODE_BUTTON_B:
|
||||
iron_internal_gamepad_trigger_button(0, 1, 1);
|
||||
return 1;
|
||||
case AKEYCODE_BACK:
|
||||
if (AKeyEvent_getMetaState(event) & AMETA_ALT_ON) { // Xperia Play
|
||||
iron_internal_gamepad_trigger_button(0, 1, 1);
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
iron_internal_keyboard_trigger_key_down(IRON_KEY_BACK);
|
||||
return 1;
|
||||
}
|
||||
case AKEYCODE_BUTTON_A:
|
||||
iron_internal_gamepad_trigger_button(0, 0, 1);
|
||||
return 1;
|
||||
@@ -452,33 +455,51 @@ static int32_t input(struct android_app *app, AInputEvent *event) {
|
||||
case AKEYCODE_BUTTON_THUMBR:
|
||||
iron_internal_gamepad_trigger_button(0, 11, 1);
|
||||
return 1;
|
||||
case AKEYCODE_DPAD_UP:
|
||||
if (isGamepadEvent(event))
|
||||
iron_internal_gamepad_trigger_button(0, 12, 1);
|
||||
else
|
||||
iron_internal_keyboard_trigger_key_down(IRON_KEY_UP);
|
||||
return 1;
|
||||
case AKEYCODE_DPAD_DOWN:
|
||||
if (isGamepadEvent(event))
|
||||
iron_internal_gamepad_trigger_button(0, 13, 1);
|
||||
else
|
||||
iron_internal_keyboard_trigger_key_down(IRON_KEY_DOWN);
|
||||
return 1;
|
||||
case AKEYCODE_DPAD_LEFT:
|
||||
if (isGamepadEvent(event))
|
||||
iron_internal_gamepad_trigger_button(0, 14, 1);
|
||||
else
|
||||
iron_internal_keyboard_trigger_key_down(IRON_KEY_LEFT);
|
||||
return 1;
|
||||
case AKEYCODE_DPAD_RIGHT:
|
||||
if (isGamepadEvent(event))
|
||||
iron_internal_gamepad_trigger_button(0, 15, 1);
|
||||
else
|
||||
iron_internal_keyboard_trigger_key_down(IRON_KEY_RIGHT);
|
||||
return 1;
|
||||
case AKEYCODE_BUTTON_MODE:
|
||||
iron_internal_gamepad_trigger_button(0, 16, 1);
|
||||
return 1;
|
||||
#endif
|
||||
|
||||
case AKEYCODE_DPAD_UP: {
|
||||
#ifdef WITH_GAMEPAD
|
||||
if (isGamepadEvent(event)) {
|
||||
iron_internal_gamepad_trigger_button(0, 12, 1);
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
iron_internal_keyboard_trigger_key_down(IRON_KEY_UP);
|
||||
return 1;
|
||||
}
|
||||
case AKEYCODE_DPAD_DOWN: {
|
||||
#ifdef WITH_GAMEPAD
|
||||
if (isGamepadEvent(event)) {
|
||||
iron_internal_gamepad_trigger_button(0, 13, 1);
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
iron_internal_keyboard_trigger_key_down(IRON_KEY_DOWN);
|
||||
return 1;
|
||||
}
|
||||
case AKEYCODE_DPAD_LEFT: {
|
||||
#ifdef WITH_GAMEPAD
|
||||
if (isGamepadEvent(event)) {
|
||||
iron_internal_gamepad_trigger_button(0, 14, 1);
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
iron_internal_keyboard_trigger_key_down(IRON_KEY_LEFT);
|
||||
return 1;
|
||||
}
|
||||
case AKEYCODE_DPAD_RIGHT: {
|
||||
#ifdef WITH_GAMEPAD
|
||||
if (isGamepadEvent(event)) {
|
||||
iron_internal_gamepad_trigger_button(0, 15, 1);
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
iron_internal_keyboard_trigger_key_down(IRON_KEY_RIGHT);
|
||||
return 1;
|
||||
}
|
||||
case AKEYCODE_STAR:
|
||||
case AKEYCODE_NUMPAD_MULTIPLY:
|
||||
iron_internal_keyboard_trigger_key_down(IRON_KEY_MULTIPLY);
|
||||
@@ -552,21 +573,6 @@ static int32_t input(struct android_app *app, AInputEvent *event) {
|
||||
iron_internal_keyboard_trigger_key_down(IRON_KEY_PLUS);
|
||||
iron_internal_keyboard_trigger_key_press('+');
|
||||
return 1;
|
||||
// (DK) Amazon FireTV remote/controller mappings
|
||||
// (DK) TODO handle multiple pads (up to 4 possible)
|
||||
case AKEYCODE_MENU:
|
||||
iron_internal_gamepad_trigger_button(0, 9, 1);
|
||||
return 1;
|
||||
case AKEYCODE_MEDIA_REWIND:
|
||||
iron_internal_gamepad_trigger_button(0, 10, 1);
|
||||
return 1;
|
||||
case AKEYCODE_MEDIA_FAST_FORWARD:
|
||||
iron_internal_gamepad_trigger_button(0, 11, 1);
|
||||
return 1;
|
||||
case AKEYCODE_MEDIA_PLAY_PAUSE:
|
||||
iron_internal_gamepad_trigger_button(0, 12, 1);
|
||||
return 1;
|
||||
// (DK) /Amazon FireTV remote/controller mappings
|
||||
default:
|
||||
if (code >= AKEYCODE_NUMPAD_0 && code <= AKEYCODE_NUMPAD_9) {
|
||||
iron_internal_keyboard_trigger_key_down(code + IRON_KEY_NUMPAD_0 - AKEYCODE_NUMPAD_0);
|
||||
@@ -642,6 +648,7 @@ static int32_t input(struct android_app *app, AInputEvent *event) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
switch (code) {
|
||||
case AKEYCODE_SHIFT_LEFT:
|
||||
case AKEYCODE_SHIFT_RIGHT:
|
||||
@@ -653,19 +660,15 @@ static int32_t input(struct android_app *app, AInputEvent *event) {
|
||||
case AKEYCODE_ENTER:
|
||||
iron_internal_keyboard_trigger_key_up(IRON_KEY_RETURN);
|
||||
return 1;
|
||||
case AKEYCODE_BACK:
|
||||
iron_internal_keyboard_trigger_key_up(IRON_KEY_BACK);
|
||||
return 1;
|
||||
|
||||
#ifdef WITH_GAMEPAD
|
||||
case AKEYCODE_DPAD_CENTER:
|
||||
case AKEYCODE_BUTTON_B:
|
||||
iron_internal_gamepad_trigger_button(0, 1, 0);
|
||||
return 1;
|
||||
case AKEYCODE_BACK:
|
||||
if (AKeyEvent_getMetaState(event) & AMETA_ALT_ON) { // Xperia Play
|
||||
iron_internal_gamepad_trigger_button(0, 1, 0);
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
iron_internal_keyboard_trigger_key_up(IRON_KEY_BACK);
|
||||
return 1;
|
||||
}
|
||||
case AKEYCODE_BUTTON_A:
|
||||
iron_internal_gamepad_trigger_button(0, 0, 0);
|
||||
return 1;
|
||||
@@ -699,33 +702,51 @@ static int32_t input(struct android_app *app, AInputEvent *event) {
|
||||
case AKEYCODE_BUTTON_THUMBR:
|
||||
iron_internal_gamepad_trigger_button(0, 11, 0);
|
||||
return 1;
|
||||
case AKEYCODE_DPAD_UP:
|
||||
if (isGamepadEvent(event))
|
||||
iron_internal_gamepad_trigger_button(0, 12, 0);
|
||||
else
|
||||
iron_internal_keyboard_trigger_key_up(IRON_KEY_UP);
|
||||
return 1;
|
||||
case AKEYCODE_DPAD_DOWN:
|
||||
if (isGamepadEvent(event))
|
||||
iron_internal_gamepad_trigger_button(0, 13, 0);
|
||||
else
|
||||
iron_internal_keyboard_trigger_key_up(IRON_KEY_DOWN);
|
||||
return 1;
|
||||
case AKEYCODE_DPAD_LEFT:
|
||||
if (isGamepadEvent(event))
|
||||
iron_internal_gamepad_trigger_button(0, 14, 0);
|
||||
else
|
||||
iron_internal_keyboard_trigger_key_up(IRON_KEY_LEFT);
|
||||
return 1;
|
||||
case AKEYCODE_DPAD_RIGHT:
|
||||
if (isGamepadEvent(event))
|
||||
iron_internal_gamepad_trigger_button(0, 15, 0);
|
||||
else
|
||||
iron_internal_keyboard_trigger_key_up(IRON_KEY_RIGHT);
|
||||
return 1;
|
||||
case AKEYCODE_BUTTON_MODE:
|
||||
iron_internal_gamepad_trigger_button(0, 16, 0);
|
||||
return 1;
|
||||
#endif
|
||||
|
||||
case AKEYCODE_DPAD_UP: {
|
||||
#ifdef WITH_GAMEPAD
|
||||
if (isGamepadEvent(event)) {
|
||||
iron_internal_gamepad_trigger_button(0, 12, 0);
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
iron_internal_keyboard_trigger_key_up(IRON_KEY_UP);
|
||||
return 1;
|
||||
}
|
||||
case AKEYCODE_DPAD_DOWN: {
|
||||
#ifdef WITH_GAMEPAD
|
||||
if (isGamepadEvent(event)) {
|
||||
iron_internal_gamepad_trigger_button(0, 13, 0);
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
iron_internal_keyboard_trigger_key_up(IRON_KEY_DOWN);
|
||||
return 1;
|
||||
}
|
||||
case AKEYCODE_DPAD_LEFT: {
|
||||
#ifdef WITH_GAMEPAD
|
||||
if (isGamepadEvent(event)) {
|
||||
iron_internal_gamepad_trigger_button(0, 14, 0);
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
iron_internal_keyboard_trigger_key_up(IRON_KEY_LEFT);
|
||||
return 1;
|
||||
}
|
||||
case AKEYCODE_DPAD_RIGHT: {
|
||||
#ifdef WITH_GAMEPAD
|
||||
if (isGamepadEvent(event)) {
|
||||
iron_internal_gamepad_trigger_button(0, 15, 0);
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
iron_internal_keyboard_trigger_key_up(IRON_KEY_RIGHT);
|
||||
return 1;
|
||||
}
|
||||
case AKEYCODE_STAR:
|
||||
case AKEYCODE_NUMPAD_MULTIPLY:
|
||||
iron_internal_keyboard_trigger_key_up(IRON_KEY_MULTIPLY);
|
||||
@@ -783,22 +804,7 @@ static int32_t input(struct android_app *app, AInputEvent *event) {
|
||||
case AKEYCODE_NUMPAD_ADD:
|
||||
iron_internal_keyboard_trigger_key_up(IRON_KEY_PLUS);
|
||||
return 1;
|
||||
// (DK) Amazon FireTV remote/controller mappings
|
||||
// (DK) TODO handle multiple pads (up to 4 possible)
|
||||
case AKEYCODE_MENU:
|
||||
iron_internal_gamepad_trigger_button(0, 9, 0);
|
||||
return 1;
|
||||
case AKEYCODE_MEDIA_REWIND:
|
||||
iron_internal_gamepad_trigger_button(0, 10, 0);
|
||||
return 1;
|
||||
case AKEYCODE_MEDIA_FAST_FORWARD:
|
||||
iron_internal_gamepad_trigger_button(0, 11, 0);
|
||||
return 1;
|
||||
case AKEYCODE_MEDIA_PLAY_PAUSE:
|
||||
iron_internal_gamepad_trigger_button(0, 12, 0);
|
||||
return 1;
|
||||
// (DK) /Amazon FireTV remote/controller mappings
|
||||
default:
|
||||
default: {
|
||||
if (code >= AKEYCODE_NUMPAD_0 && code <= AKEYCODE_NUMPAD_9) {
|
||||
iron_internal_keyboard_trigger_key_up(code + IRON_KEY_NUMPAD_0 - AKEYCODE_NUMPAD_0);
|
||||
return 1;
|
||||
@@ -812,6 +818,7 @@ static int32_t input(struct android_app *app, AInputEvent *event) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
@@ -860,12 +867,10 @@ static void cmd(struct android_app *app, int32_t cmd) {
|
||||
break;
|
||||
case APP_CMD_RESUME:
|
||||
iron_internal_resume_callback();
|
||||
//resumeAudio();
|
||||
paused = false;
|
||||
break;
|
||||
case APP_CMD_PAUSE:
|
||||
iron_internal_pause_callback();
|
||||
//pauseAudio();
|
||||
paused = true;
|
||||
break;
|
||||
case APP_CMD_STOP:
|
||||
@@ -1096,16 +1101,6 @@ bool iron_internal_handle_messages(void) {
|
||||
iron_internal_call_resize_callback(width, height);
|
||||
}
|
||||
|
||||
// Get screen rotation
|
||||
/*
|
||||
JNIEnv* env;
|
||||
(*activity->vm)->AttachCurrentThread(&env, NULL);
|
||||
jclass ironActivityClass = IronAndroid::findClass(env, "org.armory3d.IronActivity");
|
||||
jmethodID ironActivityGetRotation = (*env)->GetStaticMethodID(ironActivityClass, "getRotation", "()I");
|
||||
screenRotation = (*env)->CallStaticIntMethod(ironActivityClass, ironActivityGetRotation);
|
||||
(*activity->vm)->DetachCurrentThread();
|
||||
*/
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1130,12 +1125,6 @@ void iron_mouse_get_position(int *x, int *y) {
|
||||
|
||||
void iron_mouse_set_cursor(int cursor_index) {}
|
||||
|
||||
bool iron_gamepad_connected(int num) {
|
||||
return num == 0;
|
||||
}
|
||||
|
||||
void iron_gamepad_rumble(int gamepad, float left, float right) {}
|
||||
|
||||
void initAndroidFileReader();
|
||||
void IronAndroidVideoInit();
|
||||
|
||||
@@ -1203,18 +1192,6 @@ void iron_internal_shutdown(void) {
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef WITH_GAMEPAD
|
||||
|
||||
const char *iron_gamepad_vendor(int gamepad) {
|
||||
return "Google";
|
||||
}
|
||||
|
||||
const char *iron_gamepad_product_name(int gamepad) {
|
||||
return "gamepad";
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
void initAndroidFileReader(void) {
|
||||
if (activity == NULL) {
|
||||
iron_error("Android activity is NULL");
|
||||
@@ -1225,7 +1202,7 @@ void initAndroidFileReader(void) {
|
||||
|
||||
(*activity->vm)->AttachCurrentThread(activity->vm, &env, NULL);
|
||||
|
||||
jclass android_app_NativeActivity = (*env)->FindClass(env, CLASS_NAME);
|
||||
jclass android_app_NativeActivity = (*env)->FindClass(env, "android/app/NativeActivity");
|
||||
jmethodID getExternalFilesDir = (*env)->GetMethodID(env, android_app_NativeActivity, "getExternalFilesDir", "(Ljava/lang/String;)Ljava/io/File;");
|
||||
jobject file = (*env)->CallObjectMethod(env, activity->clazz, getExternalFilesDir, NULL);
|
||||
jclass java_io_File = (*env)->FindClass(env, "java/io/File");
|
||||
|
||||
Reference in New Issue
Block a user