Skip to content

Commit 3e09643

Browse files
committed
Migrate sensor-graph to RegisterNatives.
1 parent 554ee59 commit 3e09643

File tree

3 files changed

+43
-36
lines changed

3 files changed

+43
-36
lines changed

sensor-graph/accelerometer/build.gradle

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,12 @@ android {
1919
path 'src/main/cpp/CMakeLists.txt'
2020
}
2121
}
22+
23+
buildFeatures {
24+
prefab true
25+
}
26+
}
27+
28+
dependencies {
29+
implementation project(":base")
2230
}

sensor-graph/accelerometer/src/main/cpp/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,13 @@ cmake_minimum_required(VERSION 3.22.1)
22
project(SensorGraph LANGUAGES CXX)
33

44
include(AppLibrary)
5+
find_package(base CONFIG REQUIRED)
56

67
add_app_library(accelerometergraph SHARED sensorgraph.cpp)
78

89
target_link_libraries(accelerometergraph
10+
PRIVATE
11+
base::base
912
android
1013
GLESv2
1114
log

sensor-graph/accelerometer/src/main/cpp/sensorgraph.cpp

Lines changed: 32 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ const float SENSOR_FILTER_ALPHA = 0.1f;
4141
* Workaround AsensorManager_getInstance() deprecation false alarm
4242
* for Android-N and before, when compiling with NDK-r15
4343
*/
44+
#include <base/macros.h>
4445
#include <dlfcn.h>
4546
const char* kPackageName = "com.android.accelerometergraph";
4647
ASensorManager* AcquireASensorManagerInstance(void) {
@@ -252,53 +253,48 @@ class sensorgraph {
252253

253254
sensorgraph gSensorGraph;
254255

255-
extern "C" {
256-
JNIEXPORT void JNICALL
257-
Java_com_android_accelerometergraph_AccelerometerGraphJNI_init(
258-
JNIEnv* env, jclass type, jobject assetManager) {
259-
(void)type;
256+
void Init(JNIEnv* env, jclass, jobject assetManager) {
260257
AAssetManager* nativeAssetManager = AAssetManager_fromJava(env, assetManager);
261258
gSensorGraph.init(nativeAssetManager);
262259
}
263260

264-
JNIEXPORT void JNICALL
265-
Java_com_android_accelerometergraph_AccelerometerGraphJNI_surfaceCreated(
266-
JNIEnv* env, jclass type) {
267-
(void)env;
268-
(void)type;
269-
gSensorGraph.surfaceCreated();
270-
}
261+
void SurfaceCreated(JNIEnv*, jclass) { gSensorGraph.surfaceCreated(); }
271262

272-
JNIEXPORT void JNICALL
273-
Java_com_android_accelerometergraph_AccelerometerGraphJNI_surfaceChanged(
274-
JNIEnv* env, jclass type, jint width, jint height) {
275-
(void)env;
276-
(void)type;
263+
void SurfaceChanged(JNIEnv*, jclass, jint width, jint height) {
277264
gSensorGraph.surfaceChanged(width, height);
278265
}
279266

280-
JNIEXPORT void JNICALL
281-
Java_com_android_accelerometergraph_AccelerometerGraphJNI_drawFrame(
282-
JNIEnv* env, jclass type) {
283-
(void)env;
284-
(void)type;
267+
void DrawFrame(JNIEnv*, jclass) {
285268
gSensorGraph.update();
286269
gSensorGraph.render();
287270
}
288271

289-
JNIEXPORT void JNICALL
290-
Java_com_android_accelerometergraph_AccelerometerGraphJNI_pause(JNIEnv* env,
291-
jclass type) {
292-
(void)env;
293-
(void)type;
294-
gSensorGraph.pause();
295-
}
272+
void Pause(JNIEnv*, jclass) { gSensorGraph.pause(); }
296273

297-
JNIEXPORT void JNICALL
298-
Java_com_android_accelerometergraph_AccelerometerGraphJNI_resume(JNIEnv* env,
299-
jclass type) {
300-
(void)env;
301-
(void)type;
302-
gSensorGraph.resume();
303-
}
274+
void Resume(JNIEnv*, jclass) { gSensorGraph.resume(); }
275+
276+
extern "C" JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* _Nonnull vm,
277+
void* _Nullable) {
278+
JNIEnv* env;
279+
if (vm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6) != JNI_OK) {
280+
return JNI_ERR;
281+
}
282+
283+
jclass c =
284+
env->FindClass("com/android/accelerometergraph/AccelerometerGraphJNI");
285+
if (c == nullptr) return JNI_ERR;
286+
287+
static const JNINativeMethod methods[] = {
288+
{"init", "(Landroid/content/res/AssetManager;)V",
289+
reinterpret_cast<void*>(Init)},
290+
{"surfaceCreated", "()V", reinterpret_cast<void*>(SurfaceCreated)},
291+
{"surfaceChanged", "(II)V", reinterpret_cast<void*>(SurfaceChanged)},
292+
{"drawFrame", "()V", reinterpret_cast<void*>(DrawFrame)},
293+
{"pause", "()V", reinterpret_cast<void*>(Pause)},
294+
{"resume", "()V", reinterpret_cast<void*>(Resume)},
295+
};
296+
int rc = env->RegisterNatives(c, methods, arraysize(methods));
297+
if (rc != JNI_OK) return rc;
298+
299+
return JNI_VERSION_1_6;
304300
}

0 commit comments

Comments
 (0)