Skip to content

Commit b642f36

Browse files
committed
Migrate camera/basic to RegisterNatives.
1 parent 759fa23 commit b642f36

File tree

3 files changed

+31
-11
lines changed

3 files changed

+31
-11
lines changed

camera/basic/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ android {
2525
}
2626

2727
dependencies {
28+
implementation project(":base")
2829
implementation libs.appcompat
2930
implementation project(":camera:camera-utils")
3031
}

camera/basic/src/main/cpp/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ project(CameraBasic LANGUAGES C CXX)
1919

2020
include(AppLibrary)
2121
include(AndroidNdkModules)
22+
find_package(base REQUIRED CONFIG)
2223
find_package(camera-utils REQUIRED CONFIG)
2324

2425
android_ndk_import_module_native_app_glue()
@@ -34,6 +35,7 @@ add_app_library(ndk_camera SHARED
3435

3536
target_link_libraries(ndk_camera
3637
PRIVATE
38+
base::base
3739
camera-utils::camera-utils
3840
android
3941
log

camera/basic/src/main/cpp/camera_ui.cpp

Lines changed: 28 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
* limitations under the License.
1616
*/
1717

18+
#include <base/macros.h>
1819
#include <ndksamples/camera/native_debug.h>
1920

2021
#include "camera_engine.h"
@@ -126,30 +127,46 @@ void CameraEngine::OnCameraPermission(jboolean granted) {
126127
* exposure and sensitivity SeekBars
127128
* takePhoto button
128129
*/
129-
extern "C" JNIEXPORT void JNICALL
130-
Java_com_sample_camera_basic_CameraActivity_notifyCameraPermission(
131-
JNIEnv*, jclass, jboolean permission) {
130+
void notifyCameraPermission(JNIEnv*, jclass, jboolean permission) {
132131
std::thread permissionHandler(&CameraEngine::OnCameraPermission,
133132
GetAppEngine(), permission);
134133
permissionHandler.detach();
135134
}
136135

137-
extern "C" JNIEXPORT void JNICALL
138-
Java_com_sample_camera_basic_CameraActivity_TakePhoto(JNIEnv*, jclass) {
136+
void TakePhoto(JNIEnv*, jclass) {
139137
std::thread takePhotoHandler(&CameraEngine::OnTakePhoto, GetAppEngine());
140138
takePhotoHandler.detach();
141139
}
142140

143-
extern "C" JNIEXPORT void JNICALL
144-
Java_com_sample_camera_basic_CameraActivity_OnExposureChanged(
145-
JNIEnv*, jobject, jlong exposurePercent) {
141+
void OnExposureChanged(JNIEnv*, jobject, jlong exposurePercent) {
146142
GetAppEngine()->OnCameraParameterChanged(ACAMERA_SENSOR_EXPOSURE_TIME,
147143
exposurePercent);
148144
}
149145

150-
extern "C" JNIEXPORT void JNICALL
151-
Java_com_sample_camera_basic_CameraActivity_OnSensitivityChanged(
152-
JNIEnv*, jobject, jlong sensitivity) {
146+
void OnSensitivityChanged(JNIEnv*, jobject, jlong sensitivity) {
153147
GetAppEngine()->OnCameraParameterChanged(ACAMERA_SENSOR_SENSITIVITY,
154148
sensitivity);
155149
}
150+
151+
extern "C" JNIEXPORT jint JNI_OnLoad(JavaVM* _Nonnull vm, void* _Nullable) {
152+
JNIEnv* env;
153+
if (vm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6) != JNI_OK) {
154+
return JNI_ERR;
155+
}
156+
157+
jclass c = env->FindClass("com/sample/camera/basic/CameraActivity");
158+
if (c == nullptr) return JNI_ERR;
159+
160+
static const JNINativeMethod methods[] = {
161+
{"notifyCameraPermission", "(Z)V",
162+
reinterpret_cast<void*>(notifyCameraPermission)},
163+
{"TakePhoto", "()V", reinterpret_cast<void*>(TakePhoto)},
164+
{"OnExposureChanged", "(J)V", reinterpret_cast<void*>(OnExposureChanged)},
165+
{"OnSensitivityChanged", "(J)V",
166+
reinterpret_cast<void*>(OnSensitivityChanged)},
167+
};
168+
int rc = env->RegisterNatives(c, methods, arraysize(methods));
169+
if (rc != JNI_OK) return rc;
170+
171+
return JNI_VERSION_1_6;
172+
}

0 commit comments

Comments
 (0)