Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'android/jni/com/mapswithme/maps/LightFramework.cpp')
-rw-r--r--android/jni/com/mapswithme/maps/LightFramework.cpp41
1 files changed, 41 insertions, 0 deletions
diff --git a/android/jni/com/mapswithme/maps/LightFramework.cpp b/android/jni/com/mapswithme/maps/LightFramework.cpp
index 6e97e07f01..aceca8849a 100644
--- a/android/jni/com/mapswithme/maps/LightFramework.cpp
+++ b/android/jni/com/mapswithme/maps/LightFramework.cpp
@@ -1,4 +1,5 @@
#include "map/framework_light.hpp"
+#include "map/local_ads_manager.hpp"
#include "com/mapswithme/core/jni_helper.hpp"
@@ -19,4 +20,44 @@ Java_com_mapswithme_maps_LightFramework_nativeGetNumberUnsentUGC(JNIEnv * env, j
Framework const framework(REQUEST_TYPE_NUMBER_OF_UNSENT_UGC);
return static_cast<jint>(framework.Get<REQUEST_TYPE_NUMBER_OF_UNSENT_UGC>());
}
+
+JNIEXPORT jobjectArray JNICALL
+Java_com_mapswithme_maps_LightFramework_nativeGetLocalAdsFeatures(JNIEnv * env, jclass clazz, jdouble lat, jdouble lon,
+ jdouble radiusInMeters, jint maxCount)
+{
+ Framework framework(REQUEST_TYPE_LOCAL_ADS_FEATURES);
+ auto const features = framework.Get<REQUEST_TYPE_LOCAL_ADS_FEATURES>(lat, lon, radiusInMeters, maxCount);
+
+ static jclass const geoFenceFeatureClazz = jni::GetGlobalClassRef(env,
+ "com/mapswithme/maps/api/GeoFenceFeature");
+ // Java signature : GeoFenceFeature(long mwmVersion, String countryId, int featureIndex,
+ // double latitude, double longitude)
+ static jmethodID const geoFenceFeatureConstructor =
+ jni::GetConstructorID(env, geoFenceFeatureClazz, "(JLjava/lang/String;IDD)V");
+
+ return jni::ToJavaArray(env, geoFenceFeatureClazz, features, [&](JNIEnv * jEnv, CampaignFeature const & data)
+ {
+ jni::TScopedLocalRef const countryId(env, jni::ToJavaString(env, data.m_countryId));
+ return env->NewObject(geoFenceFeatureClazz, geoFenceFeatureConstructor,
+ static_cast<jlong>(data.m_mwmVersion),
+ countryId.get(),
+ static_cast<jint>(data.m_featureIndex),
+ static_cast<jdouble>(data.m_lat),
+ static_cast<jdouble>(data.m_lon));
+ });
+}
+
+JNIEXPORT void JNICALL
+Java_com_mapswithme_maps_LightFramework_nativeLogLocalAdsEvent(JNIEnv * env, jclass clazz, jint type,
+ jdouble lat, jdouble lon, jint accuracyInMeters,
+ jlong mwmVersion, jstring countryId, jint featureIndex)
+{
+ Framework framework(REQUEST_TYPE_LOCAL_ADS_STATISTICS);
+ local_ads::Event event(static_cast<local_ads::EventType>(type), static_cast<long>(mwmVersion),
+ jni::ToNativeString(env, countryId), static_cast<uint32_t>(featureIndex),
+ static_cast<uint8_t>(1) /* zoom level*/, local_ads::Clock::now(),
+ static_cast<double>(lat), static_cast<double>(lon),
+ static_cast<uint16_t>(accuracyInMeters));
+ framework.Get<REQUEST_TYPE_LOCAL_ADS_STATISTICS>()->RegisterEvent(std::move(event));
+}
} // extern "C"