[android] Load icon types from core

Signed-off-by: Andrei Shkrob <github@shkrob.dev>
This commit is contained in:
Andrei Shkrob
2025-07-20 11:52:35 +02:00
committed by Konstantin Pastbin
parent d9335c0b6c
commit 2ded7e5e2b
23 changed files with 266 additions and 32 deletions

View File

@@ -43,6 +43,8 @@ set(SRC
app/organicmaps/sdk/core/jni_java_methods.cpp
app/organicmaps/sdk/core/logging.cpp
app/organicmaps/sdk/bookmarks/data/BookmarkManager.cpp
app/organicmaps/sdk/bookmarks/data/Icon.cpp
app/organicmaps/sdk/bookmarks/data/Icon.hpp
app/organicmaps/sdk/bookmarks/data/PredefinedColors.cpp
app/organicmaps/sdk/bookmarks/data/PredefinedColors.hpp
app/organicmaps/sdk/DownloadResourcesLegacyActivity.cpp

View File

@@ -0,0 +1,37 @@
#include <jni.h>
#include "app/organicmaps/sdk/core/jni_helper.hpp"
#include "kml/types.hpp"
extern "C"
{
JNIEXPORT jobjectArray JNICALL Java_app_organicmaps_sdk_bookmarks_data_Icon_nativeGetBookmarkIconNames(JNIEnv * env,
jclass)
{
std::vector<std::string> icons;
for (uint16_t i = 0; i < static_cast<uint16_t>(kml::BookmarkIcon::Count); ++i)
icons.emplace_back(kml::DebugPrint(static_cast<kml::BookmarkIcon>(i)));
return jni::ToJavaStringArray(env, icons);
}
}
namespace
{
JNINativeMethod const iconMethods[] = {
{"nativeGetBookmarkIconNames", "()[Ljava/lang/String;",
reinterpret_cast<void *>(&Java_app_organicmaps_sdk_bookmarks_data_Icon_nativeGetBookmarkIconNames)},
};
}
namespace icon
{
jint registerNativeMethods(JNIEnv * env)
{
jclass clazz = env->FindClass("app/organicmaps/sdk/bookmarks/data/Icon");
if (clazz == nullptr)
return JNI_ERR;
return env->RegisterNatives(clazz, iconMethods, std::size(iconMethods));
}
} // namespace icon

View File

@@ -0,0 +1,8 @@
#pragma once
#include <jni.h>
namespace icon
{
jint registerNativeMethods(JNIEnv * env);
} // namespace icon

View File

@@ -21,7 +21,7 @@ Java_app_organicmaps_sdk_bookmarks_data_PredefinedColors_nativeGetPredefinedColo
namespace
{
JNINativeMethod const methods[] = {
JNINativeMethod const predefinedColorsMethods[] = {
{"nativeGetPredefinedColors", "()[I",
reinterpret_cast<void *>(&Java_app_organicmaps_sdk_bookmarks_data_PredefinedColors_nativeGetPredefinedColors)},
};
@@ -35,6 +35,6 @@ jint registerNativeMethods(JNIEnv * env)
if (clazz == nullptr)
return JNI_ERR;
return env->RegisterNatives(clazz, methods, std::size(methods));
return env->RegisterNatives(clazz, predefinedColorsMethods, std::size(predefinedColorsMethods));
}
} // namespace predefined_colors

View File

@@ -5,4 +5,4 @@
namespace predefined_colors
{
jint registerNativeMethods(JNIEnv * env);
}
} // namespace predefined_colors

View File

@@ -7,6 +7,7 @@
#include "base/string_utils.hpp"
#include "app/organicmaps/sdk/bookmarks/data/PredefinedColors.hpp"
#include "app/organicmaps/sdk/bookmarks/data/Icon.hpp"
#include <vector>
@@ -70,6 +71,8 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM * jvm, void *)
{
if (predefined_colors::registerNativeMethods(env) != JNI_OK)
return JNI_ERR;
if (icon::registerNativeMethods(env) != JNI_OK)
return JNI_ERR;
}
return JNI_VERSION_1_6;