[android] high-level jni bindings for geojson conversion

This commit is contained in:
Ivo van Dongen
2018-03-13 12:31:56 +02:00
committed by Ivo van Dongen
parent f2fbe69b32
commit 2464520da1
23 changed files with 320 additions and 198 deletions

View File

@@ -5,12 +5,14 @@ namespace android {
namespace java {
namespace util {
jni::Class<Arrays> Arrays::javaClass;
jni::Class<List> List::javaClass;
jni::Class<Set> Set::javaClass;
jni::Class<Map> Map::javaClass;
jni::Class<Map::Entry> Map::Entry::javaClass;
void registerNative(jni::JNIEnv& env) {
Arrays::javaClass = *jni::Class<Arrays>::Find(env).NewGlobalRef(env).release();
List::javaClass = *jni::Class<List>::Find(env).NewGlobalRef(env).release();
Set::javaClass = *jni::Class<Set>::Find(env).NewGlobalRef(env).release();
Map::javaClass = *jni::Class<Map>::Find(env).NewGlobalRef(env).release();

View File

@@ -24,6 +24,21 @@ public:
};
class Arrays : private mbgl::util::noncopyable {
public:
static constexpr auto Name() { return "java/util/Arrays"; };
template <class T>
static jni::Object<List> asList(jni::JNIEnv& env, jni::Array<jni::Object<T>> array) {
static auto asList = Arrays::javaClass.GetStaticMethod<jni::Object<List>(jni::Array<jni::Object<>>)>(env, "asList");
return javaClass.Call(env, asList, (jni::Array<jni::Object<>>) array);
}
static jni::Class<Arrays> javaClass;
};
class Set : private mbgl::util::noncopyable {
public: